@@ -109,6 +109,17 @@ func HookUser() ent.Hook {
109109 }
110110 }
111111
112+ var oldDisplayName string
113+ if m .Op ().Is (ent .OpUpdateOne ) && canUpdateManagedGroup (m ) {
114+ var err error
115+
116+ oldDisplayName , err = m .OldDisplayName (ctx )
117+ if err != nil {
118+ logx .FromContext (ctx ).Error ().Err (err ).Msg ("error getting old display name" )
119+ return nil , err
120+ }
121+ }
122+
112123 v , err := next .Mutate (ctx , m )
113124 if err != nil {
114125 return nil , err
@@ -121,7 +132,7 @@ func HookUser() ent.Hook {
121132
122133 // handle display name updates for managed groups
123134 if m .Op ().Is (ent .OpUpdateOne ) {
124- if err := updateSystemManagedGroupForUser (ctx , m , userCreated ); err != nil {
135+ if err := updateSystemManagedGroupForUser (ctx , m , userCreated , oldDisplayName ); err != nil {
125136 logx .FromContext (ctx ).Error ().Err (err ).Msg ("error updating system managed group name for the user" )
126137 return nil , err
127138 }
@@ -372,7 +383,15 @@ func defaultUserSettings(ctx context.Context, user *generated.UserMutation) (str
372383 return userSetting .ID , nil
373384}
374385
375- func updateSystemManagedGroupForUser (ctx context.Context , m * generated.UserMutation , user * generated.User ) error {
386+ func canUpdateManagedGroup (m * generated.UserMutation ) bool {
387+ _ , didDisplayNameChange := m .DisplayName ()
388+ _ , didAvatarRemoteURLChange := m .AvatarRemoteURL ()
389+ _ , didLocalFileChange := m .AvatarLocalFileID ()
390+
391+ return didDisplayNameChange || didAvatarRemoteURLChange || didLocalFileChange
392+ }
393+
394+ func updateSystemManagedGroupForUser (ctx context.Context , m * generated.UserMutation , user * generated.User , oldDisplayName string ) error {
376395 displayName , ok := m .DisplayName ()
377396
378397 avatarRemoteURL , isAvatarRemoteURLChanged := m .AvatarRemoteURL ()
@@ -382,20 +401,7 @@ func updateSystemManagedGroupForUser(ctx context.Context, m *generated.UserMutat
382401 return nil
383402 }
384403
385- oldDisplayName , err := m .OldDisplayName (ctx )
386- if err != nil {
387- return err
388- }
389-
390404 if ok {
391- var err error
392-
393- oldDisplayName , err = m .OldDisplayName (ctx )
394- if err != nil {
395- logx .FromContext (ctx ).Error ().Err (err ).Msg ("error getting old display name" )
396- return err
397- }
398-
399405 if oldDisplayName == displayName {
400406 ok = false
401407 }
0 commit comments