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

@ -6,6 +6,7 @@ import toast from "react-hot-toast";
import { useTranslation } from "react-i18next";
import { useLoaderData } from "react-router-dom";
import useNavigateTo from "@/hooks/useNavigateTo";
import { Role } from "@/types/proto/api/v2/user_service";
import { showCommonDialog } from "../components/Alert";
import AnalyticsView from "../components/AnalyticsView";
import CreateShortcutDrawer from "../components/CreateShortcutDrawer";
@ -31,7 +32,7 @@ const ShortcutDetail = () => {
showEditDrawer: 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 shortcutLink = absolutifyLink(`/s/${shortcut.name}`);
const favicon = getFaviconWithGoogleS2(shortcut.link);

View File

@ -3,16 +3,12 @@ import React, { FormEvent, useEffect, useState } from "react";
import { toast } from "react-hot-toast";
import { useTranslation } from "react-i18next";
import { Link } from "react-router-dom";
import useNavigateTo from "@/hooks/useNavigateTo";
import useWorkspaceStore from "@/stores/v1/workspace";
import * as api from "../helpers/api";
import useLoading from "../hooks/useLoading";
import useUserStore from "../stores/v1/user";
const SignIn: React.FC = () => {
const { t } = useTranslation();
const navigateTo = useNavigateTo();
const userStore = useUserStore();
const workspaceStore = useWorkspaceStore();
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
@ -20,11 +16,7 @@ const SignIn: React.FC = () => {
const allowConfirm = email.length > 0 && password.length > 0;
useEffect(() => {
if (userStore.getCurrentUser()) {
return navigateTo("/", {
replace: true,
});
}
localStorage.removeItem("userId");
if (workspaceStore.profile.mode === "demo") {
setEmail("steven@yourselfhosted.com");
@ -50,12 +42,10 @@ const SignIn: React.FC = () => {
try {
actionBtnLoadingState.setLoading();
await api.signin(email, password);
const user = await userStore.fetchCurrentUser();
const { data: user } = await api.signin(email, password);
if (user) {
navigateTo("/", {
replace: true,
});
localStorage.setItem("userId", `${user.id}`);
window.location.href = "/";
} else {
toast.error("Signin failed");
}

View File

@ -7,12 +7,10 @@ import useNavigateTo from "@/hooks/useNavigateTo";
import useWorkspaceStore from "@/stores/v1/workspace";
import * as api from "../helpers/api";
import useLoading from "../hooks/useLoading";
import useUserStore from "../stores/v1/user";
const SignUp: React.FC = () => {
const { t } = useTranslation();
const navigateTo = useNavigateTo();
const userStore = useUserStore();
const workspaceStore = useWorkspaceStore();
const [email, setEmail] = useState("");
const [nickname, setNickname] = useState("");
@ -21,11 +19,7 @@ const SignUp: React.FC = () => {
const allowConfirm = email.length > 0 && nickname.length > 0 && password.length > 0;
useEffect(() => {
if (userStore.getCurrentUser()) {
return navigateTo("/", {
replace: true,
});
}
localStorage.removeItem("userId");
if (!workspaceStore.profile.enableSignup) {
return navigateTo("/auth", {
@ -57,12 +51,10 @@ const SignUp: React.FC = () => {
try {
actionBtnLoadingState.setLoading();
await api.signup(email, nickname, password);
const user = await userStore.fetchCurrentUser();
const { data: user } = await api.signup(email, nickname, password);
if (user) {
navigateTo("/", {
replace: true,
});
localStorage.setItem("userId", `${user.id}`);
window.location.href = "/";
} else {
toast.error("Signup failed");
}

View File

@ -7,13 +7,14 @@ import { subscriptionServiceClient } from "@/grpcweb";
import { stringifyPlanType } from "@/stores/v1/subscription";
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 useUserStore from "../stores/v1/user";
const SubscriptionSetting: React.FC = () => {
const workspaceStore = useWorkspaceStore();
const currentUser = useUserStore().getCurrentUser();
const [licenseKey, setLicenseKey] = useState<string>("");
const isAdmin = currentUser.role === "ADMIN";
const isAdmin = currentUser.role === Role.ADMIN;
const profile = workspaceStore.profile;
const handleUpdateLicenseKey = async () => {

View File

@ -4,6 +4,7 @@ import { Link } from "react-router-dom";
import Icon from "@/components/Icon";
import { stringifyPlanType } from "@/stores/v1/subscription";
import useWorkspaceStore from "@/stores/v1/workspace";
import { Role } from "@/types/proto/api/v2/user_service";
import MemberSection from "../components/setting/MemberSection";
import WorkspaceSection from "../components/setting/WorkspaceSection";
import useUserStore from "../stores/v1/user";
@ -11,7 +12,7 @@ import useUserStore from "../stores/v1/user";
const WorkspaceSetting: React.FC = () => {
const workspaceStore = useWorkspaceStore();
const currentUser = useUserStore().getCurrentUser();
const isAdmin = currentUser.role === "ADMIN";
const isAdmin = currentUser.role === Role.ADMIN;
const profile = workspaceStore.profile;
useEffect(() => {