import type { SanityClient } from "@sanity/client"; import { defineFetcher } from "@sanity/sdk/_internal"; import { map, switchMap } from "rxjs"; import { type Canvas, type OrganizationId, parseCanvas } from "../../core"; import { getClientState } from "./client"; export const canvas = defineFetcher< [options: { organizationId: OrganizationId }], Canvas | undefined >({ name: "canvas", getKey: (_instance, { organizationId }) => organizationId, fetch: (instance) => ({ organizationId }) => getClientState(instance, { apiVersion: "vX", scope: "global", }).observable.pipe( switchMap((client: SanityClient) => client.observable .request<{ data: unknown[] }>({ uri: "/canvases", query: { organizationId }, }) .pipe(map((res) => res.data.map(parseCanvas).at(0))), ), ), });