From aaacd2813131e95ce4a28a3cb8129af5b274d98f Mon Sep 17 00:00:00 2001 From: "Taylor Wilsdon (aider)" Date: Sun, 15 Dec 2024 18:45:40 -0500 Subject: [PATCH] fix: Resolve Google Drive picker API loading and token handling --- src/lib/components/chat/MessageInput.svelte | 8 +------- src/lib/utils/google-drive-picker.ts | 22 +++++++++++++-------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 37600f5bb..a7a8343a4 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -501,15 +501,9 @@ try { const fileData = await createPicker(); if (fileData) { - // Pass the OAuth token along with the file data dispatch('upload', { type: 'google-drive', - data: { - name: fileData.name, - url: fileData.url, - id: fileData.id, - token: await getAuthToken() // Include OAuth token for download - } + data: fileData // fileData now includes token }); } } catch (error) { diff --git a/src/lib/utils/google-drive-picker.ts b/src/lib/utils/google-drive-picker.ts index 440d2e2cf..b76daaec0 100644 --- a/src/lib/utils/google-drive-picker.ts +++ b/src/lib/utils/google-drive-picker.ts @@ -23,20 +23,24 @@ export const loadGoogleDriveApi = () => { const script = document.createElement('script'); script.src = 'https://apis.google.com/js/api.js'; script.onload = () => { - gapi.load('picker', { + gapi.load('client:picker', { callback: () => { - pickerApiLoaded = true; - resolve(true); + gapi.client.load('picker', 'v1').then(() => { + pickerApiLoaded = true; + resolve(true); + }); } }); }; script.onerror = reject; document.body.appendChild(script); } else { - gapi.load('picker', { + gapi.load('client:picker', { callback: () => { - pickerApiLoaded = true; - resolve(true); + gapi.client.load('picker', 'v1').then(() => { + pickerApiLoaded = true; + resolve(true); + }); } }); } @@ -112,11 +116,13 @@ export const createPicker = () => { const fileUrl = doc[google.picker.Document.URL]; // Get the downloadUrl using the alt=media parameter - const downloadUrl = `https://www.googleapis.com/drive/v3/files/${fileId}?alt=media`; + // Construct download URL with access token + const downloadUrl = `https://www.googleapis.com/drive/v3/files/${fileId}?alt=media&access_token=${oauthToken}`; resolve({ id: fileId, name: fileName, - url: downloadUrl + url: downloadUrl, + token: oauthToken // Include token for future use }); } else if (data[google.picker.Response.ACTION] === google.picker.Action.CANCEL) { resolve(null);