@@ -15,6 +15,7 @@ import {
1515} from "@churchapps/apphelper" ;
1616import { AssociatePerson } from "./" ;
1717import { TextField } from "@mui/material" ;
18+ import { SendInviteDialog } from "../../components" ;
1819
1920interface Props {
2021 role : RoleInterface ;
@@ -37,6 +38,19 @@ export const UserAdd = (props: Props) => {
3738 const [ showNameFields , setShowNameFields ] = useState < boolean > ( false ) ;
3839 const [ editMode , setEditMode ] = useState < boolean > ( false ) ;
3940 const [ hasSearched , setHasSearched ] = useState < boolean > ( false ) ;
41+ const [ showInviteDialog , setShowInviteDialog ] = useState < boolean > ( false ) ;
42+ const [ inviteEmail , setInviteEmail ] = useState < string > ( "" ) ;
43+ const [ invitePersonName , setInvitePersonName ] = useState < string > ( "" ) ;
44+
45+ const showInviteOrFinish = ( emailAddr : string , personName : string , isNewUser : boolean ) => {
46+ if ( isNewUser || ! emailAddr ) {
47+ props . updatedFunction ( ) ;
48+ } else {
49+ setInviteEmail ( emailAddr ) ;
50+ setInvitePersonName ( personName ) ;
51+ setShowInviteDialog ( true ) ;
52+ }
53+ } ;
4054
4155 const saveExistingUser = async ( ) => {
4256 if ( validate ( ) ) {
@@ -48,7 +62,7 @@ export const UserAdd = (props: Props) => {
4862 person . name . first = firstName ;
4963 person . name . last = lastName ;
5064 await ApiHelper . post ( "/people" , [ person ] , "MembershipApi" ) ;
51- props . updatedFunction ( ) ;
65+ showInviteOrFinish ( email , firstName , false ) ;
5266 } catch {
5367 setErrors ( [ Locale . label ( "settings.userAdd.errAnother" ) ] ) ;
5468 }
@@ -60,7 +74,7 @@ export const UserAdd = (props: Props) => {
6074 const user = await createUserAndToGroup ( firstName , lastName , email ) ;
6175 const person = await createPerson ( user . id ) ;
6276 await linkUserAndPerson ( user . id , person . id ) ;
63- props . updatedFunction ( ) ;
77+ showInviteOrFinish ( email , firstName , user . isNewUser === true ) ;
6478 }
6579 } ;
6680
@@ -85,7 +99,7 @@ export const UserAdd = (props: Props) => {
8599 setErrors ( [ Locale . label ( "settings.userAdd.errDiff" ) ] ) ;
86100 }
87101
88- props . updatedFunction ( ) ;
102+ showInviteOrFinish ( userEmail , first , user . isNewUser === true ) ;
89103 } ;
90104
91105 const handleSave = async ( ) => {
@@ -107,9 +121,9 @@ export const UserAdd = (props: Props) => {
107121 await ApiHelper . post ( `/userchurch?userId=${ userId } ` , { personId } , "MembershipApi" ) ;
108122 } ;
109123
110- const createUserAndToGroup = async ( firstName : string , lastName : string , userEmail : string ) => {
124+ const createUserAndToGroup = async ( firstName : string , lastName : string , userEmail : string ) : Promise < UserInterface & { isNewUser ?: boolean } > => {
111125 const userPayload : LoadCreateUserRequestInterface = { firstName, lastName, userEmail } ;
112- const user : UserInterface = await ApiHelper . post ( "/users/loadOrCreate" , userPayload , "MembershipApi" ) ;
126+ const user : UserInterface & { isNewUser ?: boolean } = await ApiHelper . post ( "/users/loadOrCreate" , userPayload , "MembershipApi" ) ;
113127 const roleMember : RoleMemberInterface = { userId : user . id , roleId : props . role . id , churchId : UserHelper . currentUserChurch . church . id } ;
114128 await ApiHelper . post ( "/rolemembers/" , [ roleMember ] , "MembershipApi" ) ;
115129
@@ -157,7 +171,7 @@ export const UserAdd = (props: Props) => {
157171 setErrors ( [ Locale . label ( "settings.userAdd.errDiff" ) ] ) ;
158172 return ;
159173 }
160- props . updatedFunction ( ) ;
174+ showInviteOrFinish ( userEmail , first , user . isNewUser === true ) ;
161175 }
162176 } ;
163177
@@ -225,6 +239,15 @@ export const UserAdd = (props: Props) => {
225239 { nameField }
226240 { emailField }
227241 { message }
242+ { showInviteDialog && (
243+ < SendInviteDialog
244+ open = { showInviteDialog }
245+ personName = { invitePersonName }
246+ personEmail = { inviteEmail }
247+ contextName = { props . role . name }
248+ onClose = { ( ) => { setShowInviteDialog ( false ) ; props . updatedFunction ( ) ; } }
249+ />
250+ ) }
228251 </ InputBox >
229252 ) ;
230253} ;
0 commit comments