From 2d9b1d79599e53f3239a8b1e39b8e86e0e6f4aa9 Mon Sep 17 00:00:00 2001 From: Ben Grant Date: Sun, 28 May 2023 19:24:35 +1000 Subject: [PATCH] Migrate extension Create page to Nextjs --- frontend/package.json | 1 - frontend/src/app/create/Redirect.tsx | 19 ++ frontend/src/app/create/page.tsx | 29 +++ frontend/src/app/how-to/page.tsx | 4 + frontend/src/app/layout.tsx | 4 - frontend/src/app/page.tsx | 4 + frontend/src/app/privacy/page.tsx | 4 + .../CalendarField/components/Month/Month.tsx | 8 +- .../components/Weekdays/Weekdays.tsx | 4 +- .../components/Content/Content.module.scss | 5 + frontend/src/components/Content/Content.tsx | 12 +- .../CreateForm/CreateForm.module.scss | 4 - .../src/components/CreateForm/CreateForm.tsx | 64 +++-- .../EventInfo/EventInfo.module.scss | 19 ++ .../components/EventInfo/EventInfo.tsx | 38 +++ .../src/components/Header/Header.module.scss | 11 + frontend/src/components/Header/Header.tsx | 7 +- frontend/src/components/Recents/Recents.tsx | 8 +- frontend/src/components/Settings/Settings.tsx | 31 ++- frontend/src/pages-old/Create/Create.jsx | 242 ------------------ .../src/pages-old/Create/Create.styles.js | 60 ----- frontend/src/pages-old/index.js | 7 - frontend/src/stores/settingsStore.ts | 15 +- frontend/yarn.lock | 5 - 24 files changed, 214 insertions(+), 391 deletions(-) create mode 100644 frontend/src/app/create/Redirect.tsx create mode 100644 frontend/src/app/create/page.tsx create mode 100644 frontend/src/components/CreateForm/components/EventInfo/EventInfo.module.scss create mode 100644 frontend/src/components/CreateForm/components/EventInfo/EventInfo.tsx delete mode 100644 frontend/src/pages-old/Create/Create.jsx delete mode 100644 frontend/src/pages-old/Create/Create.styles.js delete mode 100644 frontend/src/pages-old/index.js diff --git a/frontend/package.json b/frontend/package.json index e903838..5d9e442 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -16,7 +16,6 @@ "@microsoft/microsoft-graph-client": "^3.0.5", "accept-language": "^3.0.18", "gapi-script": "^1.2.0", - "goober": "^2.1.13", "hue-map": "^1.0.0", "i18next": "^22.5.0", "i18next-browser-languagedetector": "^7.0.1", diff --git a/frontend/src/app/create/Redirect.tsx b/frontend/src/app/create/Redirect.tsx new file mode 100644 index 0000000..a8c2a7c --- /dev/null +++ b/frontend/src/app/create/Redirect.tsx @@ -0,0 +1,19 @@ +'use client' + +import { useEffect } from 'react' +import { useRouter } from 'next/navigation' + +/** Check if the current page is running in an iframe, otherwise redirect home */ +const Redirect = () => { + const router = useRouter() + + useEffect(() => { + if (window.self === window.top) { + router.replace('/') + } + }, []) + + return null +} + +export default Redirect diff --git a/frontend/src/app/create/page.tsx b/frontend/src/app/create/page.tsx new file mode 100644 index 0000000..aff8856 --- /dev/null +++ b/frontend/src/app/create/page.tsx @@ -0,0 +1,29 @@ +import { Metadata } from 'next' + +import Content from '/src/components/Content/Content' +import CreateForm from '/src/components/CreateForm/CreateForm' +import Header from '/src/components/Header/Header' + +import Redirect from './Redirect' + +export const metadata: Metadata = { + title: 'Create a Crab Fit', +} + +/** + * Used in the Crab Fit browser extension, to be rendered only in an iframe + */ +const Page = async () => <> + + {/* @ts-expect-error Async Server Component */} +
+ + + + + + + + + +export default Page diff --git a/frontend/src/app/how-to/page.tsx b/frontend/src/app/how-to/page.tsx index 2f36355..1f502dd 100644 --- a/frontend/src/app/how-to/page.tsx +++ b/frontend/src/app/how-to/page.tsx @@ -6,6 +6,7 @@ import { range, rotateArray } from '@giraugh/tools' import AvailabilityViewer from '/src/components/AvailabilityViewer/AvailabilityViewer' import Button from '/src/components/Button/Button' import Content from '/src/components/Content/Content' +import Footer from '/src/components/Footer/Footer' import Header from '/src/components/Header/Header' import { P } from '/src/components/Paragraph/Text' import Section from '/src/components/Section/Section' @@ -80,6 +81,9 @@ const Page = async () => { + + {/* @ts-expect-error Async Server Component */} +