import { Text, Box, VStack, Divider, useToast, Heading, Alert, Tag, Button, HStack, Modal, ModalOverlay, ModalContent, ModalBody, Select, useDisclosure } from "@chakra-ui/react" import Card from "components/card" import Nav from "layouts/nav/nav" import PageContainer from "layouts/page-container" import Sidebar from "layouts/sidebar/sidebar" import React, { useEffect, useState } from "react" import { orgSettingLinks } from "src/data/links" import { requestApi } from "utils/axios/request" import { useRouter } from "next/router" import { User } from "src/types/user" import UserCard from "components/users/user-card" import { config } from "configs/config" import OrgMember from "components/users/org-member" import { Role } from "src/types/role" import { cloneDeep } from "lodash" const UserProfilePage = () => { const { isOpen, onOpen, onClose } = useDisclosure() const [currentMember,setCurrentMember]:[User,any] = useState(null) const [org, setOrg]:[User,any] = useState(null) const [users, setUsers]: [User[], any] = useState(null) const [secret, setSecret] = useState('') const router = useRouter() useEffect(() => { if (router.query.org_id) { getMembers() requestApi.get(`/org/secret/${router.query.org_id}`).then(res => setSecret(res.data)) requestApi.get(`/user/info/${router.query.org_id}`).then(res => setOrg(res.data)) } }, [router.query.org_id]) const getMembers = async () => { const res = await requestApi.get(`/org/members/${router.query.org_id}`) setUsers(res.data) } const toast = useToast() const generateSecret = async () => { const res = await requestApi.post(`/org/secret/${router.query.org_id}`) toast({ description: "生成secret成功", status: "success", duration: 2000, isClosable: true, }) setSecret(res.data) } const onDelete = async (member) => { await requestApi.delete(`/org/member/${org.id}/${member.id}`) toast({ description: "删除用户成功", status: "success", duration: 2000, isClosable: true, }) getMembers() } const onEdit = (member) => { setCurrentMember(member) onOpen() } const onChangeRole = e => { const member = cloneDeep(currentMember) member.role = e.currentTarget.value; setCurrentMember(member) } const onSumitMember = async () => { await requestApi.post(`/org/member/role`,{orgID:org.id, memberID: currentMember.id, role: currentMember.role}) setCurrentMember(null) onClose() getMembers() } return ( <> Grow the org Invite teammates by sending them the secret and the following instructions: 1. Sign in 2. Navigate to {config.uiDomain}/settings/orgs 3. Paste the secret code below and click Join Organization {secret} You should rotate this regularly! {users && { users.map(u => ) } } {currentMember && Change role } ) } export default UserProfilePage