diff --git a/src/app/(main)/settings/layout.tsx b/src/app/(main)/settings/layout.tsx index 42e9b62f..f738f883 100644 --- a/src/app/(main)/settings/layout.tsx +++ b/src/app/(main)/settings/layout.tsx @@ -20,7 +20,7 @@ export default function SettingsLayout({ children }) { const getKey = () => items.find(({ url }) => pathname === url)?.key; - if (cloudMode) { + if (cloudMode && pathname != '/settings/profile') { return null; } diff --git a/src/components/common/DataTable.tsx b/src/components/common/DataTable.tsx index ad76f18b..a3c63c0a 100644 --- a/src/components/common/DataTable.tsx +++ b/src/components/common/DataTable.tsx @@ -45,11 +45,11 @@ export function DataTable({ const noResults = Boolean(!isLoading && query && !hasData); const handleSearch = query => { - setParams({ ...params, query, page: params.query ? page : 1 }); + setParams({ ...params, query, page: params.page ? page : 1 }); }; const handlePageChange = page => { - setParams({ ...params, page }); + setParams({ ...params, query, page }); }; if (error) { diff --git a/src/components/hooks/useFilterQuery.ts b/src/components/hooks/useFilterQuery.ts index 1879180d..37c28b7e 100644 --- a/src/components/hooks/useFilterQuery.ts +++ b/src/components/hooks/useFilterQuery.ts @@ -1,7 +1,8 @@ import { useState } from 'react'; import { useApi } from 'components/hooks/useApi'; +import { UseQueryOptions } from '@tanstack/react-query'; -export function useFilterQuery(key: any[], fn, options?: any) { +export function useFilterQuery(key: any[], fn, options?: UseQueryOptions) { const [params, setParams] = useState({ query: '', page: 1, diff --git a/src/pages/api/reports/index.ts b/src/pages/api/reports/index.ts index 2d59c9d6..82902aef 100644 --- a/src/pages/api/reports/index.ts +++ b/src/pages/api/reports/index.ts @@ -50,10 +50,11 @@ export default async ( } = req.auth; if (req.method === 'GET') { - const { page, query } = req.query; + const { page, query, pageSize } = req.query; const data = await getReportsByUserId(userId, { page, + pageSize: +pageSize || undefined, query, includeTeams: true, }); diff --git a/src/pages/api/teams/[id]/users/index.ts b/src/pages/api/teams/[id]/users/index.ts index c3181e6a..4915ad7f 100644 --- a/src/pages/api/teams/[id]/users/index.ts +++ b/src/pages/api/teams/[id]/users/index.ts @@ -5,6 +5,7 @@ import { NextApiRequestQueryBody, SearchFilter } from 'lib/types'; import { NextApiResponse } from 'next'; import { methodNotAllowed, ok, unauthorized } from 'next-basics'; import { getUsersByTeamId } from 'queries'; +import { pageInfo } from 'lib/schema'; export interface TeamUserRequestQuery extends SearchFilter { id: string; @@ -13,6 +14,7 @@ export interface TeamUserRequestQuery extends SearchFilter { const schema = { GET: yup.object().shape({ id: yup.string().uuid().required(), + ...pageInfo, }), }; @@ -30,11 +32,12 @@ export default async ( return unauthorized(res); } - const { query, page } = req.query; + const { query, page, pageSize } = req.query; const users = await getUsersByTeamId(teamId, { query, page, + pageSize: +pageSize || undefined, }); return ok(res, users); diff --git a/src/pages/api/teams/[id]/websites/index.ts b/src/pages/api/teams/[id]/websites/index.ts index 5ff8c665..4e754d20 100644 --- a/src/pages/api/teams/[id]/websites/index.ts +++ b/src/pages/api/teams/[id]/websites/index.ts @@ -41,7 +41,13 @@ export default async ( return unauthorized(res); } - const websites = await getWebsitesByTeamId(teamId, { ...req.query }); + const { page, query, pageSize } = req.query; + + const websites = await getWebsitesByTeamId(teamId, { + page, + query, + pageSize: +pageSize || undefined, + }); return ok(res, websites); } diff --git a/src/pages/api/teams/index.ts b/src/pages/api/teams/index.ts index 4a9f4bb4..e89b4ee8 100644 --- a/src/pages/api/teams/index.ts +++ b/src/pages/api/teams/index.ts @@ -35,11 +35,12 @@ export default async ( } = req.auth; if (req.method === 'GET') { - const { page, query } = req.query; + const { page, query, pageSize } = req.query; const results = await getTeamsByUserId(userId, { page, query, + pageSize: +pageSize || undefined, }); return ok(res, results); diff --git a/src/pages/api/users/[id]/teams.ts b/src/pages/api/users/[id]/teams.ts index bfa0d31a..cb5d4448 100644 --- a/src/pages/api/users/[id]/teams.ts +++ b/src/pages/api/users/[id]/teams.ts @@ -44,7 +44,7 @@ export default async ( const teams = await getTeamsByUserId(userId, { query, page, - pageSize, + pageSize: +pageSize || undefined, }); return ok(res, teams); diff --git a/src/pages/api/users/[id]/websites.ts b/src/pages/api/users/[id]/websites.ts index 4eb659c8..ab8fedfb 100644 --- a/src/pages/api/users/[id]/websites.ts +++ b/src/pages/api/users/[id]/websites.ts @@ -47,7 +47,7 @@ export default async ( const websites = await getWebsitesByUserId(userId, { page, - pageSize, + pageSize: +pageSize || undefined, query, orderBy, includeTeams, diff --git a/src/pages/api/users/index.ts b/src/pages/api/users/index.ts index b6d81271..de49a37b 100644 --- a/src/pages/api/users/index.ts +++ b/src/pages/api/users/index.ts @@ -44,9 +44,9 @@ export default async ( return unauthorized(res); } - const { page, query } = req.query; + const { page, query, pageSize } = req.query; - const users = await getUsers({ page, query }); + const users = await getUsers({ page, query, pageSize: +pageSize || undefined }); return ok(res, users); } diff --git a/src/pages/api/websites/[id]/reports.ts b/src/pages/api/websites/[id]/reports.ts index 971797f1..18e944fe 100644 --- a/src/pages/api/websites/[id]/reports.ts +++ b/src/pages/api/websites/[id]/reports.ts @@ -5,6 +5,7 @@ import { NextApiRequestQueryBody, SearchFilter } from 'lib/types'; import { NextApiResponse } from 'next'; import { methodNotAllowed, ok, unauthorized } from 'next-basics'; import { getReportsByWebsiteId } from 'queries'; +import { pageInfo } from 'lib/schema'; export interface ReportsRequestQuery extends SearchFilter { id: string; @@ -13,6 +14,7 @@ export interface ReportsRequestQuery extends SearchFilter { const schema = { GET: yup.object().shape({ id: yup.string().uuid().required(), + ...pageInfo, }), }; @@ -27,14 +29,15 @@ export default async ( const { id: websiteId } = req.query; if (req.method === 'GET') { - if (!(websiteId && (await canViewWebsite(req.auth, websiteId)))) { + if (!(await canViewWebsite(req.auth, websiteId))) { return unauthorized(res); } - const { page, query } = req.query; + const { page, query, pageSize } = req.query; const data = await getReportsByWebsiteId(websiteId, { page, + pageSize: +pageSize || undefined, query, });