shared/graphql/extraTypes.ts (30 lines of code) (raw):

import type { Group, PinboardIdWithClaimCounts, User, WorkflowStub, } from "./graphql"; export type PinboardData = WorkflowStub; export type PinboardDataWithClaimCounts = Omit<PinboardData, "__typename"> & Omit<PinboardIdWithClaimCounts, "__typename">; export type PreselectedPinboard = | PinboardData | "loading" | "notTrackedInWorkflow" | "unknown" | undefined; export const isPinboardData = ( maybePinboardData: PreselectedPinboard ): maybePinboardData is PinboardData => !!maybePinboardData && maybePinboardData !== "loading" && maybePinboardData !== "notTrackedInWorkflow" && maybePinboardData !== "unknown"; export const isPinboardDataWithClaimCounts = ( pinboardData: PinboardData | PinboardDataWithClaimCounts ): pinboardData is PinboardDataWithClaimCounts => "unclaimedCount" in pinboardData; export const isGroup = (userOrGroup: User | Group): userOrGroup is Group => "shorthand" in userOrGroup; export const isUser = (userOrGroup: User | Group): userOrGroup is User => !isGroup(userOrGroup);