From f525279f2b52a1a352d3d966721a0c72a22dacb7 Mon Sep 17 00:00:00 2001 From: jan Date: Wed, 6 May 2026 10:43:49 +0200 Subject: [PATCH] Shared Drive Uploads unterstuetzen --- src/lib/google-drive.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/lib/google-drive.ts b/src/lib/google-drive.ts index 0b6e60b..a278385 100644 --- a/src/lib/google-drive.ts +++ b/src/lib/google-drive.ts @@ -224,7 +224,8 @@ export async function uploadExpenseProofToDrive(input: { mimeType: input.mimeType, body: Readable.from(input.buffer) }, - fields: "id, webViewLink" + fields: "id, name, webViewLink, webContentLink", + supportsAllDrives: true }).catch((error: unknown) => { throw mapDriveError(error, "DRIVE_UPLOAD_FAILED", "Google Drive konnte den Rechnungsbeleg nicht hochladen.", [ `Zielordner: ${config.folderId}`, @@ -243,7 +244,8 @@ export async function uploadExpenseProofToDrive(input: { requestBody: { type: "anyone", role: "reader" - } + }, + supportsAllDrives: true }).catch((error: unknown) => { throw mapDriveError(error, "DRIVE_PERMISSION_FAILED", "Google Drive konnte den Freigabe-Link nicht erstellen.", [ `Die Datei wurde vermutlich bereits erstellt. Drive-Datei-ID: ${response.data.id}` @@ -273,7 +275,8 @@ export async function runDriveDiagnostics() { mimeType: "text/plain", body: Readable.from(Buffer.from("RFP Finanzen Drive API Test\n", "utf8")) }, - fields: "id, webViewLink" + fields: "id, name, webViewLink, webContentLink", + supportsAllDrives: true }); createdFileId = response.data.id ?? null; @@ -282,7 +285,7 @@ export async function runDriveDiagnostics() { throw new DriveIntegrationError("Google Drive hat für die Testdatei keine Datei-ID zurückgegeben.", "DRIVE_FILE_ID_MISSING"); } - await drive.files.delete({ fileId: createdFileId }); + await drive.files.delete({ fileId: createdFileId, supportsAllDrives: true }); return { ok: true, @@ -296,7 +299,7 @@ export async function runDriveDiagnostics() { }; } catch (error) { if (createdFileId) { - await drive.files.delete({ fileId: createdFileId }).catch((cleanupError: unknown) => { + await drive.files.delete({ fileId: createdFileId, supportsAllDrives: true }).catch((cleanupError: unknown) => { throw new DriveIntegrationError( "Drive-Test ist fehlgeschlagen und die temporäre Testdatei konnte nicht gelöscht werden.", "DRIVE_DIAGNOSTIC_CLEANUP_FAILED",