Something went wrong. Try again.
ATProto-based AI Assistant Chat interface.
Something went wrong. Try again.
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102import { infiniteQueryOptions, queryOptions } from '@tanstack/react-query'import { api, read } from '../../shared/api.ts'import { staleTime } from '../../shared/queries.ts'
/** The key every users search falls under. */export const adminUsersKey = ['admin', 'users'] as const
const fetchAdminUsers = (q: string, cursor: string) => read(api.admin.users.$get({ query: { q, ...(cursor && { cursor }) } }))
/** An account, with its roles and any suspension. */export type AdminUser = Awaited<ReturnType<typeof fetchAdminUsers>>['users'][number]
/** Accounts for the admin's users list, 50 a page, matching the search `q`. */export const adminUsersQuery = (q: string) => infiniteQueryOptions({ queryKey: [...adminUsersKey, q], staleTime, initialPageParam: '', queryFn: ({ pageParam }) => fetchAdminUsers(q, pageParam), getNextPageParam: (page) => page.cursor ?? undefined, })
export const adminInvitesQuery = queryOptions({ queryKey: ['admin', 'invites'], staleTime, queryFn: async () => (await read(api.admin.invites.$get())).invites,})
const fetchAdminRoles = () => read(api.admin.roles.$get())
/** A role, with its matching rules and explicit members. */export type AdminRole = Awaited<ReturnType<typeof fetchAdminRoles>>['roles'][number]
export const adminRolesQuery = queryOptions({ queryKey: ['admin', 'roles'], staleTime, queryFn: fetchAdminRoles,})
export const adminAccessQuery = queryOptions({ queryKey: ['admin', 'access'], staleTime, queryFn: () => read(api.admin.access.$get()),})
const fetchAdminPlugins = async () => (await read(api.admin.plugins.$get())).instances
/** A configured plugin, with its options, status, and the providers it adds. */export type AdminPlugin = Awaited<ReturnType<typeof fetchAdminPlugins>>[number]
export const adminPluginsQuery = queryOptions({ queryKey: ['admin', 'plugins'], staleTime, queryFn: fetchAdminPlugins,})
export const adminInstalledQuery = queryOptions({ queryKey: ['admin', 'plugins', 'installed'], staleTime, queryFn: async () => (await read(api.admin.plugins.installed.$get())).plugins,})
const fetchAdminModels = async () => (await read(api.admin.models.$get())).models
/** A model the admin offers, with the server's warning about it, if any. */export type AdminModelEntry = Awaited<ReturnType<typeof fetchAdminModels>>[number]
export const adminModelsQuery = queryOptions({ queryKey: ['admin', 'models'], staleTime, queryFn: fetchAdminModels,})
export const adminSettingsQuery = queryOptions({ queryKey: ['admin', 'settings'], staleTime, queryFn: async () => (await read(api.admin.settings.$get())).settings,})
const fetchApiKeys = async () => (await read(api.admin['api-keys'].$get())).keys
/** An issued key, without the key itself. */export type AdminApiKey = Awaited<ReturnType<typeof fetchApiKeys>>[number]
export const adminApiKeysQuery = queryOptions({ queryKey: ['admin', 'api-keys'], staleTime, queryFn: fetchApiKeys,})
const fetchCron = async () => (await read(api.admin.cron.$get())).lastRun
/** Cron's last run, or null when it has never run. */export type CronRun = NonNullable<Awaited<ReturnType<typeof fetchCron>>>
export const adminCronQuery = queryOptions({ queryKey: ['admin', 'cron'], staleTime, queryFn: fetchCron,})