Skip to content

Commit 0cf8316

Browse files
authored
Wrap cope points in suspense boundaries (#28)
1 parent 841a450 commit 0cf8316

File tree

3 files changed

+44
-34
lines changed

3 files changed

+44
-34
lines changed

{{cookiecutter.project_slug}}/frontend/app/login/page.tsx

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
"use client";
2-
3-
import { useAppDispatch, useAppSelector } from "../lib/hooks";
4-
import { login, loggedIn } from "../lib/slices/authSlice";
5-
import { useRouter, useSearchParams } from "next/navigation";
6-
import { tokenIsTOTP, tokenParser } from "../lib/utilities";
7-
import { Switch } from "@headlessui/react";
8-
import { useEffect, useState } from "react";
1+
"use client"
2+
3+
import { useAppDispatch, useAppSelector } from "../lib/hooks"
4+
import { login, loggedIn } from "../lib/slices/authSlice"
5+
import { useRouter, useSearchParams } from "next/navigation"
6+
import { tokenIsTOTP, tokenParser } from "../lib/utilities"
7+
import { Switch } from "@headlessui/react"
8+
import { Suspense, useEffect, useState } from "react"
99
import {
1010
FieldErrors,
1111
FieldValues,
@@ -101,12 +101,11 @@ function LoginMessage(oauth: boolean) {
101101
);
102102
}
103103

104-
export default function Page() {
105-
const [oauth, setOauth] = useState(false);
106-
const dispatch = useAppDispatch();
107-
const accessToken = useAppSelector((state) => state.tokens.access_token);
108-
const isLoggedIn = useAppSelector((state) => loggedIn(state));
109-
104+
function UnsuspendedPage() {
105+
const [oauth, setOauth] = useState(false)
106+
const dispatch = useAppDispatch()
107+
const accessToken = useAppSelector((state) => state.tokens.access_token)
108+
const isLoggedIn = useAppSelector((state) => loggedIn(state))
110109
const searchParams = useSearchParams();
111110
const router = useRouter();
112111

@@ -249,3 +248,7 @@ export default function Page() {
249248
</main>
250249
);
251250
}
251+
252+
export default function Page() {
253+
return <Suspense><UnsuspendedPage /></Suspense>
254+
}

{{cookiecutter.project_slug}}/frontend/app/page.tsx

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
"use client";
22

3-
import { ChevronRightIcon } from "@heroicons/react/20/solid";
4-
import Link from "next/link";
5-
import { useRouter, useSearchParams } from "next/navigation";
6-
import { useEffect } from "react";
7-
import { useAppDispatch, useAppSelector } from "./lib/hooks";
8-
import { loggedIn, magicLogin } from "./lib/slices/authSlice";
9-
import { tokenIsTOTP } from "./lib/utilities";
10-
import { token } from "./lib/slices/tokensSlice";
11-
3+
import { ChevronRightIcon } from "@heroicons/react/20/solid"
4+
import Link from "next/link"
5+
import { useRouter, useSearchParams } from "next/navigation"
6+
import { Suspense, useEffect } from "react"
7+
import { useAppDispatch, useAppSelector } from "./lib/hooks"
8+
import { loggedIn, magicLogin } from "./lib/slices/authSlice"
9+
import { tokenIsTOTP } from "./lib/utilities"
10+
import { token } from "./lib/slices/tokensSlice"
1211
const github = {
1312
name: "GitHub",
1413
href: "https://github.com/mongodb-labs/full-stack-fastapi-mongodb",
@@ -28,9 +27,9 @@ const github = {
2827
const redirectTOTP = "/totp";
2928
const redirectAfterLogin = "/";
3029

31-
export default function Page() {
32-
const router = useRouter();
33-
const query = useSearchParams();
30+
function UnsuspendedPage() {
31+
const router = useRouter()
32+
const query = useSearchParams()
3433

3534
const dispatch = useAppDispatch();
3635

@@ -180,3 +179,7 @@ export default function Page() {
180179
</main>
181180
);
182181
}
182+
183+
export default function Page() {
184+
return <Suspense><UnsuspendedPage /></Suspense>
185+
}

{{cookiecutter.project_slug}}/frontend/app/reset-password/page.tsx

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
"use client";
22

3-
import { useRouter, useSearchParams } from "next/navigation";
4-
import { useAppDispatch } from "../lib/hooks";
5-
import { useForm } from "react-hook-form";
6-
import { resetPassword } from "../lib/slices/authSlice";
7-
import { useEffect } from "react";
8-
import Image from "next/image";
3+
import { useRouter, useSearchParams } from "next/navigation"
4+
import { useAppDispatch } from "../lib/hooks"
5+
import { useForm } from "react-hook-form"
6+
import { resetPassword } from "../lib/slices/authSlice"
7+
import { Suspense, useEffect } from "react"
8+
import Image from "next/image"
99

1010
const schema = {
1111
password: { required: true, minLength: 8, maxLength: 64 },
@@ -34,8 +34,8 @@ const renderError = (type: LiteralUnion<keyof RegisterOptions, string>) => {
3434
}
3535
};
3636

37-
export default function ResetPassword() {
38-
const dispatch = useAppDispatch();
37+
function UnsuspendedResetPassword() {
38+
const dispatch = useAppDispatch()
3939

4040
const router = useRouter();
4141
const query = useSearchParams();
@@ -154,3 +154,7 @@ export default function ResetPassword() {
154154
</main>
155155
);
156156
}
157+
158+
export default function ResetPassword() {
159+
return <Suspense><UnsuspendedResetPassword /></Suspense>
160+
}

0 commit comments

Comments
 (0)