'use client'; import { useEffect, useState } from 'react'; import { Item, Loading, Tabs, useToasts, Flexbox } from 'react-basics'; import PageHeader from 'components/layout/PageHeader'; import { ROLES } from 'lib/constants'; import { useUser } from 'components/hooks'; import { useApi } from 'components/hooks'; import { useMessages } from 'components/hooks'; import TeamEditForm from './TeamEditForm'; import TeamMembers from './TeamMembers'; import TeamWebsites from './TeamWebsites'; import TeamData from './TeamData'; export function TeamSettings({ teamId }: { teamId: string }) { const { formatMessage, labels, messages } = useMessages(); const { user } = useUser(); const [values, setValues] = useState(null); const [tab, setTab] = useState('details'); const { get, useQuery } = useApi(); const { showToast } = useToasts(); const { data, isLoading } = useQuery({ queryKey: ['team', teamId], queryFn: () => { if (teamId) { return get(`/teams/${teamId}`); } }, }); const canEdit = data?.teamUser?.find( ({ userId, role }) => role === ROLES.teamOwner && userId === user.id, ); const handleSave = data => { showToast({ message: formatMessage(messages.saved), variant: 'success' }); setValues(state => ({ ...state, ...data })); }; useEffect(() => { if (data) { setValues(data); } }, [data]); if (isLoading || !values) { return ; } return ( setTab(value)} style={{ marginBottom: 30 }}> {formatMessage(labels.details)} {formatMessage(labels.members)} {formatMessage(labels.websites)} {formatMessage(labels.data)} {tab === 'details' && ( )} {tab === 'members' && } {tab === 'websites' && } {canEdit && tab === 'data' && } ); } export default TeamSettings;