diff --git a/packages/app/src/components/invite-members/index.tsx b/packages/app/src/components/invite-members/index.tsx index 3376c9b0ea..253146f85f 100644 --- a/packages/app/src/components/invite-members/index.tsx +++ b/packages/app/src/components/invite-members/index.tsx @@ -4,6 +4,8 @@ import { Modal, ModalWrapper, ModalCloseButton } from '@/ui/modal'; import { Button } from '@/ui/button'; import Input from '@/ui/input'; import { useState } from 'react'; +import { inviteMember, getUserByEmail } from '@pathfinder/data-services'; +import { useAppState } from '@/providers/app-state-provider'; interface LoginModalProps { open: boolean; @@ -33,16 +35,32 @@ export const debounce = any>( }, delay); }; }; + const gmailReg = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@gmail\.com$/; export const InviteMembers = ({ open, onClose }: LoginModalProps) => { const [canInvite, setCanInvite] = useState(true); + const [email, setEmail] = useState(''); const [showMember, setShowMember] = useState(true); - const [showTip, setShowTip] = useState(true); - - const InputChange = (value: string) => { + const [showTip, setShowTip] = useState(false); + const { currentWorkspaceId } = useAppState(); + const inputChange = (value: string) => { + setEmail(value); setShowMember(true); if (gmailReg.test(value)) { setShowTip(false); + debounce( + () => { + getUserByEmail({ email: value }).then(data => { + console.log('data: ', data); + if (data) { + setCanInvite(false); + } + }); + }, + 300, + true + )(); + } else { } }; return ( @@ -63,7 +81,8 @@ export const InviteMembers = ({ open, onClose }: LoginModalProps) => { { setShowMember(false); }} @@ -89,7 +108,19 @@ export const InviteMembers = ({ open, onClose }: LoginModalProps) => {
-
diff --git a/packages/app/src/components/workspace-setting/workspace-setting.tsx b/packages/app/src/components/workspace-setting/workspace-setting.tsx index c315972d0d..ff25400507 100644 --- a/packages/app/src/components/workspace-setting/workspace-setting.tsx +++ b/packages/app/src/components/workspace-setting/workspace-setting.tsx @@ -38,7 +38,7 @@ import { import { useEffect, useState } from 'react'; import { Button } from '@/ui/button'; import Input from '@/ui/input'; - +import { InviteMembers } from '../invite-members/index'; enum ActiveTab { 'general' = 'general', 'members' = 'members', @@ -162,6 +162,7 @@ const GeneralPage = () => { }; const MembersPage = () => { + const [isInviteModalShow, setIsInviteModalShow] = useState(false); return (
@@ -184,10 +185,23 @@ const MembersPage = () => { - + { + setIsInviteModalShow(false); + }} + open={isInviteModalShow} + > + Inv
); };