From fc425256009747fa578746b659a5a5203648d118 Mon Sep 17 00:00:00 2001 From: Tanner Date: Mon, 24 Jun 2024 09:03:08 -0500 Subject: [PATCH] Hotfix for uploading avatar images for new users --- .../GeneralConfigSection.vue | 21 ++++++++--- src/components/dialogs/StoredFilesDialog.vue | 35 +++++++++++-------- 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/src/components/configuration-sections/GeneralConfigSection.vue b/src/components/configuration-sections/GeneralConfigSection.vue index bdd9b6c5..ec2275ee 100644 --- a/src/components/configuration-sections/GeneralConfigSection.vue +++ b/src/components/configuration-sections/GeneralConfigSection.vue @@ -104,15 +104,28 @@ const isSavedPromptsOpen = ref(true); const fetchStoredFiles = async () => { try { - const request = indexedDB.open('UserFilesDB', 5); + const dbName = 'UserFilesDB'; + const dbVersion = 5; + const storeName = 'userFiles'; const db = await new Promise((resolve, reject) => { + const request = indexedDB.open(dbName, dbVersion); + + request.onerror = (event) => reject(`IndexedDB error: ${event.target.error}`); + request.onsuccess = (event) => resolve(event.target.result); - request.onerror = reject; + + request.onupgradeneeded = (event) => { + const db = event.target.result; + if (!db.objectStoreNames.contains(storeName)) { + db.createObjectStore(storeName, { keyPath: 'fileName' }); + console.log(`Created new object store: ${storeName}`); + } + }; }); - const transaction = db.transaction(['userFiles'], 'readonly'); - const store = transaction.objectStore('userFiles'); + const transaction = db.transaction([storeName], 'readonly'); + const store = transaction.objectStore(storeName); const getAllRequest = store.getAll(); const result = await new Promise((resolve, reject) => { diff --git a/src/components/dialogs/StoredFilesDialog.vue b/src/components/dialogs/StoredFilesDialog.vue index a8a20567..719c77c0 100644 --- a/src/components/dialogs/StoredFilesDialog.vue +++ b/src/components/dialogs/StoredFilesDialog.vue @@ -93,23 +93,28 @@ const closeStoredFiles = () => { const fetchStoredFiles = async () => { try { - const request = indexedDB.open('UserFilesDB', 5); + const dbName = 'UserFilesDB'; + const dbVersion = 5; + const storeName = 'userFiles'; - request.onupgradeneeded = (event) => { - const db = event.target.result; - if (!db.objectStoreNames.contains('userFiles')) { - db.createObjectStore('userFiles', { keyPath: 'id', autoIncrement: true }); - } - }; + const db = await new Promise((resolve, reject) => { + const request = indexedDB.open(dbName, dbVersion); + + request.onerror = (event) => reject(`IndexedDB error: ${event.target.error}`); + + request.onsuccess = (event) => resolve(event.target.result); - const event = await new Promise((resolve, reject) => { - request.onsuccess = resolve; - request.onerror = reject; + request.onupgradeneeded = (event) => { + const db = event.target.result; + if (!db.objectStoreNames.contains(storeName)) { + db.createObjectStore(storeName, { keyPath: 'fileName' }); + console.log(`Created new object store: ${storeName}`); + } + }; }); - const db = event.target.result; - const transaction = db.transaction(['userFiles'], 'readonly'); - const store = transaction.objectStore('userFiles'); + const transaction = db.transaction([storeName], 'readonly'); + const store = transaction.objectStore(storeName); const getAllRequest = store.getAll(); const result = await new Promise((resolve, reject) => { @@ -117,12 +122,14 @@ const fetchStoredFiles = async () => { getAllRequest.onerror = reject; }); - return result; + return result.filter(file => file.fileType && file.fileType.startsWith('image/')); } catch (error) { console.error(`Error Fetching Stored Files: ${error}`); + return []; } }; + const addStoredFileToContext = (file) => { let messageContent; if (file.fileType.startsWith('image/')) {