chore(frontend): update user module

This commit is contained in:
Steven
2023-11-20 23:14:16 +08:00
parent 832eb7cbf1
commit 35785a1a28
15 changed files with 87 additions and 138 deletions

View File

@ -3,6 +3,7 @@ import { isUndefined } from "lodash-es";
import { useEffect, useState } from "react";
import { toast } from "react-hot-toast";
import { useTranslation } from "react-i18next";
import { Role, User } from "@/types/proto/api/v2/user_service";
import useLoading from "../hooks/useLoading";
import useUserStore from "../stores/v1/user";
import Icon from "./Icon";
@ -14,11 +15,9 @@ interface Props {
}
interface State {
userCreate: UserCreate;
userCreate: Pick<User, "email" | "nickname" | "password" | "role">;
}
const roles: Role[] = ["USER", "ADMIN"];
const CreateUserDialog: React.FC<Props> = (props: Props) => {
const { onClose, onConfirm, user } = props;
const { t } = useTranslation();
@ -28,7 +27,7 @@ const CreateUserDialog: React.FC<Props> = (props: Props) => {
email: "",
nickname: "",
password: "",
role: "USER",
role: Role.USER,
},
});
const requestState = useLoading(false);
@ -95,7 +94,7 @@ const CreateUserDialog: React.FC<Props> = (props: Props) => {
try {
if (user) {
const userPatch: UserPatch = {
const userPatch: Partial<User> = {
id: user.id,
};
if (user.email !== state.userCreate.email) {
@ -179,9 +178,8 @@ const CreateUserDialog: React.FC<Props> = (props: Props) => {
</span>
<div className="w-full flex flex-row justify-start items-center text-base">
<RadioGroup orientation="horizontal" value={state.userCreate.role} onChange={handleRoleInputChange}>
{roles.map((role) => (
<Radio key={role} value={role} label={role} />
))}
<Radio value={Role.USER} label={"User"} />
<Radio value={Role.ADMIN} label={"Admin"} />
</RadioGroup>
</div>
</div>

View File

@ -4,6 +4,7 @@ import { useTranslation } from "react-i18next";
import { Link, useLocation } from "react-router-dom";
import useWorkspaceStore from "@/stores/v1/workspace";
import { PlanType } from "@/types/proto/api/v2/subscription_service";
import { Role } from "@/types/proto/api/v2/user_service";
import * as api from "../helpers/api";
import useUserStore from "../stores/v1/user";
import AboutDialog from "./AboutDialog";
@ -17,11 +18,12 @@ const Header: React.FC = () => {
const currentUser = useUserStore().getCurrentUser();
const [showAboutDialog, setShowAboutDialog] = useState<boolean>(false);
const profile = workspaceStore.profile;
const isAdmin = currentUser.role === "ADMIN";
const isAdmin = currentUser.role === Role.ADMIN;
const shouldShowRouterSwitch = location.pathname === "/" || location.pathname === "/collections";
const handleSignOutButtonClick = async () => {
await api.signout();
localStorage.removeItem("userId");
window.location.href = "/auth";
};

View File

@ -1,6 +1,7 @@
import { useState } from "react";
import { useTranslation } from "react-i18next";
import useNavigateTo from "@/hooks/useNavigateTo";
import { Role } from "@/types/proto/api/v2/user_service";
import { shortcutService } from "../services";
import useUserStore from "../stores/v1/user";
import { showCommonDialog } from "./Alert";
@ -20,7 +21,7 @@ const ShortcutActionsDropdown = (props: Props) => {
const currentUser = useUserStore().getCurrentUser();
const [showEditDrawer, setShowEditDrawer] = useState<boolean>(false);
const [showQRCodeDialog, setShowQRCodeDialog] = useState<boolean>(false);
const havePermission = currentUser.role === "ADMIN" || shortcut.creatorId === currentUser.id;
const havePermission = currentUser.role === Role.ADMIN || shortcut.creatorId === currentUser.id;
const handleDeleteShortcutButtonClick = (shortcut: Shortcut) => {
showCommonDialog({

View File

@ -1,6 +1,7 @@
import { Button } from "@mui/joy";
import { useState } from "react";
import { useTranslation } from "react-i18next";
import { Role } from "@/types/proto/api/v2/user_service";
import useUserStore from "../../stores/v1/user";
import ChangePasswordDialog from "../ChangePasswordDialog";
import EditUserinfoDialog from "../EditUserinfoDialog";
@ -10,7 +11,7 @@ const AccountSection: React.FC = () => {
const currentUser = useUserStore().getCurrentUser();
const [showEditUserinfoDialog, setShowEditUserinfoDialog] = useState<boolean>(false);
const [showChangePasswordDialog, setShowChangePasswordDialog] = useState<boolean>(false);
const isAdmin = currentUser.role === "ADMIN";
const isAdmin = currentUser.role === Role.ADMIN;
return (
<>

View File

@ -2,6 +2,7 @@ import { Button, IconButton } from "@mui/joy";
import { useEffect, useState } from "react";
import toast from "react-hot-toast";
import { useTranslation } from "react-i18next";
import { User } from "@/types/proto/api/v2/user_service";
import useUserStore from "../../stores/v1/user";
import { showCommonDialog } from "../Alert";
import CreateUserDialog from "../CreateUserDialog";