nsarrazin HF Staff commited on
Commit
d54ccf7
·
1 Parent(s): 3842198

fix(tools): add support for octet-stream downloads

Browse files

when the mime type is missing just let the user download the file

src/lib/components/chat/UploadedFile.svelte CHANGED
@@ -4,6 +4,7 @@
4
  import type { MessageFile } from "$lib/types/Message";
5
  import CarbonClose from "~icons/carbon/close";
6
  import CarbonDocumentBlank from "~icons/carbon/document-blank";
 
7
 
8
  import Modal from "../Modal.svelte";
9
  import AudioPlayer from "../players/AudioPlayer.svelte";
@@ -35,7 +36,7 @@
35
  const isAudio = (mime: string) =>
36
  mime.startsWith("audio/") || mime === "mp3" || mime === "wav" || mime === "x-wav";
37
  const isVideo = (mime: string) =>
38
- mime.startsWith("video/") || mime === "mp4" || mime === "x-mpeg" || mime === "octet-stream";
39
 
40
  $: isClickable = isImage(file.mime) && !isPreview;
41
  </script>
@@ -91,6 +92,31 @@
91
  controls
92
  />
93
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  {:else}
95
  <div
96
  class="flex h-14 w-72 items-center gap-2 overflow-hidden rounded-xl border border-gray-200 bg-white p-2 dark:border-gray-800 dark:bg-gray-900"
 
4
  import type { MessageFile } from "$lib/types/Message";
5
  import CarbonClose from "~icons/carbon/close";
6
  import CarbonDocumentBlank from "~icons/carbon/document-blank";
7
+ import CarbonDownload from "~icons/carbon/download";
8
 
9
  import Modal from "../Modal.svelte";
10
  import AudioPlayer from "../players/AudioPlayer.svelte";
 
36
  const isAudio = (mime: string) =>
37
  mime.startsWith("audio/") || mime === "mp3" || mime === "wav" || mime === "x-wav";
38
  const isVideo = (mime: string) =>
39
+ mime.startsWith("video/") || mime === "mp4" || mime === "x-mpeg";
40
 
41
  $: isClickable = isImage(file.mime) && !isPreview;
42
  </script>
 
92
  controls
93
  />
94
  </div>
95
+ {:else if file.mime === "octet-stream"}
96
+ <div
97
+ class="flex h-14 w-72 items-center gap-2 overflow-hidden rounded-xl border border-gray-200 bg-white p-2 dark:border-gray-800 dark:bg-gray-900"
98
+ >
99
+ <div
100
+ class="grid size-10 flex-none place-items-center rounded-lg bg-gray-100 dark:bg-gray-800"
101
+ >
102
+ <CarbonDocumentBlank class="text-base text-gray-700 dark:text-gray-300" />
103
+ </div>
104
+ <dl class="flex flex-grow flex-col truncate leading-tight">
105
+ <dd class="text-sm">
106
+ {truncateMiddle(file.name, 28)}
107
+ </dd>
108
+ <dt class="text-xs text-gray-400">File type could not be determined</dt>
109
+ </dl>
110
+ <a
111
+ href={file.type === "base64"
112
+ ? `data:application/octet-stream;base64,${file.value}`
113
+ : urlNotTrailing + "/output/" + file.value}
114
+ download={file.name}
115
+ class="ml-auto flex-none"
116
+ >
117
+ <CarbonDownload class="text-base text-gray-700 dark:text-gray-300" />
118
+ </a>
119
+ </div>
120
  {:else}
121
  <div
122
  class="flex h-14 w-72 items-center gap-2 overflow-hidden rounded-xl border border-gray-200 bg-white p-2 dark:border-gray-800 dark:bg-gray-900"