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;