Refactored fetching to use react-query.

This commit is contained in:
Mike Cao 2022-12-28 15:43:22 -08:00
parent 7bbed0e12b
commit c56f02c475
112 changed files with 255 additions and 492 deletions

View file

@ -1,4 +1,3 @@
import React from 'react';
import Layout from 'components/layout/Layout';
import { FormattedMessage } from 'react-intl';

View file

@ -20,7 +20,7 @@ export default async (
const { id: websiteId } = req.query;
if (req.method === 'GET') {
if (await canViewWebsite(req.auth, websiteId)) {
if (!(await canViewWebsite(req.auth, websiteId))) {
return unauthorized(res);
}

View file

@ -1,9 +1,9 @@
import { NextApiRequestQueryBody, WebsitePageviews } from 'lib/types';
import { canViewWebsite } from 'lib/auth';
import { useAuth, useCors } from 'lib/middleware';
import moment from 'moment-timezone';
import { NextApiResponse } from 'next';
import { badRequest, methodNotAllowed, ok, unauthorized } from 'next-basics';
import { NextApiRequestQueryBody, WebsitePageviews } from 'lib/types';
import { canViewWebsite } from 'lib/auth';
import { useAuth, useCors } from 'lib/middleware';
import { getPageviewStats } from 'queries';
const unitTypes = ['year', 'month', 'hour', 'day'];
@ -14,7 +14,7 @@ export interface WebsitePageviewRequestQuery {
startAt: number;
endAt: number;
unit: string;
tz: string;
timezone: string;
url?: string;
referrer?: string;
os?: string;
@ -35,7 +35,7 @@ export default async (
startAt,
endAt,
unit,
tz,
timezone,
url,
referrer,
os,
@ -52,7 +52,7 @@ export default async (
const startDate = new Date(+startAt);
const endDate = new Date(+endAt);
if (!moment.tz.zone(tz) || !unitTypes.includes(unit)) {
if (!moment.tz.zone(timezone) || !unitTypes.includes(unit)) {
return badRequest(res);
}
@ -60,7 +60,7 @@ export default async (
getPageviewStats(websiteId, {
startDate,
endDate,
timezone: tz,
timezone,
unit,
count: '*',
filters: {
@ -75,7 +75,7 @@ export default async (
getPageviewStats(websiteId, {
startDate,
endDate,
timezone: tz,
timezone,
unit,
count: 'distinct pageview.',
filters: {

View file

@ -1,4 +1,3 @@
import { Prisma } from '@prisma/client';
import { canCreateWebsite } from 'lib/auth';
import { uuid } from 'lib/crypto';
import { useAuth, useCors } from 'lib/middleware';
@ -40,7 +39,7 @@ export default async (
return unauthorized(res);
}
const data: Prisma.WebsiteUncheckedCreateInput = {
const data: any = {
id: uuid(),
name,
domain,

View file

@ -1,15 +1,11 @@
import React from 'react';
import Layout from 'components/layout/Layout';
import TestConsole from 'components/pages/TestConsole';
import useRequireLogin from 'hooks/useRequireLogin';
import useUser from 'hooks/useUser';
import { ROLES } from 'lib/constants';
export default function ConsolePage({ pageDisabled }) {
const { loading } = useRequireLogin();
const { user } = useUser();
const user = useUser();
if (pageDisabled || loading || user?.role !== ROLES.admin) {
if (pageDisabled || !user || !user.isAdmin) {
return null;
}

View file

@ -1,8 +1,6 @@
import React from 'react';
import { useRouter } from 'next/router';
import Layout from 'components/layout/Layout';
import Dashboard from 'components/pages/Dashboard';
import useRequireLogin from 'hooks/useRequireLogin';
import useUser from 'hooks/useUser';
import useConfig from 'hooks/useConfig';
@ -12,11 +10,10 @@ export default function DashboardPage() {
isReady,
asPath,
} = useRouter();
const { loading } = useRequireLogin();
const user = useUser();
const { adminDisabled } = useConfig();
if (adminDisabled || !user || !isReady || loading) {
if (adminDisabled || !user || !isReady) {
return null;
}

View file

@ -1,4 +1,3 @@
import React from 'react';
import Layout from 'components/layout/Layout';
import LoginForm from 'components/forms/LoginForm';

View file

@ -1,12 +1,11 @@
import Settings from 'components/pages/Settings';
import ProfileSettings from 'components/pages/ProfileSettings';
import useRequireLogin from 'hooks/useRequireLogin';
import React from 'react';
import useUser from 'hooks/useUser';
export default function TeamsPage() {
const { loading } = useRequireLogin();
const user = useUser();
if (loading) {
if (!user) {
return null;
}

View file

@ -1,12 +1,11 @@
import React from 'react';
import Layout from 'components/layout/Layout';
import RealtimeDashboard from 'components/pages/RealtimeDashboard';
import useRequireLogin from 'hooks/useRequireLogin';
import useUser from 'hooks/useUser';
export default function RealtimePage() {
const { loading } = useRequireLogin();
const user = useUser();
if (loading) {
if (!user) {
return null;
}

View file

@ -1,4 +1,3 @@
import React from 'react';
import { useRouter } from 'next/router';
import Layout from 'components/layout/Layout';
import WebsiteDetails from 'components/pages/WebsiteDetails';

View file

@ -1,7 +1,6 @@
import { useEffect } from 'react';
import { useRouter } from 'next/router';
import { setItem } from 'next-basics';
import { AUTH_TOKEN } from 'lib/constants';
import { setClientAuthToken } from 'lib/client';
export default function SingleSignOnPage() {
const router = useRouter();
@ -9,7 +8,7 @@ export default function SingleSignOnPage() {
useEffect(() => {
if (url && token) {
setItem(AUTH_TOKEN, token);
setClientAuthToken(token);
router.push(url);
}

View file

@ -1,15 +1,14 @@
import Settings from 'components/pages/Settings';
import TeamDetails from 'components/pages/TeamDetails';
import useRequireLogin from 'hooks/useRequireLogin';
import useUser from 'hooks/useUser';
import { useRouter } from 'next/router';
import React from 'react';
export default function TeamDetailPage() {
const { loading } = useRequireLogin();
const user = useUser();
const router = useRouter();
const { id } = router.query;
if (loading) {
if (!user) {
return null;
}

View file

@ -1,12 +1,11 @@
import Settings from 'components/pages/Settings';
import TeamsList from 'components/pages/TeamsList';
import useRequireLogin from 'hooks/useRequireLogin';
import React from 'react';
import useUser from 'hooks/useUser';
export default function TeamsPage() {
const { loading } = useRequireLogin();
const user = useUser();
if (loading) {
if (!user) {
return null;
}

View file

@ -1,15 +1,14 @@
import Settings from 'components/pages/Settings';
import UserSettings from 'components/pages/UserSettings';
import useRequireLogin from 'hooks/useRequireLogin';
import useUser from 'hooks/useUser';
import { useRouter } from 'next/router';
import React from 'react';
export default function TeamDetailPage() {
const { loading } = useRequireLogin();
const user = useUser();
const router = useRouter();
const { id } = router.query;
if (loading) {
if (!user) {
return null;
}

View file

@ -1,14 +1,14 @@
import Settings from 'components/pages/Settings';
import useConfig from 'hooks/useConfig';
import useRequireLogin from 'hooks/useRequireLogin';
import React from 'react';
import useUser from 'hooks/useUser';
import UsersList from 'components/pages/UsersList';
export default function UsersPage() {
const { loading } = useRequireLogin();
const user = useUser();
const { adminDisabled } = useConfig();
if (adminDisabled || loading) {
if (adminDisabled || !user) {
return null;
}

View file

@ -1,15 +1,14 @@
import React from 'react';
import { useRouter } from 'next/router';
import Layout from 'components/layout/Layout';
import WebsiteDetails from 'components/pages/WebsiteDetails';
import useRequireLogin from 'hooks/useRequireLogin';
import useUser from 'hooks/useUser';
export default function DetailsPage() {
const { loading } = useRequireLogin();
const user = useUser();
const router = useRouter();
const { id } = router.query;
if (!id || loading) {
if (!id || !user) {
return null;
}

View file

@ -1,15 +1,14 @@
import React from 'react';
import { useRouter } from 'next/router';
import WebsiteSettings from 'components/pages/WebsiteSettings';
import useRequireLogin from 'hooks/useRequireLogin';
import useUser from 'hooks/useUser';
import Settings from 'components/pages/Settings';
export default function WebsiteSettingsPage() {
const { loading } = useRequireLogin();
const user = useUser();
const router = useRouter();
const { id } = router.query;
if (!id || loading) {
if (!id || !user) {
return null;
}

View file

@ -1,14 +1,14 @@
import Settings from 'components/pages/Settings';
import useConfig from 'hooks/useConfig';
import useRequireLogin from 'hooks/useRequireLogin';
import React from 'react';
import useUser from 'hooks/useUser';
import WebsitesList from 'components/pages/WebsitesList';
export default function WebsitesPage() {
const { loading } = useRequireLogin();
const user = useUser();
const { adminDisabled } = useConfig();
if (adminDisabled || loading) {
if (adminDisabled || !user) {
return null;
}