소스 검색

feat: Add comprehensive logging to Google Drive picker integration

Taylor Wilsdon (aider) 4 달 전
부모
커밋
4adcd2b64a
2개의 변경된 파일22개의 추가작업 그리고 2개의 파일을 삭제
  1. 5 0
      src/lib/components/chat/MessageInput.svelte
  2. 17 2
      src/lib/utils/google-drive-picker.ts

+ 5 - 0
src/lib/components/chat/MessageInput.svelte

@@ -522,12 +522,17 @@
 										}}
 										}}
 										uploadGoogleDriveHandler={async () => {
 										uploadGoogleDriveHandler={async () => {
 											try {
 											try {
+												console.log('Starting Google Drive file selection...');
 												const fileData = await createPicker();
 												const fileData = await createPicker();
+												console.log('Picker returned file data:', fileData);
 												if (fileData) {
 												if (fileData) {
+													console.log('Dispatching upload event with file data');
 													dispatch('upload', { 
 													dispatch('upload', { 
 														type: 'google-drive', 
 														type: 'google-drive', 
 														data: fileData // fileData now includes token
 														data: fileData // fileData now includes token
 													});
 													});
+												} else {
+													console.log('No file was selected');
 												}
 												}
 											} catch (error) {
 											} catch (error) {
 												console.error('Google Drive Error:', error);
 												console.error('Google Drive Error:', error);

+ 17 - 2
src/lib/utils/google-drive-picker.ts

@@ -88,11 +88,15 @@ const initialize = async () => {
 export const createPicker = () => {
 export const createPicker = () => {
     return new Promise(async (resolve, reject) => {
     return new Promise(async (resolve, reject) => {
         try {
         try {
+            console.log('Initializing Google Drive Picker...');
             await initialize();
             await initialize();
+            console.log('Getting auth token...');
             const token = await getAuthToken();
             const token = await getAuthToken();
             if (!token) {
             if (!token) {
+                console.error('Failed to get OAuth token');
                 throw new Error('Unable to get OAuth token');
                 throw new Error('Unable to get OAuth token');
             }
             }
+            console.log('Auth token obtained successfully');
 
 
             const picker = new google.picker.PickerBuilder()
             const picker = new google.picker.PickerBuilder()
                 .addView(google.picker.ViewId.DOCS)
                 .addView(google.picker.ViewId.DOCS)
@@ -101,21 +105,31 @@ export const createPicker = () => {
                 .setDeveloperKey(API_KEY)
                 .setDeveloperKey(API_KEY)
                 .setAppId(CLIENT_ID.split('-')[0]) // Extract app ID from client ID
                 .setAppId(CLIENT_ID.split('-')[0]) // Extract app ID from client ID
                 .setCallback((data: any) => {
                 .setCallback((data: any) => {
+                    console.log('Picker callback received:', data);
                     if (data[google.picker.Response.ACTION] === google.picker.Action.PICKED) {
                     if (data[google.picker.Response.ACTION] === google.picker.Action.PICKED) {
+                        console.log('File picked from Google Drive');
                         const doc = data[google.picker.Response.DOCUMENTS][0];
                         const doc = data[google.picker.Response.DOCUMENTS][0];
                         const fileId = doc[google.picker.Document.ID];
                         const fileId = doc[google.picker.Document.ID];
                         const fileName = doc[google.picker.Document.NAME];
                         const fileName = doc[google.picker.Document.NAME];
                         const fileUrl = doc[google.picker.Document.URL];
                         const fileUrl = doc[google.picker.Document.URL];
                         
                         
+                        console.log('Selected file details:', {
+                            id: fileId,
+                            name: fileName,
+                            url: fileUrl
+                        });
+                        
                         // Get the downloadUrl using the alt=media parameter
                         // Get the downloadUrl using the alt=media parameter
                         // Construct download URL with access token
                         // Construct download URL with access token
                         const downloadUrl = `https://www.googleapis.com/drive/v3/files/${fileId}?alt=media&access_token=${oauthToken}`;
                         const downloadUrl = `https://www.googleapis.com/drive/v3/files/${fileId}?alt=media&access_token=${oauthToken}`;
-                        resolve({
+                        const result = {
                             id: fileId,
                             id: fileId,
                             name: fileName,
                             name: fileName,
                             url: downloadUrl,
                             url: downloadUrl,
                             token: oauthToken // Include token for future use
                             token: oauthToken // Include token for future use
-                        });
+                        };
+                        console.log('Resolving picker with:', result);
+                        resolve(result);
                     } else if (data[google.picker.Response.ACTION] === google.picker.Action.CANCEL) {
                     } else if (data[google.picker.Response.ACTION] === google.picker.Action.CANCEL) {
                         resolve(null);
                         resolve(null);
                     }
                     }
@@ -123,6 +137,7 @@ export const createPicker = () => {
                 .build();
                 .build();
             picker.setVisible(true);
             picker.setVisible(true);
         } catch (error) {
         } catch (error) {
+            console.error('Google Drive Picker error:', error);
             reject(error);
             reject(error);
         }
         }
     });
     });