From 35d09aa133b660015466a5f3f6a4cc0aff2bf5df Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Mon, 20 Feb 2023 19:57:41 +0100 Subject: [PATCH 1/9] feat: Add LoadingPage --- declarations.d.ts | 1 + package.json | 1 + src/App.tsx | 4 +- src/assets/logo.svg | 66 ++++++++ src/components/widgets/LoadingPage.tsx | 30 ++++ src/routes/RedirectRoute.tsx | 20 +++ vite.config.ts | 3 +- yarn.lock | 224 ++++++++++++++++++++++++- 8 files changed, 343 insertions(+), 6 deletions(-) create mode 100644 declarations.d.ts create mode 100644 src/assets/logo.svg create mode 100644 src/components/widgets/LoadingPage.tsx create mode 100644 src/routes/RedirectRoute.tsx diff --git a/declarations.d.ts b/declarations.d.ts new file mode 100644 index 0000000..d816124 --- /dev/null +++ b/declarations.d.ts @@ -0,0 +1 @@ +/// diff --git a/package.json b/package.json index deae16f..d3029fa 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "sort-array": "^4.1.5", "ua-parser-js": "^1.0.33", "use-system-theme": "^0.1.1", + "vite-plugin-svgr": "^2.4.0", "yup": "^0.32.11", "yup-locales": "^1.2.10" }, diff --git a/src/App.tsx b/src/App.tsx index 83d9842..19b0f7b 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -20,7 +20,7 @@ import GlobalSettingsRoute from "~/routes/GlobalSettingsRoute" import I18nHandler from "./I18nHandler" import LoginRoute from "~/routes/LoginRoute" import LogoutRoute from "~/routes/LogoutRoute" -import OverviewRoute from "~/routes/OverviewRoute" +import RedirectRoute from "~/routes/RedirectRoute" import ReportDetailRoute from "~/routes/ReportDetailRoute" import ReportsRoute from "~/routes/ReportsRoute" import ReservedAliasDetailRoute from "~/routes/ReservedAliasDetailRoute" @@ -73,7 +73,7 @@ const router = createBrowserRouter([ children: [ { path: "/", - element: , + element: , }, { path: "/aliases", diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 0000000..cc839a0 --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/widgets/LoadingPage.tsx b/src/components/widgets/LoadingPage.tsx new file mode 100644 index 0000000..8b6ab0a --- /dev/null +++ b/src/components/widgets/LoadingPage.tsx @@ -0,0 +1,30 @@ +import {ReactElement} from "react" +import {useTranslation} from "react-i18next" + +import {Grid, Typography} from "@mui/material" + +import {ReactComponent as Logo} from "~/assets/logo.svg" + +export default function LoadingPage(): ReactElement { + const {t} = useTranslation() + + return ( + + + + + + + {t("general.loading")} + + + + ) +} diff --git a/src/routes/RedirectRoute.tsx b/src/routes/RedirectRoute.tsx new file mode 100644 index 0000000..a88fc18 --- /dev/null +++ b/src/routes/RedirectRoute.tsx @@ -0,0 +1,20 @@ +import {ReactElement, useLayoutEffect} from "react" +import {useNavigate} from "react-router-dom" + +import {useUser} from "~/hooks" +import LoadingPage from "~/components/widgets/LoadingPage" + +export default function RedirectRoute(): ReactElement { + const navigate = useNavigate() + const user = useUser() + + useLayoutEffect(() => { + if (user) { + navigate("/aliases") + } else { + navigate("/login") + } + }, [user]) + + return +} diff --git a/vite.config.ts b/vite.config.ts index 1e3d62a..392df65 100755 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,12 +1,13 @@ import * as path from "path" import {defineConfig} from "vite" +import viteSvgr from "vite-plugin-svgr" import {viteCommonjs} from "@originjs/vite-plugin-commonjs" import react from "@vitejs/plugin-react" // https://vitejs.dev/config/ export default defineConfig({ - plugins: [viteCommonjs(), react()], + plugins: [viteCommonjs(), react(), viteSvgr()], resolve: { alias: { "~": path.resolve(__dirname, "src"), diff --git a/yarn.lock b/yarn.lock index e30663e..1922500 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@ampproject/remapping@^2.1.0": +"@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== @@ -69,6 +69,27 @@ json5 "^2.2.1" semver "^6.3.0" +"@babel/core@^7.19.6": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13" + integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.21.0" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-module-transforms" "^7.21.0" + "@babel/helpers" "^7.21.0" + "@babel/parser" "^7.21.0" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + "@babel/generator@^7.19.3", "@babel/generator@^7.19.4": version "7.19.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.5.tgz#da3f4b301c8086717eee9cab14da91b1fa5dcca7" @@ -87,6 +108,16 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" +"@babel/generator@^7.21.0": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.21.0.tgz#45d731e84f506ce02a7b22b9ba5861ea88eef64f" + integrity sha512-z/zN3SePOtxN1/vPFdqrkuJGCD2Vx469+dSbNRD+4TF2+6e4Of5exHqAtcfL/2Nwu0RN0QsFwjyDBFwdUMzNSA== + dependencies: + "@babel/types" "^7.21.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -128,6 +159,14 @@ "@babel/template" "^7.18.10" "@babel/types" "^7.19.0" +"@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== + dependencies: + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" + "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" @@ -170,6 +209,20 @@ "@babel/traverse" "^7.20.10" "@babel/types" "^7.20.7" +"@babel/helper-module-transforms@^7.21.0": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.0.tgz#89a8f86ad748870e3d024e470b2e8405e869db67" + integrity sha512-eD/JQ21IG2i1FraJnTMbUarAUkA7G988ofehG5MDCRXaUU91rEBJuCeSoou2Sk1y4RbLYXzqEg1QLwEmRU4qcQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" @@ -234,6 +287,15 @@ "@babel/traverse" "^7.20.7" "@babel/types" "^7.20.7" +"@babel/helpers@^7.21.0": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" + integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== + dependencies: + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" + "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" @@ -253,6 +315,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.4.tgz#03c4339d2b8971eb3beca5252bafd9b9f79db3dc" integrity sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA== +"@babel/parser@^7.21.0": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.21.0.tgz#cc09288743b867763cb927ba101ccdf0b600b7e4" + integrity sha512-ONjtg4renj14A9pj3iA5T5+r5Eijxbr2eNIkMBTC74occDSsRZUpe8vowmowAjFR1imWlkD8eEmjYXiREZpGZg== + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -447,6 +514,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.21.0": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.0.tgz#0e1807abd5db98e6a19c204b80ed1e3f5bca0edc" + integrity sha512-Xdt2P1H4LKTO8ApPfnO1KmzYMFpp7D/EinoXzLYN/cHcBNrVCAkAtGUcXnHXrl/VGktureU6fkQrHSBE2URfoA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.21.0" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.21.0" + "@babel/types" "^7.21.0" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" @@ -465,6 +548,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.20.0", "@babel/types@^7.21.0": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.21.0.tgz#1da00d89c2f18b226c9207d96edbeb79316a1819" + integrity sha512-uR7NWq2VNFnDi7EYqiRz2Jv/VQIu38tu64Zy8TX2nQFQ6etJ9V/Rr2msW8BS132mum2rL645qpDrLtAJtVpuow== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -867,7 +959,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.17" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== @@ -1050,6 +1142,15 @@ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.0.2.tgz#1c17eadb2fa77f80a796ad5ea9bf108e6993ef06" integrity sha512-GRSOFhJzjGN+d4sKHTMSvNeUPoZiDHWmRnXfzaxrqe7dE/Nzlc8BiMSJdLDESZlndM7jIUrZ/F4yWqVYlI0rwQ== +"@rollup/pluginutils@^5.0.2": + version "5.0.2" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" + integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + "@sinclair/typebox@^0.24.1": version "0.24.51" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" @@ -1069,6 +1170,89 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@svgr/babel-plugin-add-jsx-attribute@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" + integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== + +"@svgr/babel-plugin-remove-jsx-attribute@*": + version "6.5.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.5.0.tgz#652bfd4ed0a0699843585cda96faeb09d6e1306e" + integrity sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA== + +"@svgr/babel-plugin-remove-jsx-empty-expression@*": + version "6.5.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.5.0.tgz#4b78994ab7d39032c729903fc2dd5c0fa4565cb8" + integrity sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" + integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== + +"@svgr/babel-plugin-svg-dynamic-title@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" + integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== + +"@svgr/babel-plugin-svg-em-dimensions@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" + integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== + +"@svgr/babel-plugin-transform-react-native-svg@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" + integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== + +"@svgr/babel-plugin-transform-svg-component@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" + integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== + +"@svgr/babel-preset@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" + integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" + "@svgr/babel-plugin-remove-jsx-attribute" "*" + "@svgr/babel-plugin-remove-jsx-empty-expression" "*" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1" + "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1" + "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1" + "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" + "@svgr/babel-plugin-transform-svg-component" "^6.5.1" + +"@svgr/core@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" + integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== + dependencies: + "@babel/core" "^7.19.6" + "@svgr/babel-preset" "^6.5.1" + "@svgr/plugin-jsx" "^6.5.1" + camelcase "^6.2.0" + cosmiconfig "^7.0.1" + +"@svgr/hast-util-to-babel-ast@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" + integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw== + dependencies: + "@babel/types" "^7.20.0" + entities "^4.4.0" + +"@svgr/plugin-jsx@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" + integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw== + dependencies: + "@babel/core" "^7.19.6" + "@svgr/babel-preset" "^6.5.1" + "@svgr/hast-util-to-babel-ast" "^6.5.1" + svg-parser "^2.0.4" + "@tanstack/query-core@4.12.0": version "4.12.0" resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.12.0.tgz#0e96adcfe182efc4ea4c21802f7596d56c6cd60a" @@ -1144,6 +1328,11 @@ resolved "https://registry.yarnpkg.com/@types/deep-equal/-/deep-equal-1.0.1.tgz#71cfabb247c22bcc16d536111f50c0ed12476b03" integrity sha512-mMUu4nWHLBlHtxXY17Fg6+ucS/MnndyOWyOe7MmwkoMYxvfQU2ajtRaEvqSUv+aVkMqH/C0NCI8UoVfRNQ10yg== +"@types/estree@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== + "@types/graceful-fs@^4.1.3": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -1934,6 +2123,17 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cosmiconfig@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + cross-fetch@3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" @@ -2673,6 +2873,11 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -3858,7 +4063,7 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json5@^2.2.1: +json5@^2.2.1, json5@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -4965,6 +5170,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +svg-parser@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -5202,6 +5412,14 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" +vite-plugin-svgr@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-2.4.0.tgz#9b14953955e79893ea7718089b9777a494e38fc6" + integrity sha512-q+mJJol6ThvqkkJvvVFEndI4EaKIjSI0I3jNFgSoC9fXAz1M7kYTVUin8fhUsFojFDKZ9VHKtX6NXNaOLpbsHA== + dependencies: + "@rollup/pluginutils" "^5.0.2" + "@svgr/core" "^6.5.1" + vite@^3.1.0: version "3.1.8" resolved "https://registry.yarnpkg.com/vite/-/vite-3.1.8.tgz#fa29144167d19b773baffd65b3972ea4c12359c9" From 86e6e430cc2a7044cfcc6ce5819e006d89403710 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Mon, 20 Feb 2023 20:03:43 +0100 Subject: [PATCH 2/9] feat: Add ErrorPage --- public/locales/en-US/translation.json | 3 ++- src/App.tsx | 3 ++- src/components/widgets/ErrorPage.tsx | 27 +++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 src/components/widgets/ErrorPage.tsx diff --git a/public/locales/en-US/translation.json b/public/locales/en-US/translation.json index ab1c5aa..d051fab 100644 --- a/public/locales/en-US/translation.json +++ b/public/locales/en-US/translation.json @@ -17,7 +17,8 @@ "actionNotUndoable": "This action cannot be undone!", "copyError": "Copying to clipboard did not work. Please copy the text manually.", "experimentalFeature": "This is an experimental feature.", - "deletedSuccessfully": "Deleted successfully!" + "deletedSuccessfully": "Deleted successfully!", + "appError": "We are sorry but there was an error. Please try again later." }, "routes": { diff --git a/src/App.tsx b/src/App.tsx index 19b0f7b..03a1314 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -16,6 +16,7 @@ import AuthenticatedRoute from "~/routes/AuthenticatedRoute" import CompleteAccountRoute from "~/routes/CompleteAccountRoute" import CreateReservedAliasRoute from "~/routes/CreateReservedAliasRoute" import EnterDecryptionPassword from "~/routes/EnterDecryptionPassword" +import ErrorPage from "~/components/widgets/ErrorPage" import GlobalSettingsRoute from "~/routes/GlobalSettingsRoute" import I18nHandler from "./I18nHandler" import LoginRoute from "~/routes/LoginRoute" @@ -35,7 +36,7 @@ const router = createBrowserRouter([ { path: "/", element: , - errorElement:
, + errorElement: , children: [ { path: "/auth", diff --git a/src/components/widgets/ErrorPage.tsx b/src/components/widgets/ErrorPage.tsx new file mode 100644 index 0000000..ee66ff3 --- /dev/null +++ b/src/components/widgets/ErrorPage.tsx @@ -0,0 +1,27 @@ +import {ReactElement} from "react" +import {useTranslation} from "react-i18next" +import {IoSad} from "react-icons/io5" + +import {Grid, Typography} from "@mui/material" + +export default function ErrorPage(): ReactElement { + const {t} = useTranslation() + + return ( + + + + + + {t("general.appError")} + + + ) +} From 4ce5837bf4d85b65134fbc31dc3498cc2375c010 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Mon, 20 Feb 2023 20:04:03 +0100 Subject: [PATCH 3/9] fix: Improve maxWidth styling on LoadingPage --- src/components/widgets/LoadingPage.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/widgets/LoadingPage.tsx b/src/components/widgets/LoadingPage.tsx index 8b6ab0a..92deb2a 100644 --- a/src/components/widgets/LoadingPage.tsx +++ b/src/components/widgets/LoadingPage.tsx @@ -20,10 +20,8 @@ export default function LoadingPage(): ReactElement { - - - {t("general.loading")} - + + {t("general.loading")} ) From d8c86584014d18c237d1d5e22a0d81bb18050f4d Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Mon, 20 Feb 2023 20:05:53 +0100 Subject: [PATCH 4/9] fix: Cache server settings in sessionStorage --- src/apis/get-server-settings.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/apis/get-server-settings.ts b/src/apis/get-server-settings.ts index b6bb6f1..0ad0778 100644 --- a/src/apis/get-server-settings.ts +++ b/src/apis/get-server-settings.ts @@ -2,5 +2,15 @@ import {ServerSettings} from "~/server-types" import {client} from "~/constants/axios-client" export default async function getServerSettings(): Promise { - return (await client.get(`${import.meta.env.VITE_SERVER_BASE_URL}/v1/server/settings`)).data + const savedData = sessionStorage.getItem("server-settings") + + if (savedData) { + return JSON.parse(savedData) + } + + const {data} = await client.get(`${import.meta.env.VITE_SERVER_BASE_URL}/v1/server/settings`) + + sessionStorage.setItem("server-settings", JSON.stringify(data)) + + return data } From c9b06e78f892ab266ed40c8423eeaafe3cf58a7b Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Mon, 20 Feb 2023 20:07:34 +0100 Subject: [PATCH 5/9] fix: use correct background color on initial loading --- index.html | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/index.html b/index.html index e0d1c84..c8fbd7f 100755 --- a/index.html +++ b/index.html @@ -5,6 +5,17 @@ Vite + React + TS +
From f5fe9ea2e27f2a27cc44977cbf5605cd5a5ddd41 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Mon, 20 Feb 2023 20:20:36 +0100 Subject: [PATCH 6/9] fix: theme --- package.json | 2 +- src/App.tsx | 14 +++++++++++--- src/constants/themes.ts | 4 +++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d3029fa..a097505 100644 --- a/package.json +++ b/package.json @@ -51,11 +51,11 @@ "sort-array": "^4.1.5", "ua-parser-js": "^1.0.33", "use-system-theme": "^0.1.1", - "vite-plugin-svgr": "^2.4.0", "yup": "^0.32.11", "yup-locales": "^1.2.10" }, "devDependencies": { + "vite-plugin-svgr": "^2.4.0", "@peculiar/webcrypto": "^1.4.1", "@types/crypto-js": "^4.1.1", "@types/date-fns": "^2.6.0", diff --git a/src/App.tsx b/src/App.tsx index 03a1314..b39de0f 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -3,11 +3,11 @@ import {SnackbarProvider} from "notistack" import React, {ReactElement} from "react" import {QueryClientProvider} from "@tanstack/react-query" -import {CssBaseline, ThemeProvider} from "@mui/material" +import {CssBaseline, Theme, ThemeProvider} from "@mui/material" import {queryClient} from "~/constants/react-query" import {getServerSettings} from "~/apis" -import {lightTheme} from "~/constants/themes" +import {darkTheme, lightTheme} from "~/constants/themes" import AdminRoute from "~/routes/AdminRoute" import AliasDetailRoute from "~/routes/AliasDetailRoute" import AliasesRoute from "~/routes/AliasesRoute" @@ -30,6 +30,7 @@ import RootRoute from "~/routes/Root" import SettingsRoute from "~/routes/SettingsRoute" import SignupRoute from "~/routes/SignupRoute" import VerifyEmailRoute from "~/routes/VerifyEmailRoute" +import useSystemTheme, {SystemTheme} from "use-system-theme" import "./init-i18n" const router = createBrowserRouter([ @@ -134,11 +135,18 @@ const router = createBrowserRouter([ }, ]) +const THEME_THEME_MAP: Record = { + light: lightTheme, + dark: darkTheme, +} + export default function App(): ReactElement { + const theme = useSystemTheme() + return ( - + diff --git a/src/constants/themes.ts b/src/constants/themes.ts index 175bbc7..29f854f 100644 --- a/src/constants/themes.ts +++ b/src/constants/themes.ts @@ -1,6 +1,8 @@ import {createTheme} from "@mui/material" -export const lightTheme = createTheme({ +export const lightTheme = createTheme() + +export const darkTheme = createTheme({ palette: { mode: "dark", secondary: { From 27c241a1afc7099299f2550e54eff16f1f639795 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Mon, 20 Feb 2023 20:26:52 +0100 Subject: [PATCH 7/9] fix: types --- declarations.d.ts | 1 - tsconfig.json | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) delete mode 100644 declarations.d.ts diff --git a/declarations.d.ts b/declarations.d.ts deleted file mode 100644 index d816124..0000000 --- a/declarations.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/tsconfig.json b/tsconfig.json index 8240617..ccfe480 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,6 +14,9 @@ "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, + "types": [ + "vite-plugin-svgr/client", + ], "jsx": "react-jsx", "baseUrl": "./src", "paths": { From 6d6352261c9eec2efd5323fd819ff572307dc4f8 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Mon, 20 Feb 2023 20:29:28 +0100 Subject: [PATCH 8/9] fix: types --- package.json | 6 +++--- yarn.lock | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index a097505..1ffb141 100644 --- a/package.json +++ b/package.json @@ -55,14 +55,13 @@ "yup-locales": "^1.2.10" }, "devDependencies": { - "vite-plugin-svgr": "^2.4.0", "@peculiar/webcrypto": "^1.4.1", "@types/crypto-js": "^4.1.1", "@types/date-fns": "^2.6.0", "@types/deep-equal": "^1.0.1", "@types/jest": "^29.2.4", "@types/lodash": "^4.14.191", - "@types/node": "^18.11.18", + "@types/node": "^18.14.0", "@types/openpgp": "^4.4.18", "@types/react-dom": "^18.0.11", "@types/react-icons": "^3.0.0", @@ -85,7 +84,8 @@ "prettier": "^2.7.1", "ts-jest": "^29.0.3", "typescript": "^4.6.4", - "vite": "^3.1.0" + "vite": "^3.1.0", + "vite-plugin-svgr": "^2.4.0" }, "browserslist": [ "defaults", diff --git a/yarn.lock b/yarn.lock index 1922500..6064da2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1406,10 +1406,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.5.tgz#6a31f820c1077c3f8ce44f9e203e68a176e8f59e" integrity sha512-Bq7G3AErwe5A/Zki5fdD3O6+0zDChhg671NfPjtIcbtzDNZTv4NPKMRFr7gtYPG7y+B8uTiNK4Ngd9T0FTar6Q== -"@types/node@^18.11.18": - version "18.11.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" - integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== +"@types/node@^18.14.0": + version "18.14.0" + resolved "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz#94c47b9217bbac49d4a67a967fdcdeed89ebb7d0" + integrity sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A== "@types/openpgp@^4.4.18": version "4.4.18" From 70f14aa81ad55b1616282533ec830053d46388e8 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Mon, 20 Feb 2023 20:31:06 +0100 Subject: [PATCH 9/9] fix: types --- tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tsconfig.json b/tsconfig.json index ccfe480..707c558 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,6 +16,7 @@ "noEmit": true, "types": [ "vite-plugin-svgr/client", + "@types/node", ], "jsx": "react-jsx", "baseUrl": "./src",