diff --git a/__tests__/ciphers.test.ts b/__tests__/ciphers.test.ts index 5a81824..64b1592 100644 --- a/__tests__/ciphers.test.ts +++ b/__tests__/ciphers.test.ts @@ -1,5 +1,5 @@ import {decryptString, encryptString} from "../src/utils" -import getEncryptionPassword from "../src/utils/get-encryption-password" +import getEncryptionPassword from "../src/utils/crypto/get-encryption-password" describe("ciphers", () => { const email = "test@kleckrelay.example" diff --git a/__tests__/get-encryption-password.test.ts b/__tests__/get-encryption-password.test.ts index 36f09a0..24ea5d5 100644 --- a/__tests__/get-encryption-password.test.ts +++ b/__tests__/get-encryption-password.test.ts @@ -1,4 +1,4 @@ -import getEncryptionPassword from "../src/utils/get-encryption-password" +import getEncryptionPassword from "../src/utils/crypto/get-encryption-password" describe("getEncryptionPassword", () => { it("is defined", () => { diff --git a/src/LoadingScreen.tsx b/src/LoadingScreen.tsx deleted file mode 100644 index a141400..0000000 --- a/src/LoadingScreen.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React, {ReactElement} from "react" - -import {Typography} from "@mui/material" - -export default function LoadingScreen(): ReactElement { - return ( - - Loading... - - ) -} diff --git a/src/apis/helpers/decrypt-alias-notes.ts b/src/apis/helpers/decrypt-alias-notes.ts index 2aed5b2..d897c66 100644 --- a/src/apis/helpers/decrypt-alias-notes.ts +++ b/src/apis/helpers/decrypt-alias-notes.ts @@ -1,8 +1,8 @@ import update from "immutability-helper" import {AliasNote} from "~/server-types" -import {AuthContextType} from "~/AuthContext/AuthContext" import {DEFAULT_ALIAS_NOTE} from "~/constants/values" +import {AuthContextType} from "~/components" export default function decryptAliasNotes( encryptedNotes: string, diff --git a/src/apis/helpers/decrypt-report.ts b/src/apis/helpers/decrypt-report.ts index 22e81e7..e77eee9 100644 --- a/src/apis/helpers/decrypt-report.ts +++ b/src/apis/helpers/decrypt-report.ts @@ -2,7 +2,7 @@ import camelcaseKeys from "camelcase-keys" import update from "immutability-helper" import {DecryptedReportContent} from "~/server-types" -import {AuthContextType} from "~/AuthContext/AuthContext" +import {AuthContextType} from "~/components" export default async function decryptReport( encryptedContent: string, diff --git a/src/AppLoadingScreen/AppLoadingScreen.tsx b/src/components/AppLoadingScreen/AppLoadingScreen.tsx similarity index 90% rename from src/AppLoadingScreen/AppLoadingScreen.tsx rename to src/components/AppLoadingScreen/AppLoadingScreen.tsx index c983cff..bf3b6c8 100644 --- a/src/AppLoadingScreen/AppLoadingScreen.tsx +++ b/src/components/AppLoadingScreen/AppLoadingScreen.tsx @@ -1,8 +1,6 @@ import {ReactElement, useMemo} from "react" import {useAsyncFn} from "react-use" -import LoadingScreen from "~/LoadingScreen" - import AppLoadingScreenContext, {AppLoadingScreenContextType} from "./AppLoadingScreenContext" export interface AppLoadingScreenProps { @@ -20,7 +18,7 @@ export default function AppLoadingScreen({children}: AppLoadingScreenProps): Rea ) if (state.loading) { - return + return
Loading...
} return ( diff --git a/src/AppLoadingScreen/AppLoadingScreenContext.ts b/src/components/AppLoadingScreen/AppLoadingScreenContext.ts similarity index 100% rename from src/AppLoadingScreen/AppLoadingScreenContext.ts rename to src/components/AppLoadingScreen/AppLoadingScreenContext.ts diff --git a/src/components/AppLoadingScreen/index.ts b/src/components/AppLoadingScreen/index.ts new file mode 100644 index 0000000..91e7084 --- /dev/null +++ b/src/components/AppLoadingScreen/index.ts @@ -0,0 +1,5 @@ +export * from "./AppLoadingScreen" +export {default as AppLoadingScreen} from "./AppLoadingScreen" + +export * from "./AppLoadingScreenContext" +export {default as AppLoadingScreenContext} from "./AppLoadingScreenContext" diff --git a/src/AuthContext/AuthContext.ts b/src/components/AuthContext/AuthContext.ts similarity index 100% rename from src/AuthContext/AuthContext.ts rename to src/components/AuthContext/AuthContext.ts diff --git a/src/AuthContext/AuthContextProvider.tsx b/src/components/AuthContext/AuthContextProvider.tsx similarity index 100% rename from src/AuthContext/AuthContextProvider.tsx rename to src/components/AuthContext/AuthContextProvider.tsx diff --git a/src/AuthContext/PasswordShareConfirmationDialog.tsx b/src/components/AuthContext/PasswordShareConfirmationDialog.tsx similarity index 100% rename from src/AuthContext/PasswordShareConfirmationDialog.tsx rename to src/components/AuthContext/PasswordShareConfirmationDialog.tsx diff --git a/src/components/AuthContext/index.ts b/src/components/AuthContext/index.ts new file mode 100644 index 0000000..5d414c8 --- /dev/null +++ b/src/components/AuthContext/index.ts @@ -0,0 +1,5 @@ +export * from "./AuthContextProvider" +export {default as AuthContextProvider} from "./AuthContextProvider" + +export * from "./AuthContext" +export {default as AuthContext} from "./AuthContext" diff --git a/src/AuthContext/use-context-value.ts b/src/components/AuthContext/use-context-value.ts similarity index 96% rename from src/AuthContext/use-context-value.ts rename to src/components/AuthContext/use-context-value.ts index edb0937..4d13092 100644 --- a/src/AuthContext/use-context-value.ts +++ b/src/components/AuthContext/use-context-value.ts @@ -1,8 +1,8 @@ import {Dispatch, SetStateAction, useMemo, useRef} from "react" import {useUpdateEffect} from "react-use" -import {AuthContextType, EncryptionStatus} from "~/AuthContext/AuthContext" import {ServerUser, User} from "~/server-types" +import {AuthContextType, EncryptionStatus} from "~/components" export type UseContextValueData = Pick< AuthContextType, diff --git a/src/AuthContext/use-extension-handler.ts b/src/components/AuthContext/use-extension-handler.ts similarity index 100% rename from src/AuthContext/use-extension-handler.ts rename to src/components/AuthContext/use-extension-handler.ts diff --git a/src/AuthContext/use-master-password.ts b/src/components/AuthContext/use-master-password.ts similarity index 100% rename from src/AuthContext/use-master-password.ts rename to src/components/AuthContext/use-master-password.ts diff --git a/src/AuthContext/use-user.ts b/src/components/AuthContext/use-user.ts similarity index 100% rename from src/AuthContext/use-user.ts rename to src/components/AuthContext/use-user.ts diff --git a/src/LockNavigationContext/FormikAutoLockNavigation.tsx b/src/components/LockNavigation/FormikAutoLockNavigation.tsx similarity index 100% rename from src/LockNavigationContext/FormikAutoLockNavigation.tsx rename to src/components/LockNavigation/FormikAutoLockNavigation.tsx diff --git a/src/LockNavigationContext/LockNavigationContext.ts b/src/components/LockNavigation/LockNavigationContext.ts similarity index 100% rename from src/LockNavigationContext/LockNavigationContext.ts rename to src/components/LockNavigation/LockNavigationContext.ts diff --git a/src/LockNavigationContext/LockNavigationContextProvider.tsx b/src/components/LockNavigation/LockNavigationContextProvider.tsx similarity index 100% rename from src/LockNavigationContext/LockNavigationContextProvider.tsx rename to src/components/LockNavigation/LockNavigationContextProvider.tsx diff --git a/src/components/LockNavigation/index.ts b/src/components/LockNavigation/index.ts new file mode 100644 index 0000000..d2f4bae --- /dev/null +++ b/src/components/LockNavigation/index.ts @@ -0,0 +1,7 @@ +export * from "./LockNavigationContextProvider" +export {default as LockNavigationContextProvider} from "./LockNavigationContextProvider" + +export * from "./LockNavigationContext" +export {default as LockNavigationContext} from "./LockNavigationContext" + +export {default as FormikAutoLockNavigation} from "./FormikAutoLockNavigation" diff --git a/src/components/index.ts b/src/components/index.ts index 0e45169..3f567f2 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -1,47 +1,5 @@ -export * from "./MultiStepForm" -export {default as MultiStepForm} from "./MultiStepForm" -export * from "./MultiStepFormElement" -export {default as MultiStepFormElement} from "./MultiStepFormElement" -export * from "./OpenMailButton" -export {default as OpenMailButton} from "./OpenMailButton" -export * from "./PasswordField" -export {default as PasswordField} from "./PasswordField" -export * from "./SimpleForm" -export {default as SimpleForm} from "./SimpleForm" -export * from "./MutationStatusSnackbar" -export {default as MutationStatusSnackbar} from "./MutationStatusSnackbar" -export * from "./TimedButton" -export {default as TimedButton} from "./TimedButton" -export * from "./ErrorSnack" -export {default as ErrorSnack} from "./ErrorSnack" -export * from "./SuccessSnack" -export {default as SuccessSnack} from "./SuccessSnack" -export * from "./ErrorLoadingDataMessage" -export {default as ErrorLoadingDataMessage} from "./ErrorLoadingDataMessage" -export * from "./DecryptReport" -export {default as DecryptReport} from "./DecryptReport" -export * from "./SimplePage" -export {default as SimplePage} from "./SimplePage" -export * from "./QueryResult" -export {default as QueryResult} from "./QueryResult" -export * from "./AliasTypeIndicator" -export {default as AliasTypeIndicator} from "./AliasTypeIndicator" -export * from "./DecryptionPasswordMissingAlert" -export {default as DecryptionPasswordMissingAlert} from "./DecryptionPasswordMissingAlert" -export * from "./FaviconImage" -export {default as FaviconImage} from "./FaviconImage" -export * from "./SimpleOverlayInformation" -export {default as SimpleOverlayInformation} from "./SimpleOverlayInformation" -export * from "./SimpleInformationContainer" -export {default as SimpleInformationContainer} from "./SimpleInformationContainer" -export * from "./NoSearchResults" -export {default as NoSearchResults} from "./NoSearchResults" -export * from "./LanguageButton" -export {default as LanguageButton} from "./LanguageButton" -export * from "./ExpandableListItem" -export {default as ExpandableListItem} from "./ExpandableListItem" -export * from "./ExternalLinkIndication" -export {default as ExternalLinkIndication} from "./ExternalLinkIndication" -export {default as ExtensionSignalHandler} from "./ExtensionalSignalHandler" +export * from "./widgets" -export * as SimplePageBuilder from "./simple-page-builder" +export * from "./AuthContext" +export * from "./LockNavigation" +export * from "./AppLoadingScreen" diff --git a/src/components/AliasTypeIndicator.tsx b/src/components/widgets/AliasTypeIndicator.tsx similarity index 100% rename from src/components/AliasTypeIndicator.tsx rename to src/components/widgets/AliasTypeIndicator.tsx diff --git a/src/components/DecryptReport.tsx b/src/components/widgets/DecryptReport.tsx similarity index 77% rename from src/components/DecryptReport.tsx rename to src/components/widgets/DecryptReport.tsx index e064757..8ccb400 100644 --- a/src/components/DecryptReport.tsx +++ b/src/components/widgets/DecryptReport.tsx @@ -2,15 +2,14 @@ import {ReactElement, useContext} from "react" import {useAsync} from "react-use" import {DecryptedReportContent, Report} from "~/server-types" -import AuthContext from "~/AuthContext/AuthContext" import decryptReport from "~/apis/helpers/decrypt-report" +import {AuthContext} from "../AuthContext" + interface DecryptReportPropsBase { encryptedContent?: string reports?: Report[] - children: ( - report: DecryptedReportContent | DecryptedReportContent[], - ) => ReactElement + children: (report: DecryptedReportContent | DecryptedReportContent[]) => ReactElement } interface DecryptReportPropsEncryptedContent { @@ -34,17 +33,13 @@ export default function DecryptReport({ const {_decryptUsingPrivateKey} = useContext(AuthContext) const {value} = useAsync(async () => { - const decrypt = async ( - content: string, - ): Promise => + const decrypt = async (content: string): Promise => decryptReport(content, _decryptUsingPrivateKey) if (encryptedContent) { return decrypt(encryptedContent) } else { - return await Promise.all( - reports!.map(report => decrypt(report.encryptedContent)), - ) + return await Promise.all(reports!.map(report => decrypt(report.encryptedContent))) } }, [encryptedContent, reports]) diff --git a/src/components/DecryptionPasswordMissingAlert.tsx b/src/components/widgets/DecryptionPasswordMissingAlert.tsx similarity index 94% rename from src/components/DecryptionPasswordMissingAlert.tsx rename to src/components/widgets/DecryptionPasswordMissingAlert.tsx index 5d85f0f..be8b59b 100644 --- a/src/components/DecryptionPasswordMissingAlert.tsx +++ b/src/components/widgets/DecryptionPasswordMissingAlert.tsx @@ -5,8 +5,8 @@ import {useTranslation} from "react-i18next" import {Button, Grid, Typography, useTheme} from "@mui/material" -import AuthContext, {EncryptionStatus} from "~/AuthContext/AuthContext" -import LockNavigationContext from "~/LockNavigationContext/LockNavigationContext" +import {LockNavigationContext} from "../LockNavigation" +import {AuthContext, EncryptionStatus} from "../AuthContext" export interface WithEncryptionRequiredProps { children?: JSX.Element diff --git a/src/components/ErrorLoadingDataMessage.tsx b/src/components/widgets/ErrorLoadingDataMessage.tsx similarity index 100% rename from src/components/ErrorLoadingDataMessage.tsx rename to src/components/widgets/ErrorLoadingDataMessage.tsx diff --git a/src/components/ErrorSnack.tsx b/src/components/widgets/ErrorSnack.tsx similarity index 100% rename from src/components/ErrorSnack.tsx rename to src/components/widgets/ErrorSnack.tsx diff --git a/src/components/ExpandableListItem.tsx b/src/components/widgets/ExpandableListItem.tsx similarity index 100% rename from src/components/ExpandableListItem.tsx rename to src/components/widgets/ExpandableListItem.tsx diff --git a/src/components/ExtensionalSignalHandler.tsx b/src/components/widgets/ExtensionalSignalHandler.tsx similarity index 100% rename from src/components/ExtensionalSignalHandler.tsx rename to src/components/widgets/ExtensionalSignalHandler.tsx diff --git a/src/components/ExternalLinkIndication.tsx b/src/components/widgets/ExternalLinkIndication.tsx similarity index 100% rename from src/components/ExternalLinkIndication.tsx rename to src/components/widgets/ExternalLinkIndication.tsx diff --git a/src/components/FaviconImage.tsx b/src/components/widgets/FaviconImage.tsx similarity index 100% rename from src/components/FaviconImage.tsx rename to src/components/widgets/FaviconImage.tsx diff --git a/src/components/LanguageButton.tsx b/src/components/widgets/LanguageButton.tsx similarity index 89% rename from src/components/LanguageButton.tsx rename to src/components/widgets/LanguageButton.tsx index 3c7a763..d058cb7 100644 --- a/src/components/LanguageButton.tsx +++ b/src/components/widgets/LanguageButton.tsx @@ -6,8 +6,9 @@ import sortArray from "sort-array" import {ListItemIcon, ListItemText, MenuItem, Select} from "@mui/material" import {Language} from "~/server-types" -import AppLoadingScreenContext from "~/AppLoadingScreen/AppLoadingScreenContext" -import LockNavigationContext from "~/LockNavigationContext/LockNavigationContext" + +import {LockNavigationContext} from "../LockNavigation" +import {AppLoadingScreenContext} from "../AppLoadingScreen" const LANGUAGE_NAME_MAP = { [Language.EN_US]: "English", diff --git a/src/components/LoadingData.tsx b/src/components/widgets/LoadingData.tsx similarity index 100% rename from src/components/LoadingData.tsx rename to src/components/widgets/LoadingData.tsx diff --git a/src/components/MultiStepForm.module.css b/src/components/widgets/MultiStepForm.module.css similarity index 100% rename from src/components/MultiStepForm.module.css rename to src/components/widgets/MultiStepForm.module.css diff --git a/src/components/MultiStepForm.tsx b/src/components/widgets/MultiStepForm.tsx similarity index 100% rename from src/components/MultiStepForm.tsx rename to src/components/widgets/MultiStepForm.tsx diff --git a/src/components/MultiStepFormElement.tsx b/src/components/widgets/MultiStepFormElement.tsx similarity index 100% rename from src/components/MultiStepFormElement.tsx rename to src/components/widgets/MultiStepFormElement.tsx diff --git a/src/components/MutationStatusSnackbar.tsx b/src/components/widgets/MutationStatusSnackbar.tsx similarity index 100% rename from src/components/MutationStatusSnackbar.tsx rename to src/components/widgets/MutationStatusSnackbar.tsx diff --git a/src/components/NoSearchResults.tsx b/src/components/widgets/NoSearchResults.tsx similarity index 100% rename from src/components/NoSearchResults.tsx rename to src/components/widgets/NoSearchResults.tsx diff --git a/src/components/OpenMailButton.tsx b/src/components/widgets/OpenMailButton.tsx similarity index 100% rename from src/components/OpenMailButton.tsx rename to src/components/widgets/OpenMailButton.tsx index edf1851..dbc1715 100644 --- a/src/components/OpenMailButton.tsx +++ b/src/components/widgets/OpenMailButton.tsx @@ -1,11 +1,11 @@ import {IoMdMailOpen} from "react-icons/io" +import {useTranslation} from "react-i18next" import React, {ReactElement} from "react" import UAParser from "ua-parser-js" import {Button} from "@mui/material" import {APP_LINK_MAP} from "~/utils" -import {useTranslation} from "react-i18next" export interface OpenMailButtonProps { domain: string diff --git a/src/components/PasswordField.tsx b/src/components/widgets/PasswordField.tsx similarity index 100% rename from src/components/PasswordField.tsx rename to src/components/widgets/PasswordField.tsx diff --git a/src/components/QueryResult.tsx b/src/components/widgets/QueryResult.tsx similarity index 83% rename from src/components/QueryResult.tsx rename to src/components/widgets/QueryResult.tsx index 77b10e2..b58593f 100644 --- a/src/components/QueryResult.tsx +++ b/src/components/widgets/QueryResult.tsx @@ -5,7 +5,8 @@ import {UseQueryResult} from "@tanstack/react-query" import {ErrorLoadingDataMessage} from "~/components/index" import {parseFastAPIError} from "~/utils" -import LoadingData from "~/components/LoadingData" + +import LoadingData from "./LoadingData" export interface QueryResultProps { query: UseQueryResult @@ -27,10 +28,7 @@ export default function QueryResult({ if (query.error) { return ( ) diff --git a/src/components/SimpleForm.tsx b/src/components/widgets/SimpleForm.tsx similarity index 100% rename from src/components/SimpleForm.tsx rename to src/components/widgets/SimpleForm.tsx diff --git a/src/components/SimpleInformationContainer.tsx b/src/components/widgets/SimpleInformationContainer.tsx similarity index 100% rename from src/components/SimpleInformationContainer.tsx rename to src/components/widgets/SimpleInformationContainer.tsx diff --git a/src/components/SimpleMultipleSections.tsx b/src/components/widgets/SimpleMultipleSections.tsx similarity index 100% rename from src/components/SimpleMultipleSections.tsx rename to src/components/widgets/SimpleMultipleSections.tsx diff --git a/src/components/SimpleOverlayInformation.tsx b/src/components/widgets/SimpleOverlayInformation.tsx similarity index 100% rename from src/components/SimpleOverlayInformation.tsx rename to src/components/widgets/SimpleOverlayInformation.tsx diff --git a/src/components/SimplePage.tsx b/src/components/widgets/SimplePage.tsx similarity index 100% rename from src/components/SimplePage.tsx rename to src/components/widgets/SimplePage.tsx diff --git a/src/components/SimpleSection.tsx b/src/components/widgets/SimpleSection.tsx similarity index 100% rename from src/components/SimpleSection.tsx rename to src/components/widgets/SimpleSection.tsx diff --git a/src/components/SuccessSnack.tsx b/src/components/widgets/SuccessSnack.tsx similarity index 100% rename from src/components/SuccessSnack.tsx rename to src/components/widgets/SuccessSnack.tsx diff --git a/src/components/TimedButton.tsx b/src/components/widgets/TimedButton.tsx similarity index 100% rename from src/components/TimedButton.tsx rename to src/components/widgets/TimedButton.tsx index 6f1adad..bdcd711 100644 --- a/src/components/TimedButton.tsx +++ b/src/components/widgets/TimedButton.tsx @@ -1,11 +1,11 @@ import {ReactElement} from "react" +import {useTranslation} from "react-i18next" import differenceInSeconds from "date-fns/differenceInSeconds" import {LoadingButton, LoadingButtonProps} from "@mui/lab" import {useIntervalUpdate} from "~/hooks" import {isDev} from "~/constants/development" -import {useTranslation} from "react-i18next" export interface TimedButtonProps extends LoadingButtonProps { interval: number diff --git a/src/components/widgets/index.ts b/src/components/widgets/index.ts new file mode 100644 index 0000000..b8b3f5e --- /dev/null +++ b/src/components/widgets/index.ts @@ -0,0 +1,49 @@ +export * from "./MultiStepForm" +export {default as MultiStepForm} from "./MultiStepForm" +export * from "./MultiStepFormElement" +export {default as MultiStepFormElement} from "./MultiStepFormElement" +export * from "./OpenMailButton" +export {default as OpenMailButton} from "./OpenMailButton" +export * from "./PasswordField" +export {default as PasswordField} from "./PasswordField" +export * from "./SimpleForm" +export {default as SimpleForm} from "./SimpleForm" +export * from "./MutationStatusSnackbar" +export {default as MutationStatusSnackbar} from "./MutationStatusSnackbar" +export * from "./TimedButton" +export {default as TimedButton} from "./TimedButton" +export * from "./ErrorSnack" +export {default as ErrorSnack} from "./ErrorSnack" +export * from "./SuccessSnack" +export {default as SuccessSnack} from "./SuccessSnack" +export * from "./ErrorLoadingDataMessage" +export {default as ErrorLoadingDataMessage} from "./ErrorLoadingDataMessage" +export * from "./DecryptReport" +export {default as DecryptReport} from "./DecryptReport" +export * from "./SimplePage" +export {default as SimplePage} from "./SimplePage" +export * from "./QueryResult" +export {default as QueryResult} from "./QueryResult" +export * from "./AliasTypeIndicator" +export {default as AliasTypeIndicator} from "./AliasTypeIndicator" +export * from "./DecryptionPasswordMissingAlert" +export {default as DecryptionPasswordMissingAlert} from "./DecryptionPasswordMissingAlert" +export * from "./FaviconImage" +export {default as FaviconImage} from "./FaviconImage" +export * from "./SimpleOverlayInformation" +export {default as SimpleOverlayInformation} from "./SimpleOverlayInformation" +export * from "./SimpleInformationContainer" +export {default as SimpleInformationContainer} from "./SimpleInformationContainer" +export * from "./NoSearchResults" +export {default as NoSearchResults} from "./NoSearchResults" +export * from "./LanguageButton" +export {default as LanguageButton} from "./LanguageButton" +export * from "./ExpandableListItem" +export {default as ExpandableListItem} from "./ExpandableListItem" +export * from "./LoadingData" +export {default as LoadingData} from "./LoadingData" +export * from "./ExternalLinkIndication" +export {default as ExternalLinkIndication} from "./ExternalLinkIndication" +export {default as ExtensionSignalHandler} from "./ExtensionalSignalHandler" + +export * as SimplePageBuilder from "./simple-page-builder" diff --git a/src/components/simple-page-builder.ts b/src/components/widgets/simple-page-builder.ts similarity index 100% rename from src/components/simple-page-builder.ts rename to src/components/widgets/simple-page-builder.ts diff --git a/src/hooks/use-user.ts b/src/hooks/use-user.ts index 443d506..62d9308 100644 --- a/src/hooks/use-user.ts +++ b/src/hooks/use-user.ts @@ -3,7 +3,7 @@ import {useContext, useLayoutEffect} from "react" import {ServerUser, User} from "~/server-types" import {AUTHENTICATION_PATHS} from "~/constants/values" -import AuthContext from "~/AuthContext/AuthContext" +import {AuthContext} from "~/components" /// Returns the currently authenticated user. // If the user is not authenticated, it will automatically redirect to the login page. diff --git a/src/route-widgets/AliasDetailRoute/AddWebsiteField.tsx b/src/route-widgets/AliasDetailRoute/AddWebsiteField.tsx index 10510d0..52d08e4 100644 --- a/src/route-widgets/AliasDetailRoute/AddWebsiteField.tsx +++ b/src/route-widgets/AliasDetailRoute/AddWebsiteField.tsx @@ -2,19 +2,12 @@ import * as yup from "yup" import {useFormik} from "formik" import {ReactElement} from "react" import {RiLinkM} from "react-icons/ri" +import {useTranslation} from "react-i18next" -import { - Button, - FormGroup, - FormHelperText, - Grid, - InputAdornment, - TextField, -} from "@mui/material" +import {Button, FormGroup, FormHelperText, Grid, InputAdornment, TextField} from "@mui/material" import {URL_REGEX} from "~/constants/values" import {whenEnterPressed} from "~/utils" -import {useTranslation} from "react-i18next" export interface AddWebsiteFieldProps { onAdd: (website: string) => Promise @@ -29,10 +22,7 @@ const WEBSITE_SCHEMA = yup.object().shape({ url: yup.string().matches(URL_REGEX, "This URL is invalid."), }) -export default function AddWebsiteField({ - onAdd, - isLoading, -}: AddWebsiteFieldProps): ReactElement { +export default function AddWebsiteField({onAdd, isLoading}: AddWebsiteFieldProps): ReactElement { const {t} = useTranslation() const websiteFormik = useFormik({ validationSchema: WEBSITE_SCHEMA, @@ -68,9 +58,7 @@ export default function AddWebsiteField({ - websiteFormik.handleSubmit(), - )} + onKeyDown={whenEnterPressed(() => websiteFormik.handleSubmit())} disabled={websiteFormik.isSubmitting || isLoading} - error={ - websiteFormik.touched.url && - Boolean(websiteFormik.errors.url) - } + error={websiteFormik.touched.url && Boolean(websiteFormik.errors.url)} InputProps={{ startAdornment: ( @@ -107,15 +90,10 @@ export default function AddWebsiteField({ {(websiteFormik.touched.url && websiteFormik.errors.url) || - t( - "routes.AliasDetailRoute.sections.notes.form.websites.helperText", - )} + t("routes.AliasDetailRoute.sections.notes.form.websites.helperText")} diff --git a/src/route-widgets/AliasDetailRoute/AliasNotesForm.tsx b/src/route-widgets/AliasDetailRoute/AliasNotesForm.tsx index eb10ee5..466801b 100644 --- a/src/route-widgets/AliasDetailRoute/AliasNotesForm.tsx +++ b/src/route-widgets/AliasDetailRoute/AliasNotesForm.tsx @@ -28,14 +28,17 @@ import { } from "@mui/material" import {parseFastAPIError} from "~/utils" -import {FaviconImage, SimpleOverlayInformation} from "~/components" +import { + AuthContext, + FaviconImage, + FormikAutoLockNavigation, + SimpleOverlayInformation, +} from "~/components" import {Alias, AliasNote, DecryptedAlias} from "~/server-types" import {updateAlias} from "~/apis" import {useErrorSuccessSnacks} from "~/hooks" import {queryClient} from "~/constants/react-query" import AddWebsiteField from "~/route-widgets/AliasDetailRoute/AddWebsiteField" -import AuthContext from "~/AuthContext/AuthContext" -import FormikAutoLockNavigation from "~/LockNavigationContext/FormikAutoLockNavigation" import decryptAliasNotes from "~/apis/helpers/decrypt-alias-notes" export interface AliasNotesFormProps { diff --git a/src/route-widgets/AliasDetailRoute/AliasPreferencesForm.tsx b/src/route-widgets/AliasDetailRoute/AliasPreferencesForm.tsx index a55bd62..b2a6105 100644 --- a/src/route-widgets/AliasDetailRoute/AliasPreferencesForm.tsx +++ b/src/route-widgets/AliasDetailRoute/AliasPreferencesForm.tsx @@ -22,8 +22,7 @@ import { } from "~/constants/enum-mappings" import {useErrorSuccessSnacks} from "~/hooks" import {queryClient} from "~/constants/react-query" -import AuthContext from "~/AuthContext/AuthContext" -import FormikAutoLockNavigation from "~/LockNavigationContext/FormikAutoLockNavigation" +import {AuthContext, FormikAutoLockNavigation} from "~/components" import SelectField from "~/route-widgets/SettingsRoute/SelectField" import decryptAliasNotes from "~/apis/helpers/decrypt-alias-notes" diff --git a/src/route-widgets/AliasDetailRoute/ChangeAliasActivationStatusSwitch.tsx b/src/route-widgets/AliasDetailRoute/ChangeAliasActivationStatusSwitch.tsx index b1f5143..5c7b749 100644 --- a/src/route-widgets/AliasDetailRoute/ChangeAliasActivationStatusSwitch.tsx +++ b/src/route-widgets/AliasDetailRoute/ChangeAliasActivationStatusSwitch.tsx @@ -8,9 +8,9 @@ import {QueryKey, useMutation} from "@tanstack/react-query" import {Alias, DecryptedAlias} from "~/server-types" import {UpdateAliasData, updateAlias} from "~/apis" -import {useErrorSuccessSnacks, useUIState} from "~/hooks" +import {useErrorSuccessSnacks} from "~/hooks" import {queryClient} from "~/constants/react-query" -import AuthContext, {EncryptionStatus} from "~/AuthContext/AuthContext" +import {AuthContext, EncryptionStatus} from "~/components" import decryptAliasNotes from "~/apis/helpers/decrypt-alias-notes" export interface ChangeAliasActivationStatusSwitchProps { diff --git a/src/route-widgets/AliasesRoute/CreateAliasButton.tsx b/src/route-widgets/AliasesRoute/CreateAliasButton.tsx index 2660e4b..9643bdf 100644 --- a/src/route-widgets/AliasesRoute/CreateAliasButton.tsx +++ b/src/route-widgets/AliasesRoute/CreateAliasButton.tsx @@ -18,11 +18,11 @@ import { import {useMutation} from "@tanstack/react-query" import {CreateAliasData, createAlias} from "~/apis" -import {Alias, AliasList, AliasType, PaginationResult} from "~/server-types" +import {Alias, AliasType} from "~/server-types" import {DEFAULT_ALIAS_NOTE} from "~/constants/values" import {useErrorSuccessSnacks} from "~/hooks" import {queryClient} from "~/constants/react-query" -import AuthContext, {EncryptionStatus} from "~/AuthContext/AuthContext" +import {AuthContext, EncryptionStatus} from "~/components" import CustomAliasDialog from "~/route-widgets/AliasesRoute/CustomAliasDialog" export function CreateAliasButton(): ReactElement { diff --git a/src/route-widgets/AuthenticateRoute/NavigationButton.tsx b/src/route-widgets/AuthenticateRoute/NavigationButton.tsx index 97a7f7b..0ef1b8e 100644 --- a/src/route-widgets/AuthenticateRoute/NavigationButton.tsx +++ b/src/route-widgets/AuthenticateRoute/NavigationButton.tsx @@ -9,7 +9,7 @@ import {Button} from "@mui/material" import {mdiTextBoxMultiple} from "@mdi/js/commonjs/mdi" import Icon from "@mdi/react" -import LockNavigationContext from "~/LockNavigationContext/LockNavigationContext" +import {LockNavigationContext} from "~/components" export enum NavigationSection { Overview, diff --git a/src/route-widgets/CompleteAccountRoute/GenerateEmailReportsForm.tsx b/src/route-widgets/CompleteAccountRoute/GenerateEmailReportsForm.tsx index 3bd21df..ab9813a 100644 --- a/src/route-widgets/CompleteAccountRoute/GenerateEmailReportsForm.tsx +++ b/src/route-widgets/CompleteAccountRoute/GenerateEmailReportsForm.tsx @@ -1,13 +1,14 @@ import {FaLongArrowAltRight} from "react-icons/fa" import {TiCancel} from "react-icons/ti" +import {useTranslation} from "react-i18next" import React, {ReactElement} from "react" import {Box, Button, Grid, Typography} from "@mui/material" -import {MultiStepFormElement} from "~/components" import {mdiTextBoxMultiple} from "@mdi/js/commonjs/mdi" -import {useTranslation} from "react-i18next" import Icon from "@mdi/react" +import {MultiStepFormElement} from "~/components" + export interface GenerateEmailReportsFormProps { onYes: () => void onNo: () => void diff --git a/src/route-widgets/CompleteAccountRoute/PasswordForm.tsx b/src/route-widgets/CompleteAccountRoute/PasswordForm.tsx index 4c6c823..2f5093e 100644 --- a/src/route-widgets/CompleteAccountRoute/PasswordForm.tsx +++ b/src/route-widgets/CompleteAccountRoute/PasswordForm.tsx @@ -11,14 +11,13 @@ import passwordGenerator from "secure-random-password" import {Box, InputAdornment} from "@mui/material" import {useMutation} from "@tanstack/react-query" -import {PasswordField, SimpleForm} from "~/components" +import {AuthContext, PasswordField, SimpleForm} from "~/components" import {encryptString, generateKeys, getEncryptionPassword, getUserSalt} from "~/utils" import {useExtensionHandler, useNavigateToNext, useSystemPreferredTheme, useUser} from "~/hooks" import {MASTER_PASSWORD_LENGTH} from "~/constants/values" import {AuthenticationDetails, ServerSettings, UserNote} from "~/server-types" import {UpdateAccountData, updateAccount} from "~/apis" import {encryptUserNote} from "~/utils/encrypt-user-note" -import AuthContext from "~/AuthContext/AuthContext" export interface PasswordFormProps { onDone: () => void diff --git a/src/route-widgets/LoginRoute/ConfirmCodeForm/ResendMailButton.tsx b/src/route-widgets/LoginRoute/ConfirmCodeForm/ResendMailButton.tsx index a0d4e40..3d52a46 100644 --- a/src/route-widgets/LoginRoute/ConfirmCodeForm/ResendMailButton.tsx +++ b/src/route-widgets/LoginRoute/ConfirmCodeForm/ResendMailButton.tsx @@ -1,5 +1,7 @@ import {AxiosError} from "axios" import {useLoaderData} from "react-router-dom" +import {MdMail} from "react-icons/md" +import {useTranslation} from "react-i18next" import React, {ReactElement} from "react" import {useMutation} from "@tanstack/react-query" @@ -7,8 +9,6 @@ import {useMutation} from "@tanstack/react-query" import {resendEmailLoginCode} from "~/apis" import {MutationStatusSnackbar, TimedButton} from "~/components" import {ServerSettings, SimpleDetailResponse} from "~/server-types" -import {MdMail} from "react-icons/md" -import {useTranslation} from "react-i18next" export interface ResendMailButtonProps { email: string diff --git a/src/route-widgets/LoginRoute/ConfirmFromDifferentDevice.tsx b/src/route-widgets/LoginRoute/ConfirmFromDifferentDevice.tsx index d1c1244..905171f 100644 --- a/src/route-widgets/LoginRoute/ConfirmFromDifferentDevice.tsx +++ b/src/route-widgets/LoginRoute/ConfirmFromDifferentDevice.tsx @@ -8,7 +8,7 @@ import {Box, Grid, Paper, Typography} from "@mui/material" import {AuthenticationDetails, ServerUser} from "~/server-types" import {verifyLoginWithEmail} from "~/apis" -import LoadingData from "~/components/LoadingData" +import {LoadingData} from "~/components" export interface ConfirmFromDifferentDeviceProps { email: string diff --git a/src/route-widgets/ReportDetailRoute/ExpandedUrlsListItem.tsx b/src/route-widgets/ReportDetailRoute/ExpandedUrlsListItem.tsx index c9ef991..d366d4a 100644 --- a/src/route-widgets/ReportDetailRoute/ExpandedUrlsListItem.tsx +++ b/src/route-widgets/ReportDetailRoute/ExpandedUrlsListItem.tsx @@ -1,7 +1,6 @@ import {ReactElement} from "react" import {useTranslation} from "react-i18next" import {BsArrowsAngleExpand} from "react-icons/bs" -import {HiOutlineExternalLink} from "react-icons/hi" import {List, ListItemButton, ListItemText} from "@mui/material" diff --git a/src/route-widgets/ReportDetailRoute/SinglePixelImageTrackersListItem.tsx b/src/route-widgets/ReportDetailRoute/SinglePixelImageTrackersListItem.tsx index b0491f7..c02e411 100644 --- a/src/route-widgets/ReportDetailRoute/SinglePixelImageTrackersListItem.tsx +++ b/src/route-widgets/ReportDetailRoute/SinglePixelImageTrackersListItem.tsx @@ -1,10 +1,10 @@ import {ReactElement} from "react" +import {BsShieldShaded} from "react-icons/bs" +import {useTranslation} from "react-i18next" import {List, ListItem, Typography} from "@mui/material" import {DecryptedReportContent} from "~/server-types" -import {BsShieldShaded} from "react-icons/bs" -import {useTranslation} from "react-i18next" import {ExpandableListItem} from "~/components" export interface SinglePixelImageTrackersListItemProps { diff --git a/src/route-widgets/SettingsRoute/AliasesPreferencesForm.tsx b/src/route-widgets/SettingsRoute/AliasesPreferencesForm.tsx index 975f32b..58338d8 100644 --- a/src/route-widgets/SettingsRoute/AliasesPreferencesForm.tsx +++ b/src/route-widgets/SettingsRoute/AliasesPreferencesForm.tsx @@ -30,7 +30,7 @@ import { IMAGE_PROXY_FORMAT_TYPE_NAME_MAP, PROXY_USER_AGENT_TYPE_NAME_MAP, } from "~/constants/enum-mappings" -import AuthContext from "~/AuthContext/AuthContext" +import {AuthContext} from "~/components" interface Form { removeTrackers: boolean diff --git a/src/route-widgets/SignupRoute/EmailForm/EmailForm.tsx b/src/route-widgets/SignupRoute/EmailForm/EmailForm.tsx index 1fde5e5..27b544f 100644 --- a/src/route-widgets/SignupRoute/EmailForm/EmailForm.tsx +++ b/src/route-widgets/SignupRoute/EmailForm/EmailForm.tsx @@ -12,8 +12,8 @@ import {MultiStepFormElement, SimpleForm} from "~/components" import {SignupResult, checkIsDomainDisposable, signup} from "~/apis" import {parseFastAPIError} from "~/utils" import {ServerSettings} from "~/server-types" - import {useExtensionHandler} from "~/hooks" + import DetectEmailAutofillService from "./DetectEmailAutofillService" export interface EmailFormProps { diff --git a/src/route-widgets/SignupRoute/YouGotMail/YouGotMail.tsx b/src/route-widgets/SignupRoute/YouGotMail/YouGotMail.tsx index a221697..5fa50bd 100644 --- a/src/route-widgets/SignupRoute/YouGotMail/YouGotMail.tsx +++ b/src/route-widgets/SignupRoute/YouGotMail/YouGotMail.tsx @@ -1,4 +1,5 @@ import {MdCancel, MdEdit} from "react-icons/md" +import {useTranslation} from "react-i18next" import React, {ReactElement, useState} from "react" import { @@ -14,7 +15,6 @@ import { } from "@mui/material" import {MultiStepFormElement, OpenMailButton} from "~/components" -import {useTranslation} from "react-i18next" import ResendMailButton from "~/route-widgets/SignupRoute/YouGotMail/ResendMailButton" export interface YouGotMailProps { diff --git a/src/routes/AliasDetailRoute.tsx b/src/routes/AliasDetailRoute.tsx index e5a2830..d291426 100644 --- a/src/routes/AliasDetailRoute.tsx +++ b/src/routes/AliasDetailRoute.tsx @@ -10,7 +10,9 @@ import {getAlias} from "~/apis" import {Alias, DecryptedAlias} from "~/server-types" import { AliasTypeIndicator, + AuthContext, DecryptionPasswordMissingAlert, + EncryptionStatus, QueryResult, SimplePage, SimplePageBuilder, @@ -18,7 +20,6 @@ import { import AliasAddress from "~/route-widgets/AliasDetailRoute/AliasAddress" import AliasNotesForm from "~/route-widgets/AliasDetailRoute/AliasNotesForm" import AliasPreferencesForm from "~/route-widgets/AliasDetailRoute/AliasPreferencesForm" -import AuthContext, {EncryptionStatus} from "~/AuthContext/AuthContext" import ChangeAliasActivationStatusSwitch from "~/route-widgets/AliasDetailRoute/ChangeAliasActivationStatusSwitch" import decryptAliasNotes from "~/apis/helpers/decrypt-alias-notes" diff --git a/src/routes/AuthenticatedRoute.tsx b/src/routes/AuthenticatedRoute.tsx index 56ab47c..c7ac98a 100644 --- a/src/routes/AuthenticatedRoute.tsx +++ b/src/routes/AuthenticatedRoute.tsx @@ -6,8 +6,7 @@ import {MdLogout} from "react-icons/md" import {Box, Button, Grid, List, ListItem, Paper, useTheme} from "@mui/material" import {useUser} from "~/hooks" -import {LanguageButton} from "~/components" -import LockNavigationContextProvider from "~/LockNavigationContext/LockNavigationContextProvider" +import {LanguageButton, LockNavigationContextProvider} from "~/components" import NavigationButton, { NavigationSection, } from "~/route-widgets/AuthenticateRoute/NavigationButton" diff --git a/src/routes/CompleteAccountRoute.tsx b/src/routes/CompleteAccountRoute.tsx index 89700ea..a361946 100644 --- a/src/routes/CompleteAccountRoute.tsx +++ b/src/routes/CompleteAccountRoute.tsx @@ -3,9 +3,8 @@ import {useTranslation} from "react-i18next" import {Grid, Paper, Typography} from "@mui/material" -import {MultiStepForm} from "~/components" +import {AuthContext, EncryptionStatus, MultiStepForm} from "~/components" import {useNavigateToNext} from "~/hooks" -import AuthContext, {EncryptionStatus} from "~/AuthContext/AuthContext" import GenerateEmailReportsForm from "~/route-widgets/CompleteAccountRoute/GenerateEmailReportsForm" import PasswordForm from "~/route-widgets/CompleteAccountRoute/PasswordForm" diff --git a/src/routes/EnterDecryptionPassword.tsx b/src/routes/EnterDecryptionPassword.tsx index 4ebcca8..94fe217 100644 --- a/src/routes/EnterDecryptionPassword.tsx +++ b/src/routes/EnterDecryptionPassword.tsx @@ -6,11 +6,11 @@ import {useTranslation} from "react-i18next" import {useLoaderData} from "react-router-dom" import {InputAdornment} from "@mui/material" + import {useNavigateToNext, useUser} from "~/hooks" -import {PasswordField, SimpleForm} from "~/components" +import {AuthContext, PasswordField, SimpleForm} from "~/components" import {getMasterPassword} from "~/utils" import {ServerSettings} from "~/server-types" -import AuthContext from "~/AuthContext/AuthContext" interface Form { password: string diff --git a/src/routes/LoginRoute.tsx b/src/routes/LoginRoute.tsx index 33fba20..9161ec1 100644 --- a/src/routes/LoginRoute.tsx +++ b/src/routes/LoginRoute.tsx @@ -2,9 +2,8 @@ import {ReactElement, useContext, useState} from "react" import {useNavigate} from "react-router-dom" import {useUpdateEffect} from "react-use" -import {MultiStepForm} from "~/components" +import {AuthContext, MultiStepForm} from "~/components" import {useQueryParams} from "~/hooks" -import AuthContext from "~/AuthContext/AuthContext" import ConfirmCodeForm from "~/route-widgets/LoginRoute/ConfirmCodeForm/ConfirmCodeForm" import ConfirmFromDifferentDevice from "~/route-widgets/LoginRoute/ConfirmFromDifferentDevice" import EmailForm from "~/route-widgets/LoginRoute/EmailForm" diff --git a/src/routes/LogoutRoute.tsx b/src/routes/LogoutRoute.tsx index 8cb67f7..0d48c58 100644 --- a/src/routes/LogoutRoute.tsx +++ b/src/routes/LogoutRoute.tsx @@ -5,7 +5,7 @@ import {useEffectOnce} from "react-use" import {Box, CircularProgress, Grid, Paper, Typography} from "@mui/material" import {useNavigateToNext} from "~/hooks" -import AuthContext from "~/AuthContext/AuthContext" +import {AuthContext} from "~/components" export default function LogoutRoute(): ReactElement { const {t} = useTranslation() diff --git a/src/routes/ReportDetailRoute.tsx b/src/routes/ReportDetailRoute.tsx index 0c2e76a..aec204d 100644 --- a/src/routes/ReportDetailRoute.tsx +++ b/src/routes/ReportDetailRoute.tsx @@ -8,12 +8,11 @@ import {List} from "@mui/material" import {DecryptedReportContent, Report} from "~/server-types" import {getReport} from "~/apis" -import {DecryptReport, SimpleOverlayInformation, SimplePageBuilder} from "~/components" +import {DecryptReport, QueryResult, SimpleOverlayInformation, SimplePageBuilder} from "~/components" import {WithEncryptionRequired} from "~/hocs" import DeleteButton from "~/route-widgets/ReportDetailRoute/DeleteButton" import ExpandedUrlsListItem from "~/route-widgets/ReportDetailRoute/ExpandedUrlsListItem" import ProxiedImagesListItem from "~/route-widgets/ReportDetailRoute/ProxiedImagesListItem" -import QueryResult from "~/components/QueryResult" import SinglePixelImageTrackersListItem from "~/route-widgets/ReportDetailRoute/SinglePixelImageTrackersListItem" function ReportDetailRoute(): ReactElement { diff --git a/src/routes/ReportsRoute.tsx b/src/routes/ReportsRoute.tsx index fb49633..035186c 100644 --- a/src/routes/ReportsRoute.tsx +++ b/src/routes/ReportsRoute.tsx @@ -12,12 +12,10 @@ import {InputAdornment, List, MenuItem, TextField, Typography} from "@mui/materi import {DecryptedReportContent, PaginationResult, Report} from "~/server-types" import {getReports} from "~/apis" import {WithEncryptionRequired} from "~/hocs" -import {DecryptReport} from "~/components" +import {DecryptReport, QueryResult, SimplePage} from "~/components" import {createEnumMapFromTranslation} from "~/utils" import EmptyStateScreen from "~/route-widgets/ReportsRoute/EmptyStateScreen" -import QueryResult from "~/components/QueryResult" import ReportInformationItem from "~/route-widgets/ReportsRoute/ReportInformationItem" -import SimplePage from "~/components/SimplePage" enum SortingView { List = "List", diff --git a/src/routes/Root.tsx b/src/routes/Root.tsx index 30d77ea..f560233 100644 --- a/src/routes/Root.tsx +++ b/src/routes/Root.tsx @@ -1,9 +1,7 @@ import {Outlet} from "react-router-dom" import React, {ReactElement} from "react" -import {ExtensionSignalHandler} from "~/components" -import AppLoadingScreen from "~/AppLoadingScreen/AppLoadingScreen" -import AuthContextProvider from "~/AuthContext/AuthContextProvider" +import {AppLoadingScreen, AuthContextProvider, ExtensionSignalHandler} from "~/components" export default function RootRoute(): ReactElement { return ( diff --git a/src/routes/VerifyEmailRoute.tsx b/src/routes/VerifyEmailRoute.tsx index 412bcd2..e143295 100644 --- a/src/routes/VerifyEmailRoute.tsx +++ b/src/routes/VerifyEmailRoute.tsx @@ -12,7 +12,7 @@ import {useMutation} from "@tanstack/react-query" import {AuthenticationDetails, ServerSettings} from "~/server-types" import {VerifyEmailData, verifyEmail} from "~/apis" import {useQueryParams} from "~/hooks" -import AuthContext from "~/AuthContext/AuthContext" +import {AuthContext} from "~/components" const emailSchema = yup.string().email() diff --git a/src/utils/decrypt-string.ts b/src/utils/crypto/decrypt-string.ts similarity index 100% rename from src/utils/decrypt-string.ts rename to src/utils/crypto/decrypt-string.ts diff --git a/src/utils/encrypt-string.ts b/src/utils/crypto/encrypt-string.ts similarity index 100% rename from src/utils/encrypt-string.ts rename to src/utils/crypto/encrypt-string.ts diff --git a/src/utils/generate-keys.ts b/src/utils/crypto/generate-keys.ts similarity index 96% rename from src/utils/generate-keys.ts rename to src/utils/crypto/generate-keys.ts index 601af09..1097ec5 100644 --- a/src/utils/generate-keys.ts +++ b/src/utils/crypto/generate-keys.ts @@ -4,7 +4,7 @@ export default async function generateKeys(): Promise< SerializedKeyPair & {revocationCertificate: string} > { return generateKey({ - type: "rsa", + type: "ecc", format: "armored", userIDs: [{name: "John Smith", email: "john@example.com"}], passphrase: "", diff --git a/src/utils/get-encryption-password.ts b/src/utils/crypto/get-encryption-password.ts similarity index 100% rename from src/utils/get-encryption-password.ts rename to src/utils/crypto/get-encryption-password.ts diff --git a/src/utils/get-master-password.ts b/src/utils/crypto/get-master-password.ts similarity index 100% rename from src/utils/get-master-password.ts rename to src/utils/crypto/get-master-password.ts diff --git a/src/utils/get-user-salt.ts b/src/utils/crypto/get-user-salt.ts similarity index 100% rename from src/utils/get-user-salt.ts rename to src/utils/crypto/get-user-salt.ts diff --git a/src/utils/crypto/index.ts b/src/utils/crypto/index.ts new file mode 100644 index 0000000..b945c22 --- /dev/null +++ b/src/utils/crypto/index.ts @@ -0,0 +1,12 @@ +export * from "./decrypt-string" +export {default as decryptString} from "./decrypt-string" +export * from "./encrypt-string" +export {default as encryptString} from "./encrypt-string" +export * from "./get-encryption-password" +export {default as getEncryptionPassword} from "./get-encryption-password" +export * from "./get-user-salt" +export {default as getUserSalt} from "./get-user-salt" +export * from "./get-master-password" +export {default as getMasterPassword} from "./get-master-password" +export * from "./generate-keys" +export {default as generateKeys} from "./generate-keys" diff --git a/src/utils/encrypt-user-note.ts b/src/utils/encrypt-user-note.ts index b334717..05fa981 100644 --- a/src/utils/encrypt-user-note.ts +++ b/src/utils/encrypt-user-note.ts @@ -2,18 +2,15 @@ import * as yup from "yup" import {Theme, UserNote} from "~/server-types" -import decryptString from "./decrypt-string" -import encryptString from "./encrypt-string" +import decryptString from "./crypto/decrypt-string" +import encryptString from "./crypto/encrypt-string" export const USER_NOTE_SCHEMA = yup.object().shape({ privateKey: yup.string().required(), theme: yup.string().oneOf(Object.values(Theme)).required(), }) -export function decryptUserNote( - encryptedUserNote: string, - password: string, -): UserNote { +export function decryptUserNote(encryptedUserNote: string, password: string): UserNote { const data = decryptString(encryptedUserNote, password) const userNote = JSON.parse(data) diff --git a/src/utils/index.ts b/src/utils/index.ts index 5c7ae00..77302bc 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,22 +1,12 @@ export * from "./app-url-links" export {default as APP_LINK_MAP} from "./app-url-links" -export * from "./encrypt-string" -export {default as encryptString} from "./encrypt-string" export * from "./parse-fastapi-error" export {default as parseFastAPIError} from "./parse-fastapi-error" export * from "./when-element-has-bounds" export {default as whenElementHasBounds} from "./when-element-has-bounds" -export * from "./decrypt-string" -export {default as decryptString} from "./decrypt-string" export * from "./when-enter-pressed" export {default as whenEnterPressed} from "./when-enter-pressed" export * from "./create-enum-map-from-translation" export {default as createEnumMapFromTranslation} from "./create-enum-map-from-translation" -export * from "./get-encryption-password" -export {default as getEncryptionPassword} from "./get-encryption-password" -export * from "./get-user-salt" -export {default as getUserSalt} from "./get-user-salt" -export * from "./get-master-password" -export {default as getMasterPassword} from "./get-master-password" -export * from "./generate-keys" -export {default as generateKeys} from "./generate-keys" + +export * from "./crypto" diff --git a/src/utils/parse-fastapi-error.ts b/src/utils/parse-fastapi-error.ts index a055b80..9d32c50 100644 --- a/src/utils/parse-fastapi-error.ts +++ b/src/utils/parse-fastapi-error.ts @@ -1,5 +1,6 @@ import {AxiosError} from "axios" import {FormikErrors} from "formik" + import {SimpleDetailResponse} from "~/server-types" export interface FastAPIError {