diff --git a/.eslintrc.json b/.eslintrc.json index 25e83d5a..f6d90cca 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -51,7 +51,8 @@ "@typescript-eslint/no-empty-function": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-var-requires": "off", - "@typescript-eslint/no-empty-interface": "off" + "@typescript-eslint/no-empty-interface": "off", + "@typescript-eslint/no-unused-vars": ["error", { "ignoreRestSiblings": true }] }, "globals": { "React": "writable" diff --git a/components/common/SettingsTable.js b/components/common/SettingsTable.js index e9491331..eb7a6411 100644 --- a/components/common/SettingsTable.js +++ b/components/common/SettingsTable.js @@ -1,4 +1,4 @@ -import EmptyPlaceholder from 'components/common/EmptyPlaceholder'; +import Empty from 'components/common/Empty'; import useMessages from 'hooks/useMessages'; import { useState } from 'react'; import { @@ -36,7 +36,7 @@ export function SettingsTable({ return ( <> - {showSearch && ( + {showSearch && !!value.length && ( )} {value.length === 0 && filterValue && ( - + )} {value.length > 0 && ( diff --git a/components/pages/reports/ReportTemplates.js b/components/pages/reports/ReportTemplates.js index 0f5e710d..57cb113e 100644 --- a/components/pages/reports/ReportTemplates.js +++ b/components/pages/reports/ReportTemplates.js @@ -30,7 +30,7 @@ function ReportItem({ title, description, url, icon }) { ); } -export function ReportTemplates() { +export function ReportTemplates({ showHeader = true }) { const { formatMessage, labels } = useMessages(); const reports = [ @@ -56,7 +56,7 @@ export function ReportTemplates() { return ( - + {showHeader && }
{reports.map(({ title, description, url, icon }) => { return ( diff --git a/components/pages/reports/ReportsPage.js b/components/pages/reports/ReportsPage.js index 95959832..7ae102b0 100644 --- a/components/pages/reports/ReportsPage.js +++ b/components/pages/reports/ReportsPage.js @@ -7,7 +7,7 @@ import { Button, Icon, Icons, Text } from 'react-basics'; import ReportsTable from './ReportsTable'; export function ReportsPage() { - const { formatMessage, labels, messages } = useMessages(); + const { formatMessage, labels } = useMessages(); const { reports, error, @@ -47,9 +47,7 @@ export function ReportsPage() { showDomain={true} /> )} - {!hasData && ( - - )} + {!hasData && } ); } diff --git a/components/pages/settings/teams/TeamWebsitesTable.js b/components/pages/settings/teams/TeamWebsitesTable.js index 564c8a78..f89a9166 100644 --- a/components/pages/settings/teams/TeamWebsitesTable.js +++ b/components/pages/settings/teams/TeamWebsitesTable.js @@ -55,11 +55,7 @@ export function TeamWebsitesTable({ {canRemove && ( - + )} ); diff --git a/components/pages/settings/users/UserWebsites.js b/components/pages/settings/users/UserWebsites.js index 709f6e4d..df8c9f57 100644 --- a/components/pages/settings/users/UserWebsites.js +++ b/components/pages/settings/users/UserWebsites.js @@ -1,24 +1,25 @@ +import Page from 'components/layout/Page'; import useApi from 'hooks/useApi'; import WebsitesTable from 'components/pages/settings/websites/WebsitesTable'; -import useMessages from 'hooks/useMessages'; import useApiFilter from 'hooks/useApiFilter'; export function UserWebsites({ userId }) { - const { formatMessage, messages } = useMessages(); const { filter, page, pageSize, handleFilterChange, handlePageChange, handlePageSizeChange } = useApiFilter(); const { get, useQuery } = useApi(); - const { data, isLoading } = useQuery(['user:websites', userId, filter, page, pageSize], () => - get(`/users/${userId}/websites`, { - filter, - page, - pageSize, - }), + const { data, isLoading, error } = useQuery( + ['user:websites', userId, filter, page, pageSize], + () => + get(`/users/${userId}/websites`, { + filter, + page, + pageSize, + }), ); const hasData = data && data.length !== 0; return ( -
+ {hasData && ( )} - {!hasData && formatMessage(messages.noDataAvailable)} -
+ ); } diff --git a/components/pages/settings/websites/WebsitesTable.js b/components/pages/settings/websites/WebsitesTable.js index 08c906aa..89898c81 100644 --- a/components/pages/settings/websites/WebsitesTable.js +++ b/components/pages/settings/websites/WebsitesTable.js @@ -1,7 +1,7 @@ -import EmptyPlaceholder from 'components/common/EmptyPlaceholder'; import Link from 'next/link'; import { Button, Text, Icon, Icons } from 'react-basics'; import SettingsTable from 'components/common/SettingsTable'; +import Empty from 'components/common/Empty'; import useMessages from 'hooks/useMessages'; import useConfig from 'hooks/useConfig'; import useUser from 'hooks/useUser'; @@ -15,7 +15,7 @@ export function WebsitesTable({ showTeam, showEditButton, }) { - const { formatMessage, labels, messages } = useMessages(); + const { formatMessage, labels } = useMessages(); const { openExternal } = useConfig(); const { user } = useUser(); @@ -82,7 +82,7 @@ export function WebsitesTable({ }} )} - {!showTable && } + {!showTable && } ); } diff --git a/components/pages/websites/WebsiteReportsPage.js b/components/pages/websites/WebsiteReportsPage.js index b04c50d1..be4ee800 100644 --- a/components/pages/websites/WebsiteReportsPage.js +++ b/components/pages/websites/WebsiteReportsPage.js @@ -1,5 +1,5 @@ -import EmptyPlaceholder from 'components/common/EmptyPlaceholder'; import Page from 'components/layout/Page'; +import Empty from 'components/common/Empty'; import ReportsTable from 'components/pages/reports/ReportsTable'; import { useMessages, useWebsiteReports } from 'hooks'; import Link from 'next/link'; @@ -7,7 +7,7 @@ import { Button, Flexbox, Icon, Icons, Text } from 'react-basics'; import WebsiteHeader from './WebsiteHeader'; export function WebsiteReportsPage({ websiteId }) { - const { formatMessage, labels, messages } = useMessages(); + const { formatMessage, labels } = useMessages(); const { reports, error, @@ -48,7 +48,7 @@ export function WebsiteReportsPage({ websiteId }) { filterValue={filter} /> )} - {!hasData && } + {!hasData && } ); } diff --git a/lib/prisma.ts b/lib/prisma.ts index 8fa7e8ae..a9832c28 100644 --- a/lib/prisma.ts +++ b/lib/prisma.ts @@ -185,9 +185,7 @@ function getPageFilters(filters: SearchFilter): [ orderBy: string; }, ] { - const pageSize = filters?.pageSize || 10; - const page = filters?.page || 1; - const orderBy = filters?.orderBy; + const { pageSize = 10, page = 1, orderBy } = filters || {}; return [ { diff --git a/queries/admin/user.ts b/queries/admin/user.ts index ca459b9f..dfe8ea28 100644 --- a/queries/admin/user.ts +++ b/queries/admin/user.ts @@ -37,10 +37,10 @@ export async function getUserByUsername(username: string, options: GetUserOption } export async function getUsers( - UserSearchFilter: UserSearchFilter, + searchFilter: UserSearchFilter, options?: { include?: Prisma.UserInclude }, ): Promise> { - const { teamId, filter, filterType = USER_FILTER_TYPES.all } = UserSearchFilter; + const { teamId, filter, filterType = USER_FILTER_TYPES.all } = searchFilter; const mode = prisma.getSearchMode(); const where: Prisma.UserWhereInput = { @@ -67,9 +67,10 @@ export async function getUsers( }, }), }; + const [pageFilters, getParameters] = prisma.getPageFilters({ orderBy: 'username', - ...UserSearchFilter, + ...searchFilter, }); const users = await prisma.client.user @@ -82,12 +83,9 @@ export async function getUsers( ...(options?.include && { include: options.include }), }) .then(a => { - return a.map(a => { - const { password, ...rest } = a; - - return rest; - }); + return a.map(({ password, ...rest }) => rest); }); + const count = await prisma.client.user.count({ where: { ...where,