Spaces:
Running
Running
fix(tools): add support for octet-stream downloads
Browse fileswhen 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"
|
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"
|