diff --git a/src/hocs/WithEncryptionRequired.tsx b/src/hocs/WithEncryptionRequired.tsx
new file mode 100644
index 0000000..0c972d2
--- /dev/null
+++ b/src/hocs/WithEncryptionRequired.tsx
@@ -0,0 +1,78 @@
+import {ReactElement} from "react"
+import {Link as RouterLink} from "react-router-dom"
+import {MdLock} from "react-icons/md"
+
+import {Button, Grid, Typography} from "@mui/material"
+
+import {useUser} from "~/hooks"
+
+export default function WithEncryptionRequired(
+ Component: any,
+): (props: any) => ReactElement {
+ return (props: any): ReactElement => {
+ const user = useUser()
+
+ console.log("withencryption required", user)
+
+ if (!user.encryptedPassword) {
+ return (
+
+
+
+ Encryption required
+
+
+
+
+ To continue, you need to enable encryption.
+
+
+
+ }
+ >
+ Setup encryption
+
+
+
+ )
+ }
+
+ if (!user.isDecrypted) {
+ return (
+
+
+
+ Encryption required
+
+
+
+
+ To continue, please enter your password to decrypt
+ your data.
+
+
+
+ }
+ >
+ Enter Password
+
+
+
+ )
+ }
+
+ return
+ }
+}
diff --git a/src/hocs/index.ts b/src/hocs/index.ts
new file mode 100644
index 0000000..76a4073
--- /dev/null
+++ b/src/hocs/index.ts
@@ -0,0 +1,2 @@
+export * from "./WithEncryptionRequired"
+export {default as WithEncryptionRequired} from "./WithEncryptionRequired"
diff --git a/src/routes/ReportsRoute.tsx b/src/routes/ReportsRoute.tsx
index 3dc9729..8211793 100644
--- a/src/routes/ReportsRoute.tsx
+++ b/src/routes/ReportsRoute.tsx
@@ -6,10 +6,11 @@ import {List, ListItem, ListItemText} from "@mui/material"
import {PaginationResult, Report} from "~/server-types"
import {getReports} from "~/apis"
+import {WithEncryptionRequired} from "~/hocs"
import DecryptReport from "~/route-widgets/SettingsRoute/DecryptReport"
import QueryResult from "~/components/QueryResult"
-export default function ReportsRoute(): ReactElement {
+function ReportsRoute(): ReactElement {
const query = useQuery, AxiosError>(
["get_reports"],
getReports,
@@ -29,7 +30,9 @@ export default function ReportsRoute(): ReactElement {
{""}
+ )
}
secondary={`${report.messageDetails.meta.from} -> ${report.messageDetails.meta.to}`}
>
@@ -42,3 +45,5 @@ export default function ReportsRoute(): ReactElement {
)
}
+
+export default WithEncryptionRequired(ReportsRoute)
diff --git a/src/server-types.ts b/src/server-types.ts
index 044443e..d475675 100644
--- a/src/server-types.ts
+++ b/src/server-types.ts
@@ -68,7 +68,7 @@ export interface ServerSettings {
imageProxyLifeTime: number
disposableEmailsEnabled: boolean
otherRelaysEnabled: boolean
- otherRelayDomains: Array
+ otherRelayDomains: string[]
emailVerificationChars: string
emailVerificationLength: number
emailLoginTokenChars: string