From ba19ff8ace20e5ab4fa4300a14d88a46b9d30417 Mon Sep 17 00:00:00 2001 From: "Taylor Wilsdon (aider)" Date: Sun, 15 Dec 2024 18:31:58 -0500 Subject: [PATCH] fix: Improve Google OAuth token retrieval with proper Promise handling --- src/lib/utils/google-drive-picker.ts | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/lib/utils/google-drive-picker.ts b/src/lib/utils/google-drive-picker.ts index c96771cb8..e40b59ff3 100644 --- a/src/lib/utils/google-drive-picker.ts +++ b/src/lib/utils/google-drive-picker.ts @@ -59,16 +59,24 @@ export const loadGoogleAuthApi = () => { export const getAuthToken = async () => { if (!oauthToken) { - const tokenClient = google.accounts.oauth2.initTokenClient({ - client_id: CLIENT_ID, - scope: SCOPE.join(' '), - callback: (response: any) => { - if (response.access_token) { - oauthToken = response.access_token; + return new Promise((resolve, reject) => { + const tokenClient = google.accounts.oauth2.initTokenClient({ + client_id: CLIENT_ID, + scope: SCOPE.join(' '), + callback: (response: any) => { + if (response.access_token) { + oauthToken = response.access_token; + resolve(oauthToken); + } else { + reject(new Error('Failed to get access token')); + } + }, + error_callback: (error: any) => { + reject(new Error(error.message || 'OAuth error occurred')); } - }, + }); + tokenClient.requestAccessToken(); }); - await tokenClient.requestAccessToken(); } return oauthToken; };