{"record":{"id":"adbcff1904184902","repo":"hcengineering/platform","slug":"folder-not-found-id-ref","errorCode":null,"errorMessage":"Folder not found, _id: ${ref}","messagePattern":"Folder not found, _id: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"plugins/drive-resources/src/index.ts","lineNumber":259,"sourceCode":"  const results = await Promise.all(\n    doc.map(async (p) => {\n      return permissions.restrictedSpaces.has(p.space)\n        ? canRemoveDoc(drive.class.Folder, p.space, permissions)\n        : await canDeleteObject(doc)\n    })\n  )\n  return results.every(Boolean)\n}\n\nexport async function FileTitleProvider (client: Client, ref: Ref<File>, doc?: File): Promise<string> {\n  const object = doc ?? (await client.findOne(drive.class.File, { _id: ref }))\n  if (object === undefined) throw new Error(`File not found, _id: ${ref}`)\n  return object.title\n}\n\nexport async function FolderTitleProvider (client: Client, ref: Ref<Folder>, doc?: Folder): Promise<string> {\n  const object = doc ?? (await client.findOne(drive.class.Folder, { _id: ref }))\n  if (object === undefined) throw new Error(`Folder not found, _id: ${ref}`)\n  return object.title\n}\n\nexport default async (): Promise<Resources> => ({\n  component: {\n    CreateDrive,\n    DrivePanel,\n    DriveSpaceHeader,\n    DriveSpacePresenter,\n    DrivePresenter,\n    EditFile,\n    EditFolder,\n    FilePanel,\n    FilePresenter,\n    FileSizePresenter,\n    FileVersionPresenter,\n    FileVersionVersionPresenter,\n    FolderPanel,","sourceCodeStart":241,"sourceCodeEnd":277,"githubUrl":"https://github.com/hcengineering/platform/blob/63e28dc96483967b2fc21c881b3f1023c1de7718/plugins/drive-resources/src/index.ts#L241-L277","documentation":"FolderTitleProvider mirrors FileTitleProvider for folders: it looks up drive.class.Folder by _id and throws if the folder cannot be found. Title resolution must always succeed for valid references, so missing folders are surfaced as errors.","triggerScenarios":"Rendering a title for a Folder ref that was deleted or never existed; stale references in notifications/activity; passing a file id to the folder provider.","commonSituations":"Folder removed by another user before a referencing view loads; import/export tooling carrying stale ids; cascade deletes not cleaning up references.","solutions":["Verify the folder exists before resolving its title","Catch and substitute a placeholder title for deleted folders","Clean up dangling folder references on delete","Confirm the correct id and provider pairing (folder vs file)"],"exampleFix":"// before\nconst title = await FolderTitleProvider(client, ref)\n// after\nconst folder = await client.findOne(drive.class.Folder, { _id: ref })\nconst title = folder ? folder.title : '(deleted folder)'","handlingStrategy":"fallback","validationCode":"const folder = doc ?? await client.findOne(drive.class.Folder, { _id: ref })\nif (folder === undefined) return '(deleted folder)'","typeGuard":"async function folderExists(client: Client, ref: Ref<Folder>): Promise<boolean> {\n  return (await client.findOne(drive.class.Folder, { _id: ref })) !== undefined\n}","tryCatchPattern":"try {\n  return await FolderTitleProvider(client, ref, doc)\n} catch (err) {\n  if (err.message.startsWith('Folder not found')) {\n    return '(deleted folder)'\n  }\n  throw err\n}","preventionTips":["Pass the loaded doc when available instead of re-querying","Cascade or clean references when deleting folders","Prefer soft-delete for folders referenced elsewhere","Use the Folder provider only with folder refs"],"tags":["drive","missing-document","title-provider"],"backgroundTag":"document-not-found","analyzedSha":"63e28dc96483967b2fc21c881b3f1023c1de7718","analyzedAt":"2026-08-29T15:21:27.377Z","schemaVersion":2},"datasetVersion":"2026-08-29T17:17:51.833Z"}