Add possibility to invite members to workspace (#579)

* Add possibility to invite members to workspace

* Update endpoints

* Wrap up front end

* Fix according to review

* Fix lint
This commit is contained in:
Charles Bochet
2023-07-10 23:33:15 -07:00
committed by GitHub
parent e1161e96a9
commit 55576cb638
75 changed files with 629 additions and 63 deletions

View File

@ -1,5 +1,5 @@
import { useCallback, useState } from 'react';
import { useNavigate } from 'react-router-dom';
import { useCallback, useEffect, useState } from 'react';
import { useNavigate, useParams } from 'react-router-dom';
import styled from '@emotion/styled';
import { motion } from 'framer-motion';
import { useRecoilState } from 'recoil';
@ -62,35 +62,61 @@ export function PasswordLogin() {
);
const [formError, setFormError] = useState('');
const { login } = useAuth();
const handleLogin = useCallback(async () => {
try {
setMockMode(false);
await login(authFlowUserEmail, internalPassword);
navigate('/auth/create/workspace');
} catch (err: any) {
setFormError(err.message);
}
}, [login, authFlowUserEmail, internalPassword, setMockMode, navigate]);
useScopedHotkeys(
'enter',
() => {
handleLogin();
},
InternalHotkeysScope.PasswordLogin,
[handleLogin],
);
const { login, signUp, signUpToWorkspace } = useAuth();
const { loading, data } = useCheckUserExistsQuery({
variables: {
email: authFlowUserEmail,
},
});
useEffect(() => {
setMockMode(true);
}, [setMockMode]);
const workspaceInviteHash = useParams().workspaceInviteHash;
const handleSubmit = useCallback(async () => {
try {
setMockMode(false);
if (data?.checkUserExists.exists) {
await login(authFlowUserEmail, internalPassword);
} else {
if (workspaceInviteHash) {
await signUpToWorkspace(
authFlowUserEmail,
internalPassword,
workspaceInviteHash,
);
} else {
await signUp(authFlowUserEmail, internalPassword);
}
}
navigate('/auth/create/workspace');
} catch (err: any) {
setFormError(err.message);
}
}, [
login,
signUp,
signUpToWorkspace,
authFlowUserEmail,
internalPassword,
setMockMode,
navigate,
data?.checkUserExists.exists,
workspaceInviteHash,
]);
useScopedHotkeys(
'enter',
() => {
handleSubmit();
},
InternalHotkeysScope.PasswordLogin,
[handleSubmit],
);
return (
<>
<Logo />
@ -124,7 +150,7 @@ export function PasswordLogin() {
<StyledButtonContainer>
<MainButton
title="Continue"
onClick={handleLogin}
onClick={handleSubmit}
disabled={!authFlowUserEmail || !internalPassword || loading}
fullWidth
/>