From fde7705850c04febbd4724e88be38ab15707141b Mon Sep 17 00:00:00 2001
From: Myzel394 <50424412+Myzel394@users.noreply.github.com>
Date: Thu, 2 Feb 2023 21:12:14 +0100
Subject: [PATCH] added ReservedAliasesForm.tsx
---
public/locales/en-US/translation.json | 6 +++-
src/App.tsx | 3 +-
src/apis/get-admin-users.ts | 19 ++++++++++++
src/apis/get-reserved-aliases.ts | 23 ++++++++++++++
src/apis/index.ts | 4 +++
.../AdminPage/ReservedAliasesForm.tsx | 17 ++++++++++
src/routes/AdminRoute.tsx | 31 +++++++++++++------
src/server-types.ts | 10 ++++++
8 files changed, 101 insertions(+), 12 deletions(-)
create mode 100644 src/apis/get-admin-users.ts
create mode 100644 src/apis/get-reserved-aliases.ts
create mode 100644 src/route-widgets/AdminPage/ReservedAliasesForm.tsx
diff --git a/public/locales/en-US/translation.json b/public/locales/en-US/translation.json
index 8cffdb8..8f0ede7 100644
--- a/public/locales/en-US/translation.json
+++ b/public/locales/en-US/translation.json
@@ -279,6 +279,9 @@
"LogoutRoute": {
"title": "Log out",
"description": "We are logging you out..."
+ },
+ "AdminRoute": {
+ "title": "Site configuration"
}
},
@@ -287,7 +290,8 @@
"overview": "Overview",
"aliases": "Aliases",
"reports": "Reports",
- "settings": "Settings"
+ "settings": "Settings",
+ "admin": "Admin"
},
"AuthenticateRoute": {
"signup": "Sign up",
diff --git a/src/App.tsx b/src/App.tsx
index 8f2111d..8771a11 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -24,6 +24,7 @@ import SettingsRoute from "~/routes/SettingsRoute"
import SignupRoute from "~/routes/SignupRoute"
import VerifyEmailRoute from "~/routes/VerifyEmailRoute"
+import AdminRoute from "~/routes/AdminRoute"
import I18nHandler from "./I18nHandler"
import "./init-i18n"
@@ -101,7 +102,7 @@ const router = createBrowserRouter([
},
{
path: "/admin",
- element: ,
+ element: ,
},
],
},
diff --git a/src/apis/get-admin-users.ts b/src/apis/get-admin-users.ts
new file mode 100644
index 0000000..8d34dc6
--- /dev/null
+++ b/src/apis/get-admin-users.ts
@@ -0,0 +1,19 @@
+import {client} from "~/constants/axios-client"
+
+export interface GetAdminUsersResponse {
+ users: Array<{
+ id: string
+ email: {
+ id: string
+ address: string
+ }
+ }>
+}
+
+export default async function getAdminUsers(): Promise {
+ const {data} = await client.get(`${import.meta.env.VITE_SERVER_BASE_URL}/v1/admin/users`, {
+ withCredentials: true,
+ })
+
+ return data
+}
diff --git a/src/apis/get-reserved-aliases.ts b/src/apis/get-reserved-aliases.ts
new file mode 100644
index 0000000..8cfb5ce
--- /dev/null
+++ b/src/apis/get-reserved-aliases.ts
@@ -0,0 +1,23 @@
+import {GetPageData, PaginationResult, ReservedAlias} from "~/server-types"
+import {client} from "~/constants/axios-client"
+
+export interface GetReservedAliasesData extends GetPageData {
+ query?: string
+}
+
+export default async function getReservedAliases({
+ query,
+ size,
+ page,
+}: GetReservedAliasesData = {}): Promise> {
+ const {data} = await client.get(`${import.meta.env.VITE_SERVER_BASE_URL}/v1/reserved-alias/`, {
+ withCredentials: true,
+ params: {
+ query,
+ size,
+ page,
+ },
+ })
+
+ return data
+}
diff --git a/src/apis/index.ts b/src/apis/index.ts
index 81a7522..ddf3005 100644
--- a/src/apis/index.ts
+++ b/src/apis/index.ts
@@ -38,3 +38,7 @@ export * from "./delete-report"
export {default as deleteReport} from "./delete-report"
export * from "./get-me"
export {default as getMe} from "./get-me"
+export * from "./get-admin-users"
+export {default as getAdminUsers} from "./get-admin-users"
+export * from "./get-reserved-aliases"
+export {default as getReservedAliases} from "./get-reserved-aliases"
diff --git a/src/route-widgets/AdminPage/ReservedAliasesForm.tsx b/src/route-widgets/AdminPage/ReservedAliasesForm.tsx
new file mode 100644
index 0000000..86fac79
--- /dev/null
+++ b/src/route-widgets/AdminPage/ReservedAliasesForm.tsx
@@ -0,0 +1,17 @@
+import {ReactElement} from "react"
+import {AxiosError} from "axios"
+
+import {useQuery} from "@tanstack/react-query"
+
+import {GetAdminUsersResponse, getAdminUsers} from "~/apis"
+
+export interface ReservedAliasesFormProps {}
+
+export default function ReservedAliasesForm({}: ReservedAliasesFormProps): ReactElement {
+ const {data: {users} = {}} = useQuery(
+ ["getAdminUsers"],
+ getAdminUsers,
+ )
+
+ console.log(users)
+}
diff --git a/src/routes/AdminRoute.tsx b/src/routes/AdminRoute.tsx
index e2b9f66..c34fda8 100644
--- a/src/routes/AdminRoute.tsx
+++ b/src/routes/AdminRoute.tsx
@@ -1,15 +1,26 @@
-import {ReactElement, useLayoutEffect} from "react";
-import {useNavigateToNext, useUser} from "~/hooks";
+import {ReactElement, useLayoutEffect} from "react"
+import {useTranslation} from "react-i18next"
+
+import {SimplePageBuilder} from "~/components"
+import {useNavigateToNext, useUser} from "~/hooks"
+import ReservedAliasesForm from "~/route-widgets/AdminPage/ReservedAliasesForm"
+import ReservedAliasesList from "~/route-widgets/AdminPage/ReservedAliasesList"
export default function AdminRoute(): ReactElement {
- const navigateToNext = useNavigateToNext();
- const user = useUser();
-
- useLayoutEffect(() => {
- if (!user.isAdmin) {
- navigateToNext();
- }
- }, [user.isAdmin, navigateToNext])
+ const {t} = useTranslation()
+ const navigateToNext = useNavigateToNext()
+ const user = useUser()
+ useLayoutEffect(() => {
+ if (!user.isAdmin) {
+ navigateToNext()
+ }
+ }, [user.isAdmin, navigateToNext])
+ return (
+
+
+
+
+ )
}
diff --git a/src/server-types.ts b/src/server-types.ts
index eeef306..8b6cb7c 100644
--- a/src/server-types.ts
+++ b/src/server-types.ts
@@ -101,6 +101,16 @@ export interface Alias {
prefExpandUrlShorteners: boolean | null
}
+export interface ReservedAlias {
+ id: string
+ domain: string
+ local: string
+ users: Array<{
+ id: string
+ email: string
+ }>
+}
+
export interface AliasNote {
version: "1.0"
data: {