From ba56b3699b31a0805c03cb525a733bf41dd6bb53 Mon Sep 17 00:00:00 2001 From: Dhravya Shah Date: Sat, 14 Mar 2026 15:21:03 -0700 Subject: [PATCH] Fix Google Docs/Sheets/Slides source URL generation in document modal (#781) Co-authored-by: Claude --- apps/web/components/document-modal/index.tsx | 26 +++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/apps/web/components/document-modal/index.tsx b/apps/web/components/document-modal/index.tsx index 6a25e194..cbe03c56 100644 --- a/apps/web/components/document-modal/index.tsx +++ b/apps/web/components/document-modal/index.tsx @@ -27,6 +27,30 @@ import { useIsMobile } from "@hooks/use-mobile" type DocumentsResponse = z.infer type DocumentWithMemories = DocumentsResponse["documents"][0] +function getDocumentSourceUrl(document: DocumentWithMemories): string { + const url = document.url ?? "" + const googleDocTypes: Record = { + google_doc: "https://docs.google.com/document/d/", + google_sheet: "https://docs.google.com/spreadsheets/d/", + google_slide: "https://docs.google.com/presentation/d/", + } + + const prefix = document.type ? googleDocTypes[document.type] : null + if (!prefix) return url + + if (document.customId) { + return `${prefix}${document.customId}/edit` + } + + // Extract ID from API URL like docs.googleapis.com/v1/documents/{id} + const apiMatch = url.match(/docs\.googleapis\.com\/v1\/documents\/([a-zA-Z0-9_-]+)/) + if (apiMatch?.[1]) { + return `${prefix}${apiMatch[1]}/edit` + } + + return url +} + interface DocumentModalProps { document: DocumentWithMemories | null isOpen: boolean @@ -237,7 +261,7 @@ export function DocumentModal({ /> {_document?.url && (