New admin section.

This commit is contained in:
Mike Cao 2025-07-08 18:40:47 -07:00
parent b78ff3b477
commit ce1f6c3618
44 changed files with 515 additions and 157 deletions

View file

@ -1,15 +1,20 @@
import { useApi } from '../useApi';
import { useModified } from '../useModified';
import { usePagedQuery } from '@/components/hooks';
import { ReactQueryOptions } from '@/lib/types';
export function useTeamsQuery(userId: string) {
const { get, useQuery } = useApi();
export function useTeamsQuery(params?: Record<string, any>, options?: ReactQueryOptions) {
const { get } = useApi();
const { modified } = useModified(`teams`);
return useQuery({
queryKey: ['teams', { userId, modified }],
queryFn: () => {
return get(`/users/${userId}/teams`, { userId });
return usePagedQuery({
queryKey: ['websites', { modified, ...params }],
queryFn: pageParams => {
return get(`/admin/teams`, {
...params,
...pageParams,
});
},
enabled: !!userId,
...options,
});
}

View file

@ -0,0 +1,15 @@
import { useApi } from '../useApi';
import { useModified } from '../useModified';
export function useUserTeamsQuery(userId: string) {
const { get, useQuery } = useApi();
const { modified } = useModified(`teams`);
return useQuery({
queryKey: ['teams', { userId, modified }],
queryFn: () => {
return get(`/users/${userId}/teams`, { userId });
},
enabled: !!userId,
});
}

View file

@ -0,0 +1,26 @@
import { useApi } from '../useApi';
import { usePagedQuery } from '../usePagedQuery';
import { useLoginQuery } from './useLoginQuery';
import { useModified } from '../useModified';
import { ReactQueryOptions } from '@/lib/types';
export function useUserWebsitesQuery(
{ userId, teamId }: { userId?: string; teamId?: string },
params?: Record<string, any>,
options?: ReactQueryOptions,
) {
const { get } = useApi();
const { user } = useLoginQuery();
const { modified } = useModified(`websites`);
return usePagedQuery({
queryKey: ['websites', { userId, teamId, modified, ...params }],
queryFn: pageParams => {
return get(teamId ? `/teams/${teamId}/websites` : `/users/${userId || user.id}/websites`, {
...params,
...pageParams,
});
},
...options,
});
}

View file

@ -8,9 +8,9 @@ export function useUsersQuery() {
return usePagedQuery({
queryKey: ['users', { modified }],
queryFn: (params: any) => {
queryFn: (pageParams: any) => {
return get('/admin/users', {
...params,
...pageParams,
});
},
});

View file

@ -1,24 +1,18 @@
import { useApi } from '../useApi';
import { usePagedQuery } from '../usePagedQuery';
import { useLoginQuery } from './useLoginQuery';
import { useModified } from '../useModified';
import { ReactQueryOptions } from '@/lib/types';
export function useWebsitesQuery(
{ userId, teamId }: { userId?: string; teamId?: string },
params?: Record<string, any>,
options?: ReactQueryOptions,
) {
export function useWebsitesQuery(params?: Record<string, any>, options?: ReactQueryOptions) {
const { get } = useApi();
const { user } = useLoginQuery();
const { modified } = useModified(`websites`);
return usePagedQuery({
queryKey: ['websites', { userId, teamId, modified, ...params }],
queryKey: ['websites', { modified, ...params }],
queryFn: pageParams => {
return get(teamId ? `/teams/${teamId}/websites` : `/users/${userId || user.id}/websites`, {
...params,
return get(`/admin/websites`, {
...pageParams,
...params,
});
},
...options,