import type { DavPatAuth } from "@/worker/auth/basic"; import { hasDavScope } from "@/worker/auth/scopes"; import type { DiscoveryResource } from "@/worker/dav/discovery/resources"; export const ADDRESSBOOK_HOME_RESOURCE: DiscoveryResource = { kind: "addressbook-home", protocol: "carddav", href: "/addressbooks/", displayName: "Address Books", }; export const ADDRESSBOOK_DEFAULT_RESOURCE: DiscoveryResource = { kind: "addressbook-default", protocol: "carddav", href: "/addressbooks/default/", displayName: "Default", }; export function isAddressbookDiscoveryPath(pathname: string): boolean { return pathname === "/addressbooks" || pathname.startsWith("/addressbooks/"); } export function addressbookResourceForPath(pathname: string): DiscoveryResource | null { if (pathname === "/addressbooks" || pathname === "/addressbooks/") return ADDRESSBOOK_HOME_RESOURCE; if (pathname === "/addressbooks/default" || pathname === "/addressbooks/default/") { return ADDRESSBOOK_DEFAULT_RESOURCE; } return null; } export function addressbookChildResources(auth: DavPatAuth): DiscoveryResource[] { return hasDavScope(auth.scopes, "dav:carddav:read") ? [ADDRESSBOOK_DEFAULT_RESOURCE] : []; }