feat: replace useState with useQueryState for tab management in TeamDetails

This commit is contained in:
TinsFox 2025-08-16 22:04:32 +08:00
parent 455c7ec076
commit 8946f32feb

View file

@ -3,17 +3,21 @@ import { useLogin, useMessages } from '@/components/hooks';
import Icons from '@/components/icons'; import Icons from '@/components/icons';
import PageHeader from '@/components/layout/PageHeader'; import PageHeader from '@/components/layout/PageHeader';
import { ROLES } from '@/lib/constants'; import { ROLES } from '@/lib/constants';
import { useContext, useState } from 'react'; import { useContext } from 'react';
import { Flexbox, Item, Tabs } from 'react-basics'; import { Flexbox, Item, Tabs } from 'react-basics';
import TeamLeaveButton from '@/app/(main)/settings/teams/TeamLeaveButton'; import TeamLeaveButton from '@/app/(main)/settings/teams/TeamLeaveButton';
import TeamManage from './TeamManage'; import TeamManage from './TeamManage';
import TeamEditForm from './TeamEditForm'; import TeamEditForm from './TeamEditForm';
import { useQueryState } from 'nuqs';
export function TeamDetails({ teamId }: { teamId: string }) { export function TeamDetails({ teamId }: { teamId: string }) {
const team = useContext(TeamContext); const team = useContext(TeamContext);
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const { user } = useLogin(); const { user } = useLogin();
const [tab, setTab] = useState('details'); const [tab, setTab] = useQueryState('tab', {
defaultValue: 'details',
parse: value => value as 'details' | 'manage',
});
const isTeamOwner = const isTeamOwner =
!!team?.teamUser?.find(({ userId, role }) => role === ROLES.teamOwner && userId === user.id) && !!team?.teamUser?.find(({ userId, role }) => role === ROLES.teamOwner && userId === user.id) &&