diff --git a/src/app/(main)/NavBar.tsx b/src/app/(main)/NavBar.tsx index c26e5906..17901f05 100644 --- a/src/app/(main)/NavBar.tsx +++ b/src/app/(main)/NavBar.tsx @@ -8,14 +8,14 @@ import LanguageButton from 'components/input/LanguageButton'; import ProfileButton from 'components/input/ProfileButton'; import TeamsButton from 'components/input/TeamsButton'; import Icons from 'components/icons'; -import { useLogin, useMessages, useNavigation, useTeamContext } from 'components/hooks'; +import { useLogin, useMessages, useNavigation, useTeamUrl } from 'components/hooks'; import styles from './NavBar.module.css'; export function NavBar() { const { user } = useLogin(); const { formatMessage, labels } = useMessages(); const { pathname } = useNavigation(); - const { teamId, renderTeamUrl } = useTeamContext(); + const { teamId, renderTeamUrl } = useTeamUrl(); const cloudMode = Boolean(process.env.cloudMode); diff --git a/src/app/(main)/dashboard/Dashboard.tsx b/src/app/(main)/dashboard/Dashboard.tsx index cf6cc210..d669ca6f 100644 --- a/src/app/(main)/dashboard/Dashboard.tsx +++ b/src/app/(main)/dashboard/Dashboard.tsx @@ -1,18 +1,18 @@ 'use client'; -import { Button, Icon, Icons, Loading, Text } from 'react-basics'; -import Link from 'next/link'; +import { Icon, Icons, Loading, Text } from 'react-basics'; import PageHeader from 'components/layout/PageHeader'; import Pager from 'components/common/Pager'; import WebsiteChartList from '../websites/[websiteId]/WebsiteChartList'; import DashboardSettingsButton from 'app/(main)/dashboard/DashboardSettingsButton'; import DashboardEdit from 'app/(main)/dashboard/DashboardEdit'; import EmptyPlaceholder from 'components/common/EmptyPlaceholder'; -import { useMessages, useLocale, useTeamContext, useWebsites } from 'components/hooks'; +import { useMessages, useLocale, useTeamUrl, useWebsites } from 'components/hooks'; import useDashboard from 'store/dashboard'; +import LinkButton from 'components/common/LinkButton'; export function Dashboard() { const { formatMessage, labels, messages } = useMessages(); - const { teamId, renderTeamUrl } = useTeamContext(); + const { teamId, renderTeamUrl } = useTeamUrl(); const { showCharts, editing } = useDashboard(); const { dir } = useLocale(); const pageSize = 10; @@ -36,14 +36,12 @@ export function Dashboard() { {!hasData && ( - - - + + + + + {formatMessage(messages.goToSettings)} + )} {hasData && ( diff --git a/src/app/(main)/reports/ReportsHeader.tsx b/src/app/(main)/reports/ReportsHeader.tsx index 76e9b343..e0b0c10a 100644 --- a/src/app/(main)/reports/ReportsHeader.tsx +++ b/src/app/(main)/reports/ReportsHeader.tsx @@ -1,12 +1,12 @@ 'use client'; import PageHeader from 'components/layout/PageHeader'; import { Icon, Icons, Text } from 'react-basics'; -import { useMessages, useTeamContext } from 'components/hooks'; +import { useMessages, useTeamUrl } from 'components/hooks'; import LinkButton from 'components/common/LinkButton'; export function ReportsHeader() { const { formatMessage, labels } = useMessages(); - const { renderTeamUrl } = useTeamContext(); + const { renderTeamUrl } = useTeamUrl(); return ( diff --git a/src/app/(main)/reports/ReportsTable.tsx b/src/app/(main)/reports/ReportsTable.tsx index 91ba402b..184fb43f 100644 --- a/src/app/(main)/reports/ReportsTable.tsx +++ b/src/app/(main)/reports/ReportsTable.tsx @@ -1,7 +1,7 @@ 'use client'; import { GridColumn, GridTable, Icon, Icons, Text, useBreakpoint } from 'react-basics'; import LinkButton from 'components/common/LinkButton'; -import { useMessages, useLogin, useTeamContext } from 'components/hooks'; +import { useMessages, useLogin, useTeamUrl } from 'components/hooks'; import { REPORT_TYPES } from 'lib/constants'; import ReportDeleteButton from './ReportDeleteButton'; @@ -9,7 +9,7 @@ export function ReportsTable({ data = [], showDomain }: { data: any[]; showDomai const { formatMessage, labels } = useMessages(); const { user } = useLogin(); const breakpoint = useBreakpoint(); - const { renderTeamUrl } = useTeamContext(); + const { renderTeamUrl } = useTeamUrl(); return ( diff --git a/src/app/(main)/reports/[reportId]/BaseParameters.tsx b/src/app/(main)/reports/[reportId]/BaseParameters.tsx index 2ccfbef7..3f02fab8 100644 --- a/src/app/(main)/reports/[reportId]/BaseParameters.tsx +++ b/src/app/(main)/reports/[reportId]/BaseParameters.tsx @@ -4,7 +4,7 @@ import { FormRow } from 'react-basics'; import { parseDateRange } from 'lib/date'; import DateFilter from 'components/input/DateFilter'; import WebsiteSelect from 'components/input/WebsiteSelect'; -import { useMessages, useTeamContext } from 'components/hooks'; +import { useMessages, useTeamUrl } from 'components/hooks'; import { ReportContext } from './Report'; export interface BaseParametersProps { @@ -22,7 +22,7 @@ export function BaseParameters({ }: BaseParametersProps) { const { report, updateReport } = useContext(ReportContext); const { formatMessage, labels } = useMessages(); - const { teamId } = useTeamContext(); + const { teamId } = useTeamUrl(); const { parameters } = report || {}; const { websiteId, dateRange } = parameters || {}; diff --git a/src/app/(main)/reports/[reportId]/ReportHeader.tsx b/src/app/(main)/reports/[reportId]/ReportHeader.tsx index 41e6af70..90b776b0 100644 --- a/src/app/(main)/reports/[reportId]/ReportHeader.tsx +++ b/src/app/(main)/reports/[reportId]/ReportHeader.tsx @@ -1,7 +1,7 @@ 'use client'; import { useContext } from 'react'; import { Icon, LoadingButton, InlineEditField, useToasts } from 'react-basics'; -import { useMessages, useApi, useNavigation, useTeamContext } from 'components/hooks'; +import { useMessages, useApi, useNavigation, useTeamUrl } from 'components/hooks'; import { ReportContext } from './Report'; import styles from './ReportHeader.module.css'; import { REPORT_TYPES } from 'lib/constants'; @@ -11,7 +11,7 @@ export function ReportHeader({ icon }) { const { formatMessage, labels, messages } = useMessages(); const { showToast } = useToasts(); const { router } = useNavigation(); - const { renderTeamUrl } = useTeamContext(); + const { renderTeamUrl } = useTeamUrl(); const { post, useMutation } = useApi(); const { mutate: create, isPending: isCreating } = useMutation({ diff --git a/src/app/(main)/reports/create/ReportTemplates.tsx b/src/app/(main)/reports/create/ReportTemplates.tsx index 5abdb9fb..3fa58b50 100644 --- a/src/app/(main)/reports/create/ReportTemplates.tsx +++ b/src/app/(main)/reports/create/ReportTemplates.tsx @@ -6,7 +6,7 @@ import Funnel from 'assets/funnel.svg'; import Lightbulb from 'assets/lightbulb.svg'; import Magnet from 'assets/magnet.svg'; import styles from './ReportTemplates.module.css'; -import { useMessages, useTeamContext } from 'components/hooks'; +import { useMessages, useTeamUrl } from 'components/hooks'; function ReportItem({ title, description, url, icon }) { const { formatMessage, labels } = useMessages(); @@ -34,7 +34,7 @@ function ReportItem({ title, description, url, icon }) { export function ReportTemplates({ showHeader = true }: { showHeader?: boolean }) { const { formatMessage, labels } = useMessages(); - const { renderTeamUrl } = useTeamContext(); + const { renderTeamUrl } = useTeamUrl(); const reports = [ { diff --git a/src/app/(main)/settings/layout.tsx b/src/app/(main)/settings/layout.tsx index 72e979b7..6eb81d68 100644 --- a/src/app/(main)/settings/layout.tsx +++ b/src/app/(main)/settings/layout.tsx @@ -1,6 +1,6 @@ 'use client'; import { usePathname } from 'next/navigation'; -import { useLogin, useMessages, useTeamContext } from 'components/hooks'; +import { useLogin, useMessages, useTeamUrl } from 'components/hooks'; import SideNav from 'components/layout/SideNav'; import styles from './layout.module.css'; @@ -9,7 +9,7 @@ export default function SettingsLayout({ children }) { const pathname = usePathname(); const { formatMessage, labels } = useMessages(); const cloudMode = !!process.env.cloudMode; - const { teamId, renderTeamUrl } = useTeamContext(); + const { teamId, renderTeamUrl } = useTeamUrl(); const items = [ teamId && { diff --git a/src/app/(main)/settings/teams/TeamsDataTable.tsx b/src/app/(main)/settings/teams/TeamsDataTable.tsx index ea8bab37..e7c9fc3a 100644 --- a/src/app/(main)/settings/teams/TeamsDataTable.tsx +++ b/src/app/(main)/settings/teams/TeamsDataTable.tsx @@ -1,20 +1,10 @@ 'use client'; import DataTable from 'components/common/DataTable'; import TeamsTable from 'app/(main)/settings/teams/TeamsTable'; -import { useApi, useFilterQuery } from 'components/hooks'; -import useCache from 'store/cache'; +import { useTeams } from 'components/hooks'; export function TeamsDataTable() { - const { get } = useApi(); - const modified = useCache((state: any) => state?.teams); - const queryResult = useFilterQuery({ - queryKey: ['teams', { modified }], - queryFn: (params: any) => { - return get(`/teams`, { - ...params, - }); - }, - }); + const queryResult = useTeams(); return ( diff --git a/src/app/(main)/settings/teams/TeamsTable.tsx b/src/app/(main)/settings/teams/TeamsTable.tsx index 56bf0f81..e35d0412 100644 --- a/src/app/(main)/settings/teams/TeamsTable.tsx +++ b/src/app/(main)/settings/teams/TeamsTable.tsx @@ -1,9 +1,9 @@ 'use client'; -import { Button, GridColumn, GridTable, Icon, Text, useBreakpoint } from 'react-basics'; -import Link from 'next/link'; +import { GridColumn, GridTable, Icon, Text, useBreakpoint } from 'react-basics'; import { useMessages, useLogin } from 'components/hooks'; import Icons from 'components/icons'; import { ROLES } from 'lib/constants'; +import LinkButton from 'components/common/LinkButton'; export function TeamsTable({ data = [] }: { data: any[] }) { const { formatMessage, labels } = useMessages(); @@ -31,23 +31,19 @@ export function TeamsTable({ data = [] }: { data: any[] }) { return ( <> {isOwner && ( - - - - )} - - - + {formatMessage(labels.edit)} + + )} + + + + + {formatMessage(labels.switch)} + ); }} diff --git a/src/app/(main)/settings/teams/[teamId]/TeamMembers.tsx b/src/app/(main)/settings/teams/[teamId]/TeamMembers.tsx index c56511f9..1fedc55f 100644 --- a/src/app/(main)/settings/teams/[teamId]/TeamMembers.tsx +++ b/src/app/(main)/settings/teams/[teamId]/TeamMembers.tsx @@ -1,7 +1,7 @@ 'use client'; import DataTable from 'components/common/DataTable'; import TeamMembersTable from './TeamMembersTable'; -import useTeamMembers from 'components/hooks/queries/useTeamMembers'; +import { useTeamMembers } from 'components/hooks'; export function TeamMembers({ teamId, allowEdit }: { teamId: string; allowEdit: boolean }) { const queryResult = useTeamMembers(teamId); diff --git a/src/app/(main)/settings/teams/[teamId]/TeamWebsites.tsx b/src/app/(main)/settings/teams/[teamId]/TeamWebsites.tsx index 1fce8c23..0bd49883 100644 --- a/src/app/(main)/settings/teams/[teamId]/TeamWebsites.tsx +++ b/src/app/(main)/settings/teams/[teamId]/TeamWebsites.tsx @@ -1,8 +1,16 @@ 'use client'; -import WebsitesDataTable from 'app/(main)/settings/websites/WebsitesDataTable'; +import DataTable from 'components/common/DataTable'; +import { useTeamWebsites } from 'components/hooks'; +import TeamWebsitesTable from './TeamWebsitesTable'; export function TeamWebsites({ teamId, allowEdit }: { teamId: string; allowEdit: boolean }) { - return ; + const queryResult = useTeamWebsites(teamId); + + return ( + + {({ data }) => } + + ); } export default TeamWebsites; diff --git a/src/app/(main)/settings/teams/[teamId]/TeamWebsitesTable.tsx b/src/app/(main)/settings/teams/[teamId]/TeamWebsitesTable.tsx index fe08c059..fdd0169a 100644 --- a/src/app/(main)/settings/teams/[teamId]/TeamWebsitesTable.tsx +++ b/src/app/(main)/settings/teams/[teamId]/TeamWebsitesTable.tsx @@ -1,16 +1,20 @@ 'use client'; -import Link from 'next/link'; -import { Button, GridColumn, GridTable, Icon, Text } from 'react-basics'; -import { useMessages } from 'components/hooks'; +import { GridColumn, GridTable, Icon, Text } from 'react-basics'; +import { useLogin, useMessages } from 'components/hooks'; import Icons from 'components/icons'; +import LinkButton from 'components/common/LinkButton'; export function TeamWebsitesTable({ + teamId, data = [], + allowEdit, }: { + teamId: string; data: any[]; - readOnly: boolean; - onRemove: () => void; + allowEdit?: boolean; }) { + const { user } = useLogin(); + const { formatMessage, labels } = useMessages(); return ( @@ -20,14 +24,22 @@ export function TeamWebsitesTable({ {row => { const { websiteId } = row; return ( - - - + + ); }} diff --git a/src/app/(main)/settings/users/UsersTable.tsx b/src/app/(main)/settings/users/UsersTable.tsx index 7b43c007..523bd01c 100644 --- a/src/app/(main)/settings/users/UsersTable.tsx +++ b/src/app/(main)/settings/users/UsersTable.tsx @@ -1,10 +1,10 @@ 'use client'; -import { Button, Text, Icon, Icons, GridTable, GridColumn, useBreakpoint } from 'react-basics'; +import { Text, Icon, Icons, GridTable, GridColumn, useBreakpoint } from 'react-basics'; import { formatDistance } from 'date-fns'; -import Link from 'next/link'; import { ROLES } from 'lib/constants'; import { useMessages, useLocale } from 'components/hooks'; import UserDeleteButton from './UserDeleteButton'; +import LinkButton from 'components/common/LinkButton'; export function UsersTable({ data = [], @@ -45,14 +45,12 @@ export function UsersTable({ return ( <> - - - + + + + + {formatMessage(labels.edit)} + ); }} diff --git a/src/app/(main)/settings/websites/WebsiteSettings.tsx b/src/app/(main)/settings/websites/WebsiteSettings.tsx index f1e8f004..271ff5d2 100644 --- a/src/app/(main)/settings/websites/WebsiteSettings.tsx +++ b/src/app/(main)/settings/websites/WebsiteSettings.tsx @@ -4,16 +4,16 @@ import { Item, Tabs, Button, Text, Icon, Loading } from 'react-basics'; import Link from 'next/link'; import Icons from 'components/icons'; import PageHeader from 'components/layout/PageHeader'; +import WebsiteContext from 'app/(main)/websites/[websiteId]/WebsiteContext'; import WebsiteEditForm from './[websiteId]/WebsiteEditForm'; import WebsiteData from './[websiteId]/WebsiteData'; import TrackingCode from './[websiteId]/TrackingCode'; import ShareUrl from './[websiteId]/ShareUrl'; import { useWebsite, useMessages } from 'components/hooks'; -import WebsiteContext from '../../websites/[websiteId]/WebsiteContext'; export function WebsiteSettings({ websiteId, openExternal = false }) { const { formatMessage, labels } = useMessages(); - const { data: website, isLoading, refetch } = useWebsite(websiteId, { gcTime: 0 }); + const { data: website, isLoading, refetch } = useWebsite(websiteId); const [tab, setTab] = useState('details'); const handleSave = () => { diff --git a/src/app/(main)/settings/websites/WebsitesTable.tsx b/src/app/(main)/settings/websites/WebsitesTable.tsx index 4a274e36..6486babe 100644 --- a/src/app/(main)/settings/websites/WebsitesTable.tsx +++ b/src/app/(main)/settings/websites/WebsitesTable.tsx @@ -1,8 +1,8 @@ 'use client'; import { ReactNode } from 'react'; -import Link from 'next/link'; -import { Button, Text, Icon, Icons, GridTable, GridColumn, useBreakpoint } from 'react-basics'; -import { useMessages, useLogin, useTeamContext } from 'components/hooks'; +import { Text, Icon, Icons, GridTable, GridColumn, useBreakpoint } from 'react-basics'; +import { useMessages, useLogin, useTeamUrl } from 'components/hooks'; +import LinkButton from 'components/common/LinkButton'; export interface WebsitesTableProps { data: any[]; @@ -24,7 +24,7 @@ export function WebsitesTable({ const { formatMessage, labels } = useMessages(); const { user } = useLogin(); const breakpoint = useBreakpoint(); - const { renderTeamUrl } = useTeamContext(); + const { renderTeamUrl } = useTeamUrl(); return ( @@ -33,29 +33,25 @@ export function WebsitesTable({ {showActions && ( {row => { - const { id } = row; + const { id: websiteId } = row; return ( <> {allowEdit && (teamId || user.isAdmin) && ( - - - + + + + + {formatMessage(labels.edit)} + )} {allowView && ( - - - + + + + + {formatMessage(labels.view)} + )} ); diff --git a/src/app/(main)/teams/[teamId]/Team.tsx b/src/app/(main)/teams/[teamId]/Team.tsx index 631fdaf1..3e0ae852 100644 --- a/src/app/(main)/teams/[teamId]/Team.tsx +++ b/src/app/(main)/teams/[teamId]/Team.tsx @@ -1,10 +1,10 @@ 'use client'; -import { useTeam, useTeamContext } from 'components/hooks'; +import { useTeam, useTeamUrl } from 'components/hooks'; import { Loading } from 'react-basics'; -import notFound from 'app/not-found'; +import TeamContext from './TeamContext'; export function Team({ children }) { - const { teamId } = useTeamContext(); + const { teamId } = useTeamUrl(); const { data: team, isLoading } = useTeam(teamId); if (isLoading) { @@ -12,10 +12,10 @@ export function Team({ children }) { } if (!team) { - return notFound(); + return null; } - return children; + return {children}; } export default Team; diff --git a/src/app/(main)/teams/[teamId]/TeamContext.tsx b/src/app/(main)/teams/[teamId]/TeamContext.tsx new file mode 100644 index 00000000..fe1ec9c1 --- /dev/null +++ b/src/app/(main)/teams/[teamId]/TeamContext.tsx @@ -0,0 +1,6 @@ +'use client'; +import { createContext } from 'react'; + +export const TeamContext = createContext(null); + +export default TeamContext; diff --git a/src/app/(main)/websites/[websiteId]/event-data/EventDataValueTable.tsx b/src/app/(main)/websites/[websiteId]/event-data/EventDataValueTable.tsx index 793c3ab2..8b7c8070 100644 --- a/src/app/(main)/websites/[websiteId]/event-data/EventDataValueTable.tsx +++ b/src/app/(main)/websites/[websiteId]/event-data/EventDataValueTable.tsx @@ -1,11 +1,11 @@ 'use client'; -import { GridTable, GridColumn, Button, Icon, Text } from 'react-basics'; +import { GridTable, GridColumn, Icon, Text } from 'react-basics'; import { useMessages, useNavigation } from 'components/hooks'; -import Link from 'next/link'; import Icons from 'components/icons'; import PageHeader from 'components/layout/PageHeader'; import Empty from 'components/common/Empty'; import { DATA_TYPES } from 'lib/constants'; +import LinkButton from 'components/common/LinkButton'; export function EventDataValueTable({ data = [], event }: { data: any[]; event: string }) { const { formatMessage, labels } = useMessages(); @@ -14,14 +14,12 @@ export function EventDataValueTable({ data = [], event }: { data: any[]; event: const Title = () => { return ( <> - - - + + + + + {formatMessage(labels.back)} + {event} ); diff --git a/src/components/hooks/index.ts b/src/components/hooks/index.ts index 23ba94ff..79cefcfd 100644 --- a/src/components/hooks/index.ts +++ b/src/components/hooks/index.ts @@ -6,7 +6,9 @@ export * from './queries/useReport'; export * from './queries/useReports'; export * from './queries/useShareToken'; export * from './queries/useTeam'; +export * from './queries/useTeams'; export * from './queries/useTeamWebsites'; +export * from './queries/useTeamMembers'; export * from './queries/useUser'; export * from './queries/useUsers'; export * from './queries/useWebsite'; @@ -25,6 +27,6 @@ export * from './useLocale'; export * from './useMessages'; export * from './useNavigation'; export * from './useSticky'; -export * from './useTeamContext'; +export * from './useTeamUrl'; export * from './useTheme'; export * from './useTimezone'; diff --git a/src/components/hooks/queries/useReports.ts b/src/components/hooks/queries/useReports.ts index 99054dfd..77ebdbe9 100644 --- a/src/components/hooks/queries/useReports.ts +++ b/src/components/hooks/queries/useReports.ts @@ -1,10 +1,10 @@ 'use client'; import useApi from './useApi'; import useFilterQuery from './useFilterQuery'; -import useCache from 'store/cache'; +import useModified from 'store/modified'; export function useReports({ websiteId, teamId }: { websiteId?: string; teamId?: string }) { - const modified = useCache((state: any) => state?.reports); + const modified = useModified((state: any) => state?.reports); const { get, del, useMutation } = useApi(); const queryResult = useFilterQuery({ queryKey: ['reports', { websiteId, teamId, modified }], diff --git a/src/components/hooks/queries/useTeams.ts b/src/components/hooks/queries/useTeams.ts new file mode 100644 index 00000000..7628887f --- /dev/null +++ b/src/components/hooks/queries/useTeams.ts @@ -0,0 +1,18 @@ +'use client'; +import useApi from './useApi'; +import useFilterQuery from './useFilterQuery'; +import { useLogin } from 'components/hooks'; + +export function useTeams(userId?: string) { + const { get } = useApi(); + const { user } = useLogin(); + + return useFilterQuery({ + queryKey: ['teams', { userId: userId || user?.id }], + queryFn: (params: any) => { + return get(`/teams`, params); + }, + }); +} + +export default useTeams; diff --git a/src/components/hooks/queries/useUsers.ts b/src/components/hooks/queries/useUsers.ts index d7bc8074..05f273d8 100644 --- a/src/components/hooks/queries/useUsers.ts +++ b/src/components/hooks/queries/useUsers.ts @@ -1,11 +1,11 @@ 'use client'; import useApi from './useApi'; import useFilterQuery from './useFilterQuery'; -import useCache from 'store/cache'; +import useModified from 'store/modified'; export function useUsers() { const { get } = useApi(); - const modified = useCache((state: any) => state?.users); + const modified = useModified((state: any) => state?.users); return useFilterQuery({ queryKey: ['users', { modified }], diff --git a/src/components/hooks/queries/useWebsite.ts b/src/components/hooks/queries/useWebsite.ts index c29a6cd0..58b93ebb 100644 --- a/src/components/hooks/queries/useWebsite.ts +++ b/src/components/hooks/queries/useWebsite.ts @@ -3,8 +3,9 @@ import useApi from './useApi'; export function useWebsite(websiteId: string, options?: { [key: string]: any }) { const { get, useQuery } = useApi(); + return useQuery({ - queryKey: ['websites', websiteId], + queryKey: ['websites', { websiteId }], queryFn: () => get(`/websites/${websiteId}`), enabled: !!websiteId, ...options, diff --git a/src/components/hooks/queries/useWebsites.ts b/src/components/hooks/queries/useWebsites.ts index ed34193f..9449acc7 100644 --- a/src/components/hooks/queries/useWebsites.ts +++ b/src/components/hooks/queries/useWebsites.ts @@ -2,7 +2,9 @@ import { useApi } from './useApi'; import { useFilterQuery } from './useFilterQuery'; import { useLogin } from './useLogin'; -import useCache from 'store/cache'; +import useModified from 'store/modified'; + +const selector = (state: any) => state?.websites; export function useWebsites( { userId, teamId }: { userId?: string; teamId?: string }, @@ -10,7 +12,7 @@ export function useWebsites( ) { const { get } = useApi(); const { user } = useLogin(); - const modified = useCache((state: any) => state?.websites); + const modified = useModified(selector); return useFilterQuery({ queryKey: ['websites', { userId, teamId, modified, ...params }], diff --git a/src/components/hooks/useTeamContext.ts b/src/components/hooks/useTeamUrl.ts similarity index 84% rename from src/components/hooks/useTeamContext.ts rename to src/components/hooks/useTeamUrl.ts index 001c9cd1..3e1c3972 100644 --- a/src/components/hooks/useTeamContext.ts +++ b/src/components/hooks/useTeamUrl.ts @@ -1,7 +1,7 @@ 'use client'; import { usePathname } from 'next/navigation'; -export function useTeamContext(): { +export function useTeamUrl(): { teamId?: string; renderTeamUrl: (url: string) => string; } { @@ -15,4 +15,4 @@ export function useTeamContext(): { return { teamId, renderTeamUrl }; } -export default useTeamContext; +export default useTeamUrl; diff --git a/src/index.ts b/src/index.ts index 1c00d3f0..181fb49b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,33 +1,13 @@ -export * from 'components/hooks/queries/useApi'; -export * from 'components/hooks/queries/useConfig'; -export * from 'components/hooks/queries/useFilterQuery'; -export * from 'components/hooks/queries/useLogin'; -export * from 'components/hooks/queries/useShareToken'; -export * from 'components/hooks/queries/useUser'; -export * from 'components/hooks/queries/useWebsite'; +export * from 'components/hooks'; -export * from 'components/hooks/useDateRange'; -export * from 'components/hooks/useDocumentClick'; -export * from 'components/hooks/useEscapeKey'; -export * from 'components/hooks/useFilters'; -export * from 'components/hooks/useForceUpdate'; -export * from 'components/hooks/useFormat'; -export * from 'components/hooks/useLocale'; -export * from 'components/hooks/useMessages'; -export * from 'components/hooks/useNavigation'; -export * from 'components/hooks/useSticky'; -export * from 'components/hooks/useTheme'; -export * from 'components/hooks/useTeamContext'; -export * from 'components/hooks/useTimezone'; - -export * from './app/(main)/settings/teams/[teamId]/TeamEditForm'; -export * from './app/(main)/settings/teams/[teamId]/TeamMemberRemoveButton'; -export * from './app/(main)/settings/teams/[teamId]/TeamMembers'; -export * from './app/(main)/settings/teams/[teamId]/TeamMembersTable'; -export * from './app/(main)/settings/teams/[teamId]/TeamSettings'; -export * from './app/(main)/settings/teams/[teamId]/TeamWebsiteRemoveButton'; -export * from './app/(main)/settings/teams/[teamId]/TeamWebsites'; -export * from './app/(main)/settings/teams/[teamId]/TeamWebsitesTable'; +export * from 'app/(main)/settings/teams/[teamId]/TeamEditForm'; +export * from 'app/(main)/settings/teams/[teamId]/TeamMemberRemoveButton'; +export * from 'app/(main)/settings/teams/[teamId]/TeamMembers'; +export * from 'app/(main)/settings/teams/[teamId]/TeamMembersTable'; +export * from 'app/(main)/settings/teams/[teamId]/TeamSettings'; +export * from 'app/(main)/settings/teams/[teamId]/TeamWebsiteRemoveButton'; +export * from 'app/(main)/settings/teams/[teamId]/TeamWebsites'; +export * from 'app/(main)/settings/teams/[teamId]/TeamWebsitesTable'; export * from 'app/(main)/settings/teams/TeamAddForm'; export * from 'app/(main)/settings/teams/TeamDeleteForm'; export * from 'app/(main)/settings/teams/TeamsHeader'; @@ -37,11 +17,11 @@ export * from 'app/(main)/settings/teams/TeamsDataTable'; export * from 'app/(main)/settings/teams/TeamsTable'; export * from 'app/(main)/settings/teams/WebsiteTags'; -export * from './app/(main)/settings/websites/[websiteId]/ShareUrl'; -export * from './app/(main)/settings/websites/[websiteId]/TrackingCode'; -export * from './app/(main)/settings/websites/[websiteId]/WebsiteDeleteForm'; -export * from './app/(main)/settings/websites/[websiteId]/WebsiteEditForm'; -export * from './app/(main)/settings/websites/[websiteId]/WebsiteResetForm'; +export * from 'app/(main)/settings/websites/[websiteId]/ShareUrl'; +export * from 'app/(main)/settings/websites/[websiteId]/TrackingCode'; +export * from 'app/(main)/settings/websites/[websiteId]/WebsiteDeleteForm'; +export * from 'app/(main)/settings/websites/[websiteId]/WebsiteEditForm'; +export * from 'app/(main)/settings/websites/[websiteId]/WebsiteResetForm'; export * from 'app/(main)/settings/websites/WebsiteAddForm'; export * from 'app/(main)/settings/websites/WebsitesHeader'; diff --git a/src/store/modified.ts b/src/store/modified.ts new file mode 100644 index 00000000..272412eb --- /dev/null +++ b/src/store/modified.ts @@ -0,0 +1,9 @@ +import { create } from 'zustand'; + +const store = create(() => ({})); + +export function touch(key: string) { + store.setState({ [key]: Date.now() }); +} + +export default store;