From 3c9918e8b7c6cb7313993b61f667c49870cf0502 Mon Sep 17 00:00:00 2001
From: Myzel394 <50424412+Myzel394@users.noreply.github.com>
Date: Sat, 29 Oct 2022 17:26:56 +0200
Subject: [PATCH] improvements; added CustomAliasDialog.tsx
---
src/App.tsx | 1 +
src/constants/values.ts | 1 +
.../AliasRoute/AliasListItem.tsx | 32 ----
.../AliasesRoute/AliasListItem.tsx | 28 +++
.../CreateAliasButton.tsx} | 36 ++--
.../AliasesRoute/CustomAliasDialog.tsx | 164 ++++++++++++++++++
.../ConfirmCodeForm/ConfirmCodeForm.tsx | 2 +-
src/routes/AliasesRoute.tsx | 67 +++----
src/server-types.ts | 2 +
9 files changed, 254 insertions(+), 79 deletions(-)
delete mode 100644 src/route-widgets/AliasRoute/AliasListItem.tsx
create mode 100644 src/route-widgets/AliasesRoute/AliasListItem.tsx
rename src/route-widgets/{AliasRoute/CreateRandomAliasButton.tsx => AliasesRoute/CreateAliasButton.tsx} (66%)
create mode 100644 src/route-widgets/AliasesRoute/CustomAliasDialog.tsx
diff --git a/src/App.tsx b/src/App.tsx
index bf9fb78..52b8cd1 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -58,6 +58,7 @@ const router = createBrowserRouter([
element: ,
children: [
{
+ loader: getServerSettings,
path: "/aliases",
element: ,
},
diff --git a/src/constants/values.ts b/src/constants/values.ts
index 83df337..c78bd5c 100644
--- a/src/constants/values.ts
+++ b/src/constants/values.ts
@@ -1 +1,2 @@
export const MASTER_PASSWORD_LENGTH = 4096
+export const LOCAL_REGEX = /^[a-zA-Z0-9!#$%&‘*+–/=?^_`.{|}~-]{1,64}$/g
diff --git a/src/route-widgets/AliasRoute/AliasListItem.tsx b/src/route-widgets/AliasRoute/AliasListItem.tsx
deleted file mode 100644
index aa93279..0000000
--- a/src/route-widgets/AliasRoute/AliasListItem.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import {ReactElement} from "react"
-import {MdOutlineMoreVert} from "react-icons/md"
-
-import {
- IconButton,
- ListItemButton,
- ListItemSecondaryAction,
- ListItemText,
-} from "@mui/material"
-
-import {AliasList} from "~/server-types"
-
-export interface AliasListItemProps {
- alias: AliasList
-}
-
-export default function AliasListItem({
- alias,
-}: AliasListItemProps): ReactElement {
- const address = `${alias.local}@${alias.domain}`
-
- return (
-
-
-
-
-
-
-
-
- )
-}
diff --git a/src/route-widgets/AliasesRoute/AliasListItem.tsx b/src/route-widgets/AliasesRoute/AliasListItem.tsx
new file mode 100644
index 0000000..3910e5c
--- /dev/null
+++ b/src/route-widgets/AliasesRoute/AliasListItem.tsx
@@ -0,0 +1,28 @@
+import {ReactElement} from "react"
+import {FaHashtag, FaRandom} from "react-icons/fa"
+
+import {ListItemButton, ListItemIcon, ListItemText} from "@mui/material"
+
+import {AliasList, AliasType} from "~/server-types"
+
+export interface AliasListItemProps {
+ alias: AliasList
+}
+
+const ALIAS_TYPE_ICON_MAP: Record = {
+ [AliasType.RANDOM]: ,
+ [AliasType.CUSTOM]: ,
+}
+
+export default function AliasListItem({
+ alias,
+}: AliasListItemProps): ReactElement {
+ const address = `${alias.local}@${alias.domain}`
+
+ return (
+
+ {ALIAS_TYPE_ICON_MAP[alias.type]}
+
+
+ )
+}
diff --git a/src/route-widgets/AliasRoute/CreateRandomAliasButton.tsx b/src/route-widgets/AliasesRoute/CreateAliasButton.tsx
similarity index 66%
rename from src/route-widgets/AliasRoute/CreateRandomAliasButton.tsx
rename to src/route-widgets/AliasesRoute/CreateAliasButton.tsx
index 131b33d..73f26fc 100644
--- a/src/route-widgets/AliasRoute/CreateRandomAliasButton.tsx
+++ b/src/route-widgets/AliasesRoute/CreateAliasButton.tsx
@@ -15,20 +15,25 @@ import {
} from "@mui/material"
import {useMutation} from "@tanstack/react-query"
-import {CreateAliasData, createAlias} from "~/apis"
+import {createAlias} from "~/apis"
import {Alias, AliasType} from "~/server-types"
-export interface CreateRandomAliasButtonProps {
- onCreated: (alias: Alias) => void
+export interface CreateAliasButtonProps {
+ onRandomCreated: (alias: Alias) => void
+ onCustomCreated: () => void
}
-export default function CreateRandomAliasButton({
- onCreated,
-}: CreateRandomAliasButtonProps): ReactElement {
- const {mutate, isLoading} = useMutation(
- createAlias,
+export default function CreateAliasButton({
+ onRandomCreated,
+ onCustomCreated,
+}: CreateAliasButtonProps): ReactElement {
+ const {mutate, isLoading} = useMutation(
+ () =>
+ createAlias({
+ type: AliasType.RANDOM,
+ }),
{
- onSuccess: onCreated,
+ onSuccess: onRandomCreated,
},
)
@@ -41,11 +46,7 @@ export default function CreateRandomAliasButton({
}
- onClick={() =>
- mutate({
- type: AliasType.RANDOM,
- })
- }
+ onClick={() => mutate()}
>
Create random alias
@@ -62,7 +63,12 @@ export default function CreateRandomAliasButton({
onClose={() => setAnchorElement(null)}
>
-