/** * Generated by orval v8.5.3 🍺 * Do not edit manually. * Api * TeaBoy OS API specification * OpenAPI spec version: 0.1.0 */ import { useMutation, useQuery } from "@tanstack/react-query"; import type { MutationFunction, QueryFunction, QueryKey, UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult, } from "@tanstack/react-query"; import type { AddParticipantsBody, AdminAppOpensByApp, AdminAppOpensByUser, AdminResetLinkResponse, AdminStats, App, AppSettings, AuthUser, ConversationWithDetails, CreateAppBody, CreateConversationBody, CreateServiceBody, CreateServiceOrderBody, ErrorResponse, ForgotPasswordBody, ForgotPasswordResponse, GetAdminAppOpensByAppParams, GetAdminAppOpensByUserParams, GetAdminStatsParams, HealthStatus, HomeStats, LeaveConversationBody, LoginBody, MessageWithSender, Notification, RegisterBody, RequestUploadUrlBody, RequestUploadUrlResponse, ResetPasswordBody, SendMessageBody, Service, ServiceCategory, ServiceOrder, SuccessResponse, UpdateAppBody, UpdateAppSettingsBody, UpdateClockHour12Body, UpdateClockStyleBody, UpdateConversationBody, UpdateConversationStateBody, UpdateLanguageBody, UpdateMyAppOrderBody, UpdateServiceBody, UpdateServiceOrderStatusBody, UpdateUserBody, UserProfile, VerifyResetTokenBody, VerifyResetTokenResponse, } from "./api.schemas"; import { customFetch } from "../custom-fetch"; import type { ErrorType, BodyType } from "../custom-fetch"; type AwaitedInput = PromiseLike | T; type Awaited = O extends AwaitedInput ? T : never; type SecondParameter unknown> = Parameters[1]; /** * @summary Health check */ export const getHealthCheckUrl = () => { return `/api/healthz`; }; export const healthCheck = async ( options?: RequestInit, ): Promise => { return customFetch(getHealthCheckUrl(), { ...options, method: "GET", }); }; export const getHealthCheckQueryKey = () => { return [`/api/healthz`] as const; }; export const getHealthCheckQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getHealthCheckQueryKey(); const queryFn: QueryFunction>> = ({ signal, }) => healthCheck({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type HealthCheckQueryResult = NonNullable< Awaited> >; export type HealthCheckQueryError = ErrorType; /** * @summary Health check */ export function useHealthCheck< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getHealthCheckQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Register a new user */ export const getRegisterUrl = () => { return `/api/auth/register`; }; export const register = async ( registerBody: RegisterBody, options?: RequestInit, ): Promise => { return customFetch(getRegisterUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(registerBody), }); }; export const getRegisterMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["register"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return register(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type RegisterMutationResult = NonNullable< Awaited> >; export type RegisterMutationBody = BodyType; export type RegisterMutationError = ErrorType; /** * @summary Register a new user */ export const useRegister = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getRegisterMutationOptions(options)); }; /** * @summary Login */ export const getLoginUrl = () => { return `/api/auth/login`; }; export const login = async ( loginBody: LoginBody, options?: RequestInit, ): Promise => { return customFetch(getLoginUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(loginBody), }); }; export const getLoginMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["login"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return login(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type LoginMutationResult = NonNullable< Awaited> >; export type LoginMutationBody = BodyType; export type LoginMutationError = ErrorType; /** * @summary Login */ export const useLogin = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getLoginMutationOptions(options)); }; /** * @summary Logout */ export const getLogoutUrl = () => { return `/api/auth/logout`; }; export const logout = async ( options?: RequestInit, ): Promise => { return customFetch(getLogoutUrl(), { ...options, method: "POST", }); }; export const getLogoutMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, void, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, void, TContext > => { const mutationKey = ["logout"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, void > = () => { return logout(requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type LogoutMutationResult = NonNullable< Awaited> >; export type LogoutMutationError = ErrorType; /** * @summary Logout */ export const useLogout = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, void, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, void, TContext > => { return useMutation(getLogoutMutationOptions(options)); }; /** * @summary Request a password reset link */ export const getForgotPasswordUrl = () => { return `/api/auth/forgot-password`; }; export const forgotPassword = async ( forgotPasswordBody: ForgotPasswordBody, options?: RequestInit, ): Promise => { return customFetch(getForgotPasswordUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(forgotPasswordBody), }); }; export const getForgotPasswordMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["forgotPassword"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return forgotPassword(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type ForgotPasswordMutationResult = NonNullable< Awaited> >; export type ForgotPasswordMutationBody = BodyType; export type ForgotPasswordMutationError = ErrorType; /** * @summary Request a password reset link */ export const useForgotPassword = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getForgotPasswordMutationOptions(options)); }; /** * @summary Set a new password using a reset token */ export const getResetPasswordUrl = () => { return `/api/auth/reset-password`; }; export const resetPassword = async ( resetPasswordBody: ResetPasswordBody, options?: RequestInit, ): Promise => { return customFetch(getResetPasswordUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(resetPasswordBody), }); }; export const getResetPasswordMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["resetPassword"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return resetPassword(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type ResetPasswordMutationResult = NonNullable< Awaited> >; export type ResetPasswordMutationBody = BodyType; export type ResetPasswordMutationError = ErrorType; /** * @summary Set a new password using a reset token */ export const useResetPassword = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getResetPasswordMutationOptions(options)); }; /** * @summary Check whether a reset token is valid */ export const getVerifyResetTokenUrl = () => { return `/api/auth/reset-password/verify`; }; export const verifyResetToken = async ( verifyResetTokenBody: VerifyResetTokenBody, options?: RequestInit, ): Promise => { return customFetch(getVerifyResetTokenUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(verifyResetTokenBody), }); }; export const getVerifyResetTokenMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["verifyResetToken"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return verifyResetToken(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type VerifyResetTokenMutationResult = NonNullable< Awaited> >; export type VerifyResetTokenMutationBody = BodyType; export type VerifyResetTokenMutationError = ErrorType; /** * @summary Check whether a reset token is valid */ export const useVerifyResetToken = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getVerifyResetTokenMutationOptions(options)); }; /** * @summary Admin generates a one-time password reset link for a user */ export const getAdminIssueResetLinkUrl = (id: number) => { return `/api/auth/admin/users/${id}/issue-reset-link`; }; export const adminIssueResetLink = async ( id: number, options?: RequestInit, ): Promise => { return customFetch(getAdminIssueResetLinkUrl(id), { ...options, method: "POST", }); }; export const getAdminIssueResetLinkMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number }, TContext > => { const mutationKey = ["adminIssueResetLink"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number } > = (props) => { const { id } = props ?? {}; return adminIssueResetLink(id, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type AdminIssueResetLinkMutationResult = NonNullable< Awaited> >; export type AdminIssueResetLinkMutationError = ErrorType; /** * @summary Admin generates a one-time password reset link for a user */ export const useAdminIssueResetLink = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number }, TContext > => { return useMutation(getAdminIssueResetLinkMutationOptions(options)); }; /** * @summary Get current user */ export const getGetMeUrl = () => { return `/api/auth/me`; }; export const getMe = async (options?: RequestInit): Promise => { return customFetch(getGetMeUrl(), { ...options, method: "GET", }); }; export const getGetMeQueryKey = () => { return [`/api/auth/me`] as const; }; export const getGetMeQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions>, TError, TData>; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetMeQueryKey(); const queryFn: QueryFunction>> = ({ signal, }) => getMe({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type GetMeQueryResult = NonNullable>>; export type GetMeQueryError = ErrorType; /** * @summary Get current user */ export function useGetMe< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions>, TError, TData>; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetMeQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Update preferred language */ export const getUpdateLanguageUrl = () => { return `/api/auth/me/language`; }; export const updateLanguage = async ( updateLanguageBody: UpdateLanguageBody, options?: RequestInit, ): Promise => { return customFetch(getUpdateLanguageUrl(), { ...options, method: "PATCH", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(updateLanguageBody), }); }; export const getUpdateLanguageMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["updateLanguage"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return updateLanguage(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type UpdateLanguageMutationResult = NonNullable< Awaited> >; export type UpdateLanguageMutationBody = BodyType; export type UpdateLanguageMutationError = ErrorType; /** * @summary Update preferred language */ export const useUpdateLanguage = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getUpdateLanguageMutationOptions(options)); }; /** * @summary Update preferred home-screen clock style */ export const getUpdateClockStyleUrl = () => { return `/api/auth/me/clock-style`; }; export const updateClockStyle = async ( updateClockStyleBody: UpdateClockStyleBody, options?: RequestInit, ): Promise => { return customFetch(getUpdateClockStyleUrl(), { ...options, method: "PATCH", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(updateClockStyleBody), }); }; export const getUpdateClockStyleMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["updateClockStyle"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return updateClockStyle(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type UpdateClockStyleMutationResult = NonNullable< Awaited> >; export type UpdateClockStyleMutationBody = BodyType; export type UpdateClockStyleMutationError = ErrorType; /** * @summary Update preferred home-screen clock style */ export const useUpdateClockStyle = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getUpdateClockStyleMutationOptions(options)); }; /** * @summary Update preferred 12/24-hour clock format */ export const getUpdateClockHour12Url = () => { return `/api/auth/me/clock-hour12`; }; export const updateClockHour12 = async ( updateClockHour12Body: UpdateClockHour12Body, options?: RequestInit, ): Promise => { return customFetch(getUpdateClockHour12Url(), { ...options, method: "PATCH", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(updateClockHour12Body), }); }; export const getUpdateClockHour12MutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["updateClockHour12"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return updateClockHour12(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type UpdateClockHour12MutationResult = NonNullable< Awaited> >; export type UpdateClockHour12MutationBody = BodyType; export type UpdateClockHour12MutationError = ErrorType; /** * @summary Update preferred 12/24-hour clock format */ export const useUpdateClockHour12 = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getUpdateClockHour12MutationOptions(options)); }; /** * @summary List all active apps */ export const getListAppsUrl = () => { return `/api/apps`; }; export const listApps = async (options?: RequestInit): Promise => { return customFetch(getListAppsUrl(), { ...options, method: "GET", }); }; export const getListAppsQueryKey = () => { return [`/api/apps`] as const; }; export const getListAppsQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions>, TError, TData>; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListAppsQueryKey(); const queryFn: QueryFunction>> = ({ signal, }) => listApps({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type ListAppsQueryResult = NonNullable< Awaited> >; export type ListAppsQueryError = ErrorType; /** * @summary List all active apps */ export function useListApps< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions>, TError, TData>; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListAppsQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Create a new app (admin) */ export const getCreateAppUrl = () => { return `/api/apps`; }; export const createApp = async ( createAppBody: CreateAppBody, options?: RequestInit, ): Promise => { return customFetch(getCreateAppUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(createAppBody), }); }; export const getCreateAppMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["createApp"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return createApp(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type CreateAppMutationResult = NonNullable< Awaited> >; export type CreateAppMutationBody = BodyType; export type CreateAppMutationError = ErrorType; /** * @summary Create a new app (admin) */ export const useCreateApp = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getCreateAppMutationOptions(options)); }; /** * @summary Get app by ID */ export const getGetAppUrl = (id: number) => { return `/api/apps/${id}`; }; export const getApp = async ( id: number, options?: RequestInit, ): Promise => { return customFetch(getGetAppUrl(id), { ...options, method: "GET", }); }; export const getGetAppQueryKey = (id: number) => { return [`/api/apps/${id}`] as const; }; export const getGetAppQueryOptions = < TData = Awaited>, TError = ErrorType, >( id: number, options?: { query?: UseQueryOptions>, TError, TData>; request?: SecondParameter; }, ) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetAppQueryKey(id); const queryFn: QueryFunction>> = ({ signal, }) => getApp(id, { signal, ...requestOptions }); return { queryKey, queryFn, enabled: !!id, ...queryOptions, } as UseQueryOptions>, TError, TData> & { queryKey: QueryKey; }; }; export type GetAppQueryResult = NonNullable>>; export type GetAppQueryError = ErrorType; /** * @summary Get app by ID */ export function useGetApp< TData = Awaited>, TError = ErrorType, >( id: number, options?: { query?: UseQueryOptions>, TError, TData>; request?: SecondParameter; }, ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetAppQueryOptions(id, options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Update app (admin) */ export const getUpdateAppUrl = (id: number) => { return `/api/apps/${id}`; }; export const updateApp = async ( id: number, updateAppBody: UpdateAppBody, options?: RequestInit, ): Promise => { return customFetch(getUpdateAppUrl(id), { ...options, method: "PATCH", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(updateAppBody), }); }; export const getUpdateAppMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext > => { const mutationKey = ["updateApp"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number; data: BodyType } > = (props) => { const { id, data } = props ?? {}; return updateApp(id, data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type UpdateAppMutationResult = NonNullable< Awaited> >; export type UpdateAppMutationBody = BodyType; export type UpdateAppMutationError = ErrorType; /** * @summary Update app (admin) */ export const useUpdateApp = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number; data: BodyType }, TContext > => { return useMutation(getUpdateAppMutationOptions(options)); }; /** * @summary Delete app (admin) */ export const getDeleteAppUrl = (id: number) => { return `/api/apps/${id}`; }; export const deleteApp = async ( id: number, options?: RequestInit, ): Promise => { return customFetch(getDeleteAppUrl(id), { ...options, method: "DELETE", }); }; export const getDeleteAppMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number }, TContext > => { const mutationKey = ["deleteApp"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number } > = (props) => { const { id } = props ?? {}; return deleteApp(id, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type DeleteAppMutationResult = NonNullable< Awaited> >; export type DeleteAppMutationError = ErrorType; /** * @summary Delete app (admin) */ export const useDeleteApp = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number }, TContext > => { return useMutation(getDeleteAppMutationOptions(options)); }; /** * @summary Log an app open event for the current user */ export const getLogAppOpenUrl = (id: number) => { return `/api/apps/${id}/open`; }; export const logAppOpen = async ( id: number, options?: RequestInit, ): Promise => { return customFetch(getLogAppOpenUrl(id), { ...options, method: "POST", }); }; export const getLogAppOpenMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number }, TContext > => { const mutationKey = ["logAppOpen"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number } > = (props) => { const { id } = props ?? {}; return logAppOpen(id, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type LogAppOpenMutationResult = NonNullable< Awaited> >; export type LogAppOpenMutationError = ErrorType; /** * @summary Log an app open event for the current user */ export const useLogAppOpen = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number }, TContext > => { return useMutation(getLogAppOpenMutationOptions(options)); }; /** * @summary Set the current user's preferred home apps order */ export const getUpdateMyAppOrderUrl = () => { return `/api/me/app-order`; }; export const updateMyAppOrder = async ( updateMyAppOrderBody: UpdateMyAppOrderBody, options?: RequestInit, ): Promise => { return customFetch(getUpdateMyAppOrderUrl(), { ...options, method: "PUT", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(updateMyAppOrderBody), }); }; export const getUpdateMyAppOrderMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["updateMyAppOrder"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return updateMyAppOrder(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type UpdateMyAppOrderMutationResult = NonNullable< Awaited> >; export type UpdateMyAppOrderMutationBody = BodyType; export type UpdateMyAppOrderMutationError = ErrorType; /** * @summary Set the current user's preferred home apps order */ export const useUpdateMyAppOrder = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getUpdateMyAppOrderMutationOptions(options)); }; /** * @summary Get application settings (public) */ export const getGetAppSettingsUrl = () => { return `/api/settings`; }; export const getAppSettings = async ( options?: RequestInit, ): Promise => { return customFetch(getGetAppSettingsUrl(), { ...options, method: "GET", }); }; export const getGetAppSettingsQueryKey = () => { return [`/api/settings`] as const; }; export const getGetAppSettingsQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetAppSettingsQueryKey(); const queryFn: QueryFunction>> = ({ signal, }) => getAppSettings({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type GetAppSettingsQueryResult = NonNullable< Awaited> >; export type GetAppSettingsQueryError = ErrorType; /** * @summary Get application settings (public) */ export function useGetAppSettings< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetAppSettingsQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Update application settings (admin) */ export const getUpdateAppSettingsUrl = () => { return `/api/settings`; }; export const updateAppSettings = async ( updateAppSettingsBody: UpdateAppSettingsBody, options?: RequestInit, ): Promise => { return customFetch(getUpdateAppSettingsUrl(), { ...options, method: "PATCH", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(updateAppSettingsBody), }); }; export const getUpdateAppSettingsMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["updateAppSettings"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return updateAppSettings(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type UpdateAppSettingsMutationResult = NonNullable< Awaited> >; export type UpdateAppSettingsMutationBody = BodyType; export type UpdateAppSettingsMutationError = ErrorType; /** * @summary Update application settings (admin) */ export const useUpdateAppSettings = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getUpdateAppSettingsMutationOptions(options)); }; /** * @summary Request a presigned URL for file upload */ export const getRequestUploadUrlUrl = () => { return `/api/storage/uploads/request-url`; }; export const requestUploadUrl = async ( requestUploadUrlBody: RequestUploadUrlBody, options?: RequestInit, ): Promise => { return customFetch(getRequestUploadUrlUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(requestUploadUrlBody), }); }; export const getRequestUploadUrlMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["requestUploadUrl"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return requestUploadUrl(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type RequestUploadUrlMutationResult = NonNullable< Awaited> >; export type RequestUploadUrlMutationBody = BodyType; export type RequestUploadUrlMutationError = ErrorType; /** * @summary Request a presigned URL for file upload */ export const useRequestUploadUrl = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getRequestUploadUrlMutationOptions(options)); }; /** * @summary List all services */ export const getListServicesUrl = () => { return `/api/services`; }; export const listServices = async ( options?: RequestInit, ): Promise => { return customFetch(getListServicesUrl(), { ...options, method: "GET", }); }; export const getListServicesQueryKey = () => { return [`/api/services`] as const; }; export const getListServicesQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListServicesQueryKey(); const queryFn: QueryFunction>> = ({ signal, }) => listServices({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type ListServicesQueryResult = NonNullable< Awaited> >; export type ListServicesQueryError = ErrorType; /** * @summary List all services */ export function useListServices< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListServicesQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Create a service (admin) */ export const getCreateServiceUrl = () => { return `/api/services`; }; export const createService = async ( createServiceBody: CreateServiceBody, options?: RequestInit, ): Promise => { return customFetch(getCreateServiceUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(createServiceBody), }); }; export const getCreateServiceMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["createService"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return createService(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type CreateServiceMutationResult = NonNullable< Awaited> >; export type CreateServiceMutationBody = BodyType; export type CreateServiceMutationError = ErrorType; /** * @summary Create a service (admin) */ export const useCreateService = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getCreateServiceMutationOptions(options)); }; /** * @summary Get service by ID */ export const getGetServiceUrl = (id: number) => { return `/api/services/${id}`; }; export const getService = async ( id: number, options?: RequestInit, ): Promise => { return customFetch(getGetServiceUrl(id), { ...options, method: "GET", }); }; export const getGetServiceQueryKey = (id: number) => { return [`/api/services/${id}`] as const; }; export const getGetServiceQueryOptions = < TData = Awaited>, TError = ErrorType, >( id: number, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetServiceQueryKey(id); const queryFn: QueryFunction>> = ({ signal, }) => getService(id, { signal, ...requestOptions }); return { queryKey, queryFn, enabled: !!id, ...queryOptions, } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type GetServiceQueryResult = NonNullable< Awaited> >; export type GetServiceQueryError = ErrorType; /** * @summary Get service by ID */ export function useGetService< TData = Awaited>, TError = ErrorType, >( id: number, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetServiceQueryOptions(id, options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Update service (admin) */ export const getUpdateServiceUrl = (id: number) => { return `/api/services/${id}`; }; export const updateService = async ( id: number, updateServiceBody: UpdateServiceBody, options?: RequestInit, ): Promise => { return customFetch(getUpdateServiceUrl(id), { ...options, method: "PATCH", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(updateServiceBody), }); }; export const getUpdateServiceMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext > => { const mutationKey = ["updateService"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number; data: BodyType } > = (props) => { const { id, data } = props ?? {}; return updateService(id, data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type UpdateServiceMutationResult = NonNullable< Awaited> >; export type UpdateServiceMutationBody = BodyType; export type UpdateServiceMutationError = ErrorType; /** * @summary Update service (admin) */ export const useUpdateService = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number; data: BodyType }, TContext > => { return useMutation(getUpdateServiceMutationOptions(options)); }; /** * @summary Delete service (admin) */ export const getDeleteServiceUrl = (id: number) => { return `/api/services/${id}`; }; export const deleteService = async ( id: number, options?: RequestInit, ): Promise => { return customFetch(getDeleteServiceUrl(id), { ...options, method: "DELETE", }); }; export const getDeleteServiceMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number }, TContext > => { const mutationKey = ["deleteService"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number } > = (props) => { const { id } = props ?? {}; return deleteService(id, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type DeleteServiceMutationResult = NonNullable< Awaited> >; export type DeleteServiceMutationError = ErrorType; /** * @summary Delete service (admin) */ export const useDeleteService = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number }, TContext > => { return useMutation(getDeleteServiceMutationOptions(options)); }; /** * @summary Place a service order */ export const getCreateServiceOrderUrl = () => { return `/api/orders`; }; export const createServiceOrder = async ( createServiceOrderBody: CreateServiceOrderBody, options?: RequestInit, ): Promise => { return customFetch(getCreateServiceOrderUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(createServiceOrderBody), }); }; export const getCreateServiceOrderMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["createServiceOrder"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return createServiceOrder(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type CreateServiceOrderMutationResult = NonNullable< Awaited> >; export type CreateServiceOrderMutationBody = BodyType; export type CreateServiceOrderMutationError = ErrorType; /** * @summary Place a service order */ export const useCreateServiceOrder = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getCreateServiceOrderMutationOptions(options)); }; /** * @summary List orders placed by the current user */ export const getListMyServiceOrdersUrl = () => { return `/api/orders/my`; }; export const listMyServiceOrders = async ( options?: RequestInit, ): Promise => { return customFetch(getListMyServiceOrdersUrl(), { ...options, method: "GET", }); }; export const getListMyServiceOrdersQueryKey = () => { return [`/api/orders/my`] as const; }; export const getListMyServiceOrdersQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListMyServiceOrdersQueryKey(); const queryFn: QueryFunction< Awaited> > = ({ signal }) => listMyServiceOrders({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type ListMyServiceOrdersQueryResult = NonNullable< Awaited> >; export type ListMyServiceOrdersQueryError = ErrorType; /** * @summary List orders placed by the current user */ export function useListMyServiceOrders< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListMyServiceOrdersQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary List active orders for receivers (requires orders.receive permission). Returns pending+unassigned orders plus orders assigned to me that are not completed/cancelled. */ export const getListIncomingServiceOrdersUrl = () => { return `/api/orders/incoming`; }; export const listIncomingServiceOrders = async ( options?: RequestInit, ): Promise => { return customFetch(getListIncomingServiceOrdersUrl(), { ...options, method: "GET", }); }; export const getListIncomingServiceOrdersQueryKey = () => { return [`/api/orders/incoming`] as const; }; export const getListIncomingServiceOrdersQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListIncomingServiceOrdersQueryKey(); const queryFn: QueryFunction< Awaited> > = ({ signal }) => listIncomingServiceOrders({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type ListIncomingServiceOrdersQueryResult = NonNullable< Awaited> >; export type ListIncomingServiceOrdersQueryError = ErrorType; /** * @summary List active orders for receivers (requires orders.receive permission). Returns pending+unassigned orders plus orders assigned to me that are not completed/cancelled. */ export function useListIncomingServiceOrders< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListIncomingServiceOrdersQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Update order status to preparing, completed, or cancelled. Preparing/completed restricted to assigned receiver or admin; cancelled allowed for owner (while pending|received) or admin (any time). */ export const getUpdateServiceOrderStatusUrl = (id: number) => { return `/api/orders/${id}/status`; }; export const updateServiceOrderStatus = async ( id: number, updateServiceOrderStatusBody: UpdateServiceOrderStatusBody, options?: RequestInit, ): Promise => { return customFetch(getUpdateServiceOrderStatusUrl(id), { ...options, method: "PATCH", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(updateServiceOrderStatusBody), }); }; export const getUpdateServiceOrderStatusMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext > => { const mutationKey = ["updateServiceOrderStatus"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number; data: BodyType } > = (props) => { const { id, data } = props ?? {}; return updateServiceOrderStatus(id, data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type UpdateServiceOrderStatusMutationResult = NonNullable< Awaited> >; export type UpdateServiceOrderStatusMutationBody = BodyType; export type UpdateServiceOrderStatusMutationError = ErrorType; /** * @summary Update order status to preparing, completed, or cancelled. Preparing/completed restricted to assigned receiver or admin; cancelled allowed for owner (while pending|received) or admin (any time). */ export const useUpdateServiceOrderStatus = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number; data: BodyType }, TContext > => { return useMutation(getUpdateServiceOrderStatusMutationOptions(options)); }; /** * @summary Receiver atomically claims a pending order (sets status=received, assigned_to=current user). Requires orders.receive permission. Returns 409 already_claimed if the order is no longer pending+unassigned. */ export const getConfirmServiceOrderReceiptUrl = (id: number) => { return `/api/orders/${id}/confirm-receipt`; }; export const confirmServiceOrderReceipt = async ( id: number, options?: RequestInit, ): Promise => { return customFetch(getConfirmServiceOrderReceiptUrl(id), { ...options, method: "PATCH", }); }; export const getConfirmServiceOrderReceiptMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number }, TContext > => { const mutationKey = ["confirmServiceOrderReceipt"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number } > = (props) => { const { id } = props ?? {}; return confirmServiceOrderReceipt(id, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type ConfirmServiceOrderReceiptMutationResult = NonNullable< Awaited> >; export type ConfirmServiceOrderReceiptMutationError = ErrorType; /** * @summary Receiver atomically claims a pending order (sets status=received, assigned_to=current user). Requires orders.receive permission. Returns 409 already_claimed if the order is no longer pending+unassigned. */ export const useConfirmServiceOrderReceipt = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number }, TContext > => { return useMutation(getConfirmServiceOrderReceiptMutationOptions(options)); }; /** * @summary List service categories */ export const getListServiceCategoriesUrl = () => { return `/api/service-categories`; }; export const listServiceCategories = async ( options?: RequestInit, ): Promise => { return customFetch(getListServiceCategoriesUrl(), { ...options, method: "GET", }); }; export const getListServiceCategoriesQueryKey = () => { return [`/api/service-categories`] as const; }; export const getListServiceCategoriesQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListServiceCategoriesQueryKey(); const queryFn: QueryFunction< Awaited> > = ({ signal }) => listServiceCategories({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type ListServiceCategoriesQueryResult = NonNullable< Awaited> >; export type ListServiceCategoriesQueryError = ErrorType; /** * @summary List service categories */ export function useListServiceCategories< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListServiceCategoriesQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary List conversations for current user */ export const getListConversationsUrl = () => { return `/api/conversations`; }; export const listConversations = async ( options?: RequestInit, ): Promise => { return customFetch(getListConversationsUrl(), { ...options, method: "GET", }); }; export const getListConversationsQueryKey = () => { return [`/api/conversations`] as const; }; export const getListConversationsQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListConversationsQueryKey(); const queryFn: QueryFunction< Awaited> > = ({ signal }) => listConversations({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type ListConversationsQueryResult = NonNullable< Awaited> >; export type ListConversationsQueryError = ErrorType; /** * @summary List conversations for current user */ export function useListConversations< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListConversationsQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Create a conversation */ export const getCreateConversationUrl = () => { return `/api/conversations`; }; export const createConversation = async ( createConversationBody: CreateConversationBody, options?: RequestInit, ): Promise => { return customFetch(getCreateConversationUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(createConversationBody), }); }; export const getCreateConversationMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["createConversation"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return createConversation(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type CreateConversationMutationResult = NonNullable< Awaited> >; export type CreateConversationMutationBody = BodyType; export type CreateConversationMutationError = ErrorType; /** * @summary Create a conversation */ export const useCreateConversation = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getCreateConversationMutationOptions(options)); }; /** * @summary Get conversation by ID */ export const getGetConversationUrl = (id: number) => { return `/api/conversations/${id}`; }; export const getConversation = async ( id: number, options?: RequestInit, ): Promise => { return customFetch(getGetConversationUrl(id), { ...options, method: "GET", }); }; export const getGetConversationQueryKey = (id: number) => { return [`/api/conversations/${id}`] as const; }; export const getGetConversationQueryOptions = < TData = Awaited>, TError = ErrorType, >( id: number, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetConversationQueryKey(id); const queryFn: QueryFunction>> = ({ signal, }) => getConversation(id, { signal, ...requestOptions }); return { queryKey, queryFn, enabled: !!id, ...queryOptions, } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type GetConversationQueryResult = NonNullable< Awaited> >; export type GetConversationQueryError = ErrorType; /** * @summary Get conversation by ID */ export function useGetConversation< TData = Awaited>, TError = ErrorType, >( id: number, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetConversationQueryOptions(id, options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Update conversation properties (admin only) */ export const getUpdateConversationUrl = (id: number) => { return `/api/conversations/${id}`; }; export const updateConversation = async ( id: number, updateConversationBody: UpdateConversationBody, options?: RequestInit, ): Promise => { return customFetch(getUpdateConversationUrl(id), { ...options, method: "PATCH", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(updateConversationBody), }); }; export const getUpdateConversationMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext > => { const mutationKey = ["updateConversation"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number; data: BodyType } > = (props) => { const { id, data } = props ?? {}; return updateConversation(id, data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type UpdateConversationMutationResult = NonNullable< Awaited> >; export type UpdateConversationMutationBody = BodyType; export type UpdateConversationMutationError = ErrorType; /** * @summary Update conversation properties (admin only) */ export const useUpdateConversation = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number; data: BodyType }, TContext > => { return useMutation(getUpdateConversationMutationOptions(options)); }; /** * @summary Add participants to a group conversation (admin only) */ export const getAddConversationParticipantsUrl = (id: number) => { return `/api/conversations/${id}/participants`; }; export const addConversationParticipants = async ( id: number, addParticipantsBody: AddParticipantsBody, options?: RequestInit, ): Promise => { return customFetch( getAddConversationParticipantsUrl(id), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(addParticipantsBody), }, ); }; export const getAddConversationParticipantsMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext > => { const mutationKey = ["addConversationParticipants"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number; data: BodyType } > = (props) => { const { id, data } = props ?? {}; return addConversationParticipants(id, data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type AddConversationParticipantsMutationResult = NonNullable< Awaited> >; export type AddConversationParticipantsMutationBody = BodyType; export type AddConversationParticipantsMutationError = ErrorType; /** * @summary Add participants to a group conversation (admin only) */ export const useAddConversationParticipants = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number; data: BodyType }, TContext > => { return useMutation(getAddConversationParticipantsMutationOptions(options)); }; /** * @summary Remove a participant from a group conversation (admin only) */ export const getRemoveConversationParticipantUrl = ( id: number, userId: number, ) => { return `/api/conversations/${id}/participants/${userId}`; }; export const removeConversationParticipant = async ( id: number, userId: number, options?: RequestInit, ): Promise => { return customFetch( getRemoveConversationParticipantUrl(id, userId), { ...options, method: "DELETE", }, ); }; export const getRemoveConversationParticipantMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; userId: number }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number; userId: number }, TContext > => { const mutationKey = ["removeConversationParticipant"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number; userId: number } > = (props) => { const { id, userId } = props ?? {}; return removeConversationParticipant(id, userId, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type RemoveConversationParticipantMutationResult = NonNullable< Awaited> >; export type RemoveConversationParticipantMutationError = ErrorType; /** * @summary Remove a participant from a group conversation (admin only) */ export const useRemoveConversationParticipant = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; userId: number }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number; userId: number }, TContext > => { return useMutation(getRemoveConversationParticipantMutationOptions(options)); }; /** * @summary Update per-user state (mute, archive) */ export const getUpdateConversationStateUrl = (id: number) => { return `/api/conversations/${id}/state`; }; export const updateConversationState = async ( id: number, updateConversationStateBody: UpdateConversationStateBody, options?: RequestInit, ): Promise => { return customFetch( getUpdateConversationStateUrl(id), { ...options, method: "PATCH", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(updateConversationStateBody), }, ); }; export const getUpdateConversationStateMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext > => { const mutationKey = ["updateConversationState"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number; data: BodyType } > = (props) => { const { id, data } = props ?? {}; return updateConversationState(id, data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type UpdateConversationStateMutationResult = NonNullable< Awaited> >; export type UpdateConversationStateMutationBody = BodyType; export type UpdateConversationStateMutationError = ErrorType; /** * @summary Update per-user state (mute, archive) */ export const useUpdateConversationState = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number; data: BodyType }, TContext > => { return useMutation(getUpdateConversationStateMutationOptions(options)); }; /** * @summary Leave a group conversation */ export const getLeaveConversationUrl = (id: number) => { return `/api/conversations/${id}/leave`; }; export const leaveConversation = async ( id: number, leaveConversationBody?: LeaveConversationBody, options?: RequestInit, ): Promise => { return customFetch(getLeaveConversationUrl(id), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(leaveConversationBody), }); }; export const getLeaveConversationMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext > => { const mutationKey = ["leaveConversation"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number; data: BodyType } > = (props) => { const { id, data } = props ?? {}; return leaveConversation(id, data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type LeaveConversationMutationResult = NonNullable< Awaited> >; export type LeaveConversationMutationBody = BodyType; export type LeaveConversationMutationError = ErrorType; /** * @summary Leave a group conversation */ export const useLeaveConversation = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number; data: BodyType }, TContext > => { return useMutation(getLeaveConversationMutationOptions(options)); }; /** * @summary List messages in a conversation */ export const getListMessagesUrl = (id: number) => { return `/api/conversations/${id}/messages`; }; export const listMessages = async ( id: number, options?: RequestInit, ): Promise => { return customFetch(getListMessagesUrl(id), { ...options, method: "GET", }); }; export const getListMessagesQueryKey = (id: number) => { return [`/api/conversations/${id}/messages`] as const; }; export const getListMessagesQueryOptions = < TData = Awaited>, TError = ErrorType, >( id: number, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListMessagesQueryKey(id); const queryFn: QueryFunction>> = ({ signal, }) => listMessages(id, { signal, ...requestOptions }); return { queryKey, queryFn, enabled: !!id, ...queryOptions, } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type ListMessagesQueryResult = NonNullable< Awaited> >; export type ListMessagesQueryError = ErrorType; /** * @summary List messages in a conversation */ export function useListMessages< TData = Awaited>, TError = ErrorType, >( id: number, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListMessagesQueryOptions(id, options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Send a message */ export const getSendMessageUrl = (id: number) => { return `/api/conversations/${id}/messages`; }; export const sendMessage = async ( id: number, sendMessageBody: SendMessageBody, options?: RequestInit, ): Promise => { return customFetch(getSendMessageUrl(id), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(sendMessageBody), }); }; export const getSendMessageMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext > => { const mutationKey = ["sendMessage"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number; data: BodyType } > = (props) => { const { id, data } = props ?? {}; return sendMessage(id, data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type SendMessageMutationResult = NonNullable< Awaited> >; export type SendMessageMutationBody = BodyType; export type SendMessageMutationError = ErrorType; /** * @summary Send a message */ export const useSendMessage = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number; data: BodyType }, TContext > => { return useMutation(getSendMessageMutationOptions(options)); }; /** * @summary Mark all messages in conversation as read */ export const getMarkConversationReadUrl = (id: number) => { return `/api/conversations/${id}/read`; }; export const markConversationRead = async ( id: number, options?: RequestInit, ): Promise => { return customFetch(getMarkConversationReadUrl(id), { ...options, method: "POST", }); }; export const getMarkConversationReadMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number }, TContext > => { const mutationKey = ["markConversationRead"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number } > = (props) => { const { id } = props ?? {}; return markConversationRead(id, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type MarkConversationReadMutationResult = NonNullable< Awaited> >; export type MarkConversationReadMutationError = ErrorType; /** * @summary Mark all messages in conversation as read */ export const useMarkConversationRead = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number }, TContext > => { return useMutation(getMarkConversationReadMutationOptions(options)); }; /** * @summary List notifications for current user */ export const getListNotificationsUrl = () => { return `/api/notifications`; }; export const listNotifications = async ( options?: RequestInit, ): Promise => { return customFetch(getListNotificationsUrl(), { ...options, method: "GET", }); }; export const getListNotificationsQueryKey = () => { return [`/api/notifications`] as const; }; export const getListNotificationsQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListNotificationsQueryKey(); const queryFn: QueryFunction< Awaited> > = ({ signal }) => listNotifications({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type ListNotificationsQueryResult = NonNullable< Awaited> >; export type ListNotificationsQueryError = ErrorType; /** * @summary List notifications for current user */ export function useListNotifications< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListNotificationsQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Mark notification as read */ export const getMarkNotificationReadUrl = (id: number) => { return `/api/notifications/${id}/read`; }; export const markNotificationRead = async ( id: number, options?: RequestInit, ): Promise => { return customFetch(getMarkNotificationReadUrl(id), { ...options, method: "PATCH", }); }; export const getMarkNotificationReadMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number }, TContext > => { const mutationKey = ["markNotificationRead"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number } > = (props) => { const { id } = props ?? {}; return markNotificationRead(id, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type MarkNotificationReadMutationResult = NonNullable< Awaited> >; export type MarkNotificationReadMutationError = ErrorType; /** * @summary Mark notification as read */ export const useMarkNotificationRead = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number }, TContext > => { return useMutation(getMarkNotificationReadMutationOptions(options)); }; /** * @summary Mark all notifications as read */ export const getMarkAllNotificationsReadUrl = () => { return `/api/notifications/read-all`; }; export const markAllNotificationsRead = async ( options?: RequestInit, ): Promise => { return customFetch(getMarkAllNotificationsReadUrl(), { ...options, method: "POST", }); }; export const getMarkAllNotificationsReadMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, void, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, void, TContext > => { const mutationKey = ["markAllNotificationsRead"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, void > = () => { return markAllNotificationsRead(requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type MarkAllNotificationsReadMutationResult = NonNullable< Awaited> >; export type MarkAllNotificationsReadMutationError = ErrorType; /** * @summary Mark all notifications as read */ export const useMarkAllNotificationsRead = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, void, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, void, TContext > => { return useMutation(getMarkAllNotificationsReadMutationOptions(options)); }; /** * @summary List all users (admin) */ export const getListUsersUrl = () => { return `/api/users`; }; export const listUsers = async ( options?: RequestInit, ): Promise => { return customFetch(getListUsersUrl(), { ...options, method: "GET", }); }; export const getListUsersQueryKey = () => { return [`/api/users`] as const; }; export const getListUsersQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions>, TError, TData>; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListUsersQueryKey(); const queryFn: QueryFunction>> = ({ signal, }) => listUsers({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type ListUsersQueryResult = NonNullable< Awaited> >; export type ListUsersQueryError = ErrorType; /** * @summary List all users (admin) */ export function useListUsers< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions>, TError, TData>; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListUsersQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Create a user (admin) */ export const getCreateUserUrl = () => { return `/api/users`; }; export const createUser = async ( registerBody: RegisterBody, options?: RequestInit, ): Promise => { return customFetch(getCreateUserUrl(), { ...options, method: "POST", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(registerBody), }); }; export const getCreateUserMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext > => { const mutationKey = ["createUser"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { data: BodyType } > = (props) => { const { data } = props ?? {}; return createUser(data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type CreateUserMutationResult = NonNullable< Awaited> >; export type CreateUserMutationBody = BodyType; export type CreateUserMutationError = ErrorType; /** * @summary Create a user (admin) */ export const useCreateUser = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { data: BodyType }, TContext > => { return useMutation(getCreateUserMutationOptions(options)); }; /** * @summary Get user by ID (admin) */ export const getGetUserUrl = (id: number) => { return `/api/users/${id}`; }; export const getUser = async ( id: number, options?: RequestInit, ): Promise => { return customFetch(getGetUserUrl(id), { ...options, method: "GET", }); }; export const getGetUserQueryKey = (id: number) => { return [`/api/users/${id}`] as const; }; export const getGetUserQueryOptions = < TData = Awaited>, TError = ErrorType, >( id: number, options?: { query?: UseQueryOptions>, TError, TData>; request?: SecondParameter; }, ) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetUserQueryKey(id); const queryFn: QueryFunction>> = ({ signal, }) => getUser(id, { signal, ...requestOptions }); return { queryKey, queryFn, enabled: !!id, ...queryOptions, } as UseQueryOptions>, TError, TData> & { queryKey: QueryKey; }; }; export type GetUserQueryResult = NonNullable< Awaited> >; export type GetUserQueryError = ErrorType; /** * @summary Get user by ID (admin) */ export function useGetUser< TData = Awaited>, TError = ErrorType, >( id: number, options?: { query?: UseQueryOptions>, TError, TData>; request?: SecondParameter; }, ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetUserQueryOptions(id, options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Update user (admin) */ export const getUpdateUserUrl = (id: number) => { return `/api/users/${id}`; }; export const updateUser = async ( id: number, updateUserBody: UpdateUserBody, options?: RequestInit, ): Promise => { return customFetch(getUpdateUserUrl(id), { ...options, method: "PATCH", headers: { "Content-Type": "application/json", ...options?.headers }, body: JSON.stringify(updateUserBody), }); }; export const getUpdateUserMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext > => { const mutationKey = ["updateUser"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number; data: BodyType } > = (props) => { const { id, data } = props ?? {}; return updateUser(id, data, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type UpdateUserMutationResult = NonNullable< Awaited> >; export type UpdateUserMutationBody = BodyType; export type UpdateUserMutationError = ErrorType; /** * @summary Update user (admin) */ export const useUpdateUser = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number; data: BodyType }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number; data: BodyType }, TContext > => { return useMutation(getUpdateUserMutationOptions(options)); }; /** * @summary Delete user (admin) */ export const getDeleteUserUrl = (id: number) => { return `/api/users/${id}`; }; export const deleteUser = async ( id: number, options?: RequestInit, ): Promise => { return customFetch(getDeleteUserUrl(id), { ...options, method: "DELETE", }); }; export const getDeleteUserMutationOptions = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationOptions< Awaited>, TError, { id: number }, TContext > => { const mutationKey = ["deleteUser"]; const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : { ...options, mutation: { ...options.mutation, mutationKey } } : { mutation: { mutationKey }, request: undefined }; const mutationFn: MutationFunction< Awaited>, { id: number } > = (props) => { const { id } = props ?? {}; return deleteUser(id, requestOptions); }; return { mutationFn, ...mutationOptions }; }; export type DeleteUserMutationResult = NonNullable< Awaited> >; export type DeleteUserMutationError = ErrorType; /** * @summary Delete user (admin) */ export const useDeleteUser = < TError = ErrorType, TContext = unknown, >(options?: { mutation?: UseMutationOptions< Awaited>, TError, { id: number }, TContext >; request?: SecondParameter; }): UseMutationResult< Awaited>, TError, { id: number }, TContext > => { return useMutation(getDeleteUserMutationOptions(options)); }; /** * @summary Get home screen stats */ export const getGetHomeStatsUrl = () => { return `/api/stats/home`; }; export const getHomeStats = async ( options?: RequestInit, ): Promise => { return customFetch(getGetHomeStatsUrl(), { ...options, method: "GET", }); }; export const getGetHomeStatsQueryKey = () => { return [`/api/stats/home`] as const; }; export const getGetHomeStatsQueryOptions = < TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetHomeStatsQueryKey(); const queryFn: QueryFunction>> = ({ signal, }) => getHomeStats({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type GetHomeStatsQueryResult = NonNullable< Awaited> >; export type GetHomeStatsQueryError = ErrorType; /** * @summary Get home screen stats */ export function useGetHomeStats< TData = Awaited>, TError = ErrorType, >(options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetHomeStatsQueryOptions(options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Get admin dashboard trend stats */ export const getGetAdminStatsUrl = (params?: GetAdminStatsParams) => { const normalizedParams = new URLSearchParams(); Object.entries(params || {}).forEach(([key, value]) => { if (value !== undefined) { normalizedParams.append(key, value === null ? "null" : value.toString()); } }); const stringifiedParams = normalizedParams.toString(); return stringifiedParams.length > 0 ? `/api/stats/admin?${stringifiedParams}` : `/api/stats/admin`; }; export const getAdminStats = async ( params?: GetAdminStatsParams, options?: RequestInit, ): Promise => { return customFetch(getGetAdminStatsUrl(params), { ...options, method: "GET", }); }; export const getGetAdminStatsQueryKey = (params?: GetAdminStatsParams) => { return [`/api/stats/admin`, ...(params ? [params] : [])] as const; }; export const getGetAdminStatsQueryOptions = < TData = Awaited>, TError = ErrorType, >( params?: GetAdminStatsParams, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetAdminStatsQueryKey(params); const queryFn: QueryFunction>> = ({ signal, }) => getAdminStats(params, { signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type GetAdminStatsQueryResult = NonNullable< Awaited> >; export type GetAdminStatsQueryError = ErrorType; /** * @summary Get admin dashboard trend stats */ export function useGetAdminStats< TData = Awaited>, TError = ErrorType, >( params?: GetAdminStatsParams, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetAdminStatsQueryOptions(params, options); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Recent opens of a single app within the selected range */ export const getGetAdminAppOpensByAppUrl = ( appId: number, params?: GetAdminAppOpensByAppParams, ) => { const normalizedParams = new URLSearchParams(); Object.entries(params || {}).forEach(([key, value]) => { if (value !== undefined) { normalizedParams.append(key, value === null ? "null" : value.toString()); } }); const stringifiedParams = normalizedParams.toString(); return stringifiedParams.length > 0 ? `/api/stats/admin/app-opens/by-app/${appId}?${stringifiedParams}` : `/api/stats/admin/app-opens/by-app/${appId}`; }; export const getAdminAppOpensByApp = async ( appId: number, params?: GetAdminAppOpensByAppParams, options?: RequestInit, ): Promise => { return customFetch( getGetAdminAppOpensByAppUrl(appId, params), { ...options, method: "GET", }, ); }; export const getGetAdminAppOpensByAppQueryKey = ( appId: number, params?: GetAdminAppOpensByAppParams, ) => { return [ `/api/stats/admin/app-opens/by-app/${appId}`, ...(params ? [params] : []), ] as const; }; export const getGetAdminAppOpensByAppQueryOptions = < TData = Awaited>, TError = ErrorType, >( appId: number, params?: GetAdminAppOpensByAppParams, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetAdminAppOpensByAppQueryKey(appId, params); const queryFn: QueryFunction< Awaited> > = ({ signal }) => getAdminAppOpensByApp(appId, params, { signal, ...requestOptions }); return { queryKey, queryFn, enabled: !!appId, ...queryOptions, } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type GetAdminAppOpensByAppQueryResult = NonNullable< Awaited> >; export type GetAdminAppOpensByAppQueryError = ErrorType; /** * @summary Recent opens of a single app within the selected range */ export function useGetAdminAppOpensByApp< TData = Awaited>, TError = ErrorType, >( appId: number, params?: GetAdminAppOpensByAppParams, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetAdminAppOpensByAppQueryOptions( appId, params, options, ); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; } /** * @summary Recent app opens by a single user within the selected range */ export const getGetAdminAppOpensByUserUrl = ( userId: number, params?: GetAdminAppOpensByUserParams, ) => { const normalizedParams = new URLSearchParams(); Object.entries(params || {}).forEach(([key, value]) => { if (value !== undefined) { normalizedParams.append(key, value === null ? "null" : value.toString()); } }); const stringifiedParams = normalizedParams.toString(); return stringifiedParams.length > 0 ? `/api/stats/admin/app-opens/by-user/${userId}?${stringifiedParams}` : `/api/stats/admin/app-opens/by-user/${userId}`; }; export const getAdminAppOpensByUser = async ( userId: number, params?: GetAdminAppOpensByUserParams, options?: RequestInit, ): Promise => { return customFetch( getGetAdminAppOpensByUserUrl(userId, params), { ...options, method: "GET", }, ); }; export const getGetAdminAppOpensByUserQueryKey = ( userId: number, params?: GetAdminAppOpensByUserParams, ) => { return [ `/api/stats/admin/app-opens/by-user/${userId}`, ...(params ? [params] : []), ] as const; }; export const getGetAdminAppOpensByUserQueryOptions = < TData = Awaited>, TError = ErrorType, >( userId: number, params?: GetAdminAppOpensByUserParams, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ) => { const { query: queryOptions, request: requestOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetAdminAppOpensByUserQueryKey(userId, params); const queryFn: QueryFunction< Awaited> > = ({ signal }) => getAdminAppOpensByUser(userId, params, { signal, ...requestOptions }); return { queryKey, queryFn, enabled: !!userId, ...queryOptions, } as UseQueryOptions< Awaited>, TError, TData > & { queryKey: QueryKey }; }; export type GetAdminAppOpensByUserQueryResult = NonNullable< Awaited> >; export type GetAdminAppOpensByUserQueryError = ErrorType; /** * @summary Recent app opens by a single user within the selected range */ export function useGetAdminAppOpensByUser< TData = Awaited>, TError = ErrorType, >( userId: number, params?: GetAdminAppOpensByUserParams, options?: { query?: UseQueryOptions< Awaited>, TError, TData >; request?: SecondParameter; }, ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetAdminAppOpensByUserQueryOptions( userId, params, options, ); const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey; }; return { ...query, queryKey: queryOptions.queryKey }; }