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,6 +1,6 @@
import { DataGrid } from '@/components/common/DataGrid';
import { TeamsTable } from '@/app/(main)/settings/teams/TeamsTable';
import { useLoginQuery, useTeamsQuery } from '@/components/hooks';
import { useLoginQuery, useUserTeamsQuery } from '@/components/hooks';
import { ReactNode } from 'react';
export function TeamsDataTable({
@ -13,10 +13,10 @@ export function TeamsDataTable({
children?: ReactNode;
}) {
const { user } = useLoginQuery();
const queryResult = useTeamsQuery(user.id);
const queryResult = useUserTeamsQuery(user.id);
return (
<DataGrid queryResult={queryResult} renderEmpty={() => children}>
<DataGrid query={queryResult} renderEmpty={() => children}>
{({ data }) => {
return <TeamsTable data={data} allowEdit={allowEdit} showActions={showActions} />;
}}

View file

@ -1,6 +1,6 @@
import { WebsitesTable } from './WebsitesTable';
import { DataGrid } from '@/components/common/DataGrid';
import { useWebsitesQuery } from '@/components/hooks';
import { useUserWebsitesQuery } from '@/components/hooks';
export function WebsitesDataTable({
teamId,
@ -13,10 +13,10 @@ export function WebsitesDataTable({
allowView?: boolean;
showActions?: boolean;
}) {
const queryResult = useWebsitesQuery({ teamId });
const queryResult = useUserWebsitesQuery({ teamId });
return (
<DataGrid queryResult={queryResult} allowSearch allowPaging>
<DataGrid query={queryResult} allowSearch allowPaging>
{({ data }) => (
<WebsitesTable
teamId={teamId}

View file

@ -4,7 +4,7 @@ import {
useLoginQuery,
useMessages,
useModified,
useTeamsQuery,
useUserTeamsQuery,
useNavigation,
} from '@/components/hooks';
import { WebsiteDeleteForm } from './WebsiteDeleteForm';
@ -19,11 +19,11 @@ export function WebsiteData({ websiteId, onSave }: { websiteId: string; onSave?:
const { touch } = useModified();
const { teamId, renderUrl } = useNavigation();
const router = useRouter();
const { result } = useTeamsQuery(user.id);
const { data } = useUserTeamsQuery(user.id);
const canTransferWebsite =
(
!teamId &&
result.data.filter(({ teamUser }) =>
data.filter(({ teamUser }) =>
teamUser.find(
({ role, userId }) =>
[ROLES.teamOwner, ROLES.teamManager].includes(role) && userId === user.id,
@ -31,7 +31,7 @@ export function WebsiteData({ websiteId, onSave }: { websiteId: string; onSave?:
)
).length > 0 ||
(teamId &&
!!result?.data
!!data
?.find(({ id }) => id === teamId)
?.teamUser.find(({ role, userId }) => role === ROLES.teamOwner && userId === user.id));

View file

@ -10,7 +10,7 @@ import {
ListItem,
Text,
} from '@umami/react-zen';
import { useApi, useLoginQuery, useMessages, useTeamsQuery } from '@/components/hooks';
import { useApi, useLoginQuery, useMessages, useUserTeamsQuery } from '@/components/hooks';
import { WebsiteContext } from '@/app/(main)/websites/[websiteId]/WebsiteProvider';
import { ROLES } from '@/lib/constants';
@ -31,7 +31,7 @@ export function WebsiteTransferForm({
const { mutate, error } = useMutation({
mutationFn: (data: any) => post(`/websites/${websiteId}/transfer`, data),
});
const { result, query } = useTeamsQuery(user.id);
const { result, query } = useUserTeamsQuery(user.id);
const isTeamWebsite = !!website?.teamId;
const items = result.data.filter(({ teamUser }) =>