summaryrefslogtreecommitdiff
path: root/llama.cpp/tools/server/webui/src/lib/utils/file-preview.ts
diff options
context:
space:
mode:
Diffstat (limited to 'llama.cpp/tools/server/webui/src/lib/utils/file-preview.ts')
-rw-r--r--llama.cpp/tools/server/webui/src/lib/utils/file-preview.ts36
1 files changed, 36 insertions, 0 deletions
diff --git a/llama.cpp/tools/server/webui/src/lib/utils/file-preview.ts b/llama.cpp/tools/server/webui/src/lib/utils/file-preview.ts
new file mode 100644
index 0000000..26a6053
--- /dev/null
+++ b/llama.cpp/tools/server/webui/src/lib/utils/file-preview.ts
@@ -0,0 +1,36 @@
+/**
+ * Gets a display label for a file type from various input formats
+ *
+ * Handles:
+ * - MIME types: 'application/pdf' → 'PDF'
+ * - AttachmentType values: 'PDF', 'AUDIO' → 'PDF', 'AUDIO'
+ * - File names: 'document.pdf' → 'PDF'
+ * - Unknown: returns 'FILE'
+ *
+ * @param input - MIME type, AttachmentType value, or file name
+ * @returns Formatted file type label (uppercase)
+ */
+export function getFileTypeLabel(input: string | undefined): string {
+ if (!input) return 'FILE';
+
+ // Handle MIME types (contains '/')
+ if (input.includes('/')) {
+ const subtype = input.split('/').pop();
+ if (subtype) {
+ // Handle special cases like 'vnd.ms-excel' → 'EXCEL'
+ if (subtype.includes('.')) {
+ return subtype.split('.').pop()?.toUpperCase() || 'FILE';
+ }
+ return subtype.toUpperCase();
+ }
+ }
+
+ // Handle file names (contains '.')
+ if (input.includes('.')) {
+ const ext = input.split('.').pop();
+ if (ext) return ext.toUpperCase();
+ }
+
+ // Handle AttachmentType or other plain strings
+ return input.toUpperCase();
+}