import type { Labrinth } from '@modrinth/api-client/src/modules/types' import type { Ref } from 'vue' import { createContext } from '.' export interface ProjectPageContext { // Data refs projectV2: Ref projectV3: Ref currentMember: Ref allMembers: Ref organization: Ref // Lazy version loading (client-side only) versions: Ref versionsLoading: Ref // Lazy dependencies loading (client-side only) dependencies: Ref dependenciesLoading: Ref // Invalidate all project queries (auto-refetches active ones) invalidate: () => Promise // Lazy loading loadVersions: () => void loadDependencies: () => void // Mutation functions patchProject: (data: Record, quiet?: boolean) => Promise patchProjectV3: (data: Record, quiet?: boolean) => Promise patchIcon: (icon: File) => Promise setProcessing: () => Promise createGalleryItem: ( file: File, title?: string, description?: string, featured?: boolean, ordering?: number, ) => Promise editGalleryItem: ( imageUrl: string, title?: string, description?: string, featured?: boolean, ordering?: number, ) => Promise deleteGalleryItem: (imageUrl: string) => Promise } export const [injectProjectPageContext, provideProjectPageContext] = createContext('root', 'projectPageContext')