Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Mike Cao 2023-10-15 20:24:44 -07:00
commit 8cb1c4ed7a
11 changed files with 29 additions and 14 deletions

View File

@ -20,7 +20,7 @@ export default function SettingsLayout({ children }) {
const getKey = () => items.find(({ url }) => pathname === url)?.key; const getKey = () => items.find(({ url }) => pathname === url)?.key;
if (cloudMode) { if (cloudMode && pathname != '/settings/profile') {
return null; return null;
} }

View File

@ -45,11 +45,11 @@ export function DataTable({
const noResults = Boolean(!isLoading && query && !hasData); const noResults = Boolean(!isLoading && query && !hasData);
const handleSearch = query => { const handleSearch = query => {
setParams({ ...params, query, page: params.query ? page : 1 }); setParams({ ...params, query, page: params.page ? page : 1 });
}; };
const handlePageChange = page => { const handlePageChange = page => {
setParams({ ...params, page }); setParams({ ...params, query, page });
}; };
if (error) { if (error) {

View File

@ -1,7 +1,8 @@
import { useState } from 'react'; import { useState } from 'react';
import { useApi } from 'components/hooks/useApi'; 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({ const [params, setParams] = useState({
query: '', query: '',
page: 1, page: 1,

View File

@ -50,10 +50,11 @@ export default async (
} = req.auth; } = req.auth;
if (req.method === 'GET') { if (req.method === 'GET') {
const { page, query } = req.query; const { page, query, pageSize } = req.query;
const data = await getReportsByUserId(userId, { const data = await getReportsByUserId(userId, {
page, page,
pageSize: +pageSize || undefined,
query, query,
includeTeams: true, includeTeams: true,
}); });

View File

@ -5,6 +5,7 @@ import { NextApiRequestQueryBody, SearchFilter } from 'lib/types';
import { NextApiResponse } from 'next'; import { NextApiResponse } from 'next';
import { methodNotAllowed, ok, unauthorized } from 'next-basics'; import { methodNotAllowed, ok, unauthorized } from 'next-basics';
import { getUsersByTeamId } from 'queries'; import { getUsersByTeamId } from 'queries';
import { pageInfo } from 'lib/schema';
export interface TeamUserRequestQuery extends SearchFilter { export interface TeamUserRequestQuery extends SearchFilter {
id: string; id: string;
@ -13,6 +14,7 @@ export interface TeamUserRequestQuery extends SearchFilter {
const schema = { const schema = {
GET: yup.object().shape({ GET: yup.object().shape({
id: yup.string().uuid().required(), id: yup.string().uuid().required(),
...pageInfo,
}), }),
}; };
@ -30,11 +32,12 @@ export default async (
return unauthorized(res); return unauthorized(res);
} }
const { query, page } = req.query; const { query, page, pageSize } = req.query;
const users = await getUsersByTeamId(teamId, { const users = await getUsersByTeamId(teamId, {
query, query,
page, page,
pageSize: +pageSize || undefined,
}); });
return ok(res, users); return ok(res, users);

View File

@ -41,7 +41,13 @@ export default async (
return unauthorized(res); 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); return ok(res, websites);
} }

View File

@ -35,11 +35,12 @@ export default async (
} = req.auth; } = req.auth;
if (req.method === 'GET') { if (req.method === 'GET') {
const { page, query } = req.query; const { page, query, pageSize } = req.query;
const results = await getTeamsByUserId(userId, { const results = await getTeamsByUserId(userId, {
page, page,
query, query,
pageSize: +pageSize || undefined,
}); });
return ok(res, results); return ok(res, results);

View File

@ -44,7 +44,7 @@ export default async (
const teams = await getTeamsByUserId(userId, { const teams = await getTeamsByUserId(userId, {
query, query,
page, page,
pageSize, pageSize: +pageSize || undefined,
}); });
return ok(res, teams); return ok(res, teams);

View File

@ -47,7 +47,7 @@ export default async (
const websites = await getWebsitesByUserId(userId, { const websites = await getWebsitesByUserId(userId, {
page, page,
pageSize, pageSize: +pageSize || undefined,
query, query,
orderBy, orderBy,
includeTeams, includeTeams,

View File

@ -44,9 +44,9 @@ export default async (
return unauthorized(res); 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); return ok(res, users);
} }

View File

@ -5,6 +5,7 @@ import { NextApiRequestQueryBody, SearchFilter } from 'lib/types';
import { NextApiResponse } from 'next'; import { NextApiResponse } from 'next';
import { methodNotAllowed, ok, unauthorized } from 'next-basics'; import { methodNotAllowed, ok, unauthorized } from 'next-basics';
import { getReportsByWebsiteId } from 'queries'; import { getReportsByWebsiteId } from 'queries';
import { pageInfo } from 'lib/schema';
export interface ReportsRequestQuery extends SearchFilter { export interface ReportsRequestQuery extends SearchFilter {
id: string; id: string;
@ -13,6 +14,7 @@ export interface ReportsRequestQuery extends SearchFilter {
const schema = { const schema = {
GET: yup.object().shape({ GET: yup.object().shape({
id: yup.string().uuid().required(), id: yup.string().uuid().required(),
...pageInfo,
}), }),
}; };
@ -27,14 +29,15 @@ export default async (
const { id: websiteId } = req.query; const { id: websiteId } = req.query;
if (req.method === 'GET') { if (req.method === 'GET') {
if (!(websiteId && (await canViewWebsite(req.auth, websiteId)))) { if (!(await canViewWebsite(req.auth, websiteId))) {
return unauthorized(res); return unauthorized(res);
} }
const { page, query } = req.query; const { page, query, pageSize } = req.query;
const data = await getReportsByWebsiteId(websiteId, { const data = await getReportsByWebsiteId(websiteId, {
page, page,
pageSize: +pageSize || undefined,
query, query,
}); });