@@ -4,12 +4,19 @@ import {
44 UserRole ,
55 EventType
66} from "../interfaces/enum" ;
7- import { getUser } from "../crud/user" ;
7+ import { getUser , updateUser } from "../crud/user" ;
88import {
99 getUserOrganizationId ,
1010 getUserMembershipObject
1111} from "../crud/membership" ;
12- import { createEmail , deleteEmail , getEmail } from "../crud/email" ;
12+ import {
13+ createEmail ,
14+ deleteEmail ,
15+ getEmail ,
16+ getUserVerifiedEmails ,
17+ getUserPrimaryEmail ,
18+ getUserPrimaryEmailObject
19+ } from "../crud/email" ;
1320import { Locals } from "../interfaces/general" ;
1421import { createEvent } from "../crud/event" ;
1522
@@ -55,6 +62,18 @@ export const deleteEmailFromUser = async (
5562 const email = await getEmail ( emailId ) ;
5663 if ( email . userId != userId )
5764 throw new Error ( ErrorCode . INSUFFICIENT_PERMISSION ) ;
65+ const verifiedEmails = await getUserVerifiedEmails ( userId ) ;
66+ if ( verifiedEmails . length > 1 ) {
67+ const currentPrimaryEmailId = ( await getUserPrimaryEmailObject ( userId ) ) . id ;
68+ if ( currentPrimaryEmailId == emailId ) {
69+ const nextVerifiedEmail = verifiedEmails . filter (
70+ emailObject => emailObject . id != emailId
71+ ) [ 0 ] ;
72+ await updateUser ( userId , { primaryEmail : nextVerifiedEmail } ) ;
73+ }
74+ } else {
75+ throw new Error ( EventType . EMAIL_CANNOT_DELETE ) ;
76+ }
5877 await deleteEmail ( emailId ) ;
5978 await createEvent (
6079 { userId, type : EventType . EMAIL_DELETED , data : { email : email . email } } ,
0 commit comments