Skip to content

Commit fd513b9

Browse files
authored
cannot query OldDisplayName after a mutation is executed (#2324)
1 parent 2321ff3 commit fd513b9

1 file changed

Lines changed: 21 additions & 15 deletions

File tree

internal/ent/hooks/user.go

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)