From c11f3061ed734314435340c41151e9c9c7e38a90 Mon Sep 17 00:00:00 2001 From: Martin Sulikowski Date: Tue, 24 Mar 2026 21:13:19 +0100 Subject: [PATCH] Refactor UserManager to return updated user from `updateNameIfChanged` and fix name mapping handling. --- .../eternalcode/core/user/UserManager.java | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/user/UserManager.java b/eternalcore-core/src/main/java/com/eternalcode/core/user/UserManager.java index 02f391ea8..aa1222578 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/user/UserManager.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/user/UserManager.java @@ -34,16 +34,16 @@ public CompletableFuture findOrCreate(UUID uniqueId, String name) { User cached = this.usersByUniqueId.get(uniqueId); if (cached != null) { - this.updateNameIfChanged(cached, name); - return CompletableFuture.completedFuture(this.updateLastSeen(cached)); + User updatedUser = this.updateNameIfChanged(cached, name); + return CompletableFuture.completedFuture(this.updateLastSeen(updatedUser)); } return this.userRepository.getUser(uniqueId) .thenApply(optionalUser -> { User user = optionalUser .map(existing -> { - this.updateNameIfChanged(existing, name); - return this.updateLastSeen(existing); + User updatedUser = this.updateNameIfChanged(existing, name); + return this.updateLastSeen(updatedUser); }) .orElseGet(() -> this.createNewUser(uniqueId, name)); @@ -59,12 +59,16 @@ private User createNewUser(UUID uniqueId, String name) { return user; } - private void updateNameIfChanged(User user, String name) { - if (!user.getName().equals(name)) { - User updated = new User(user.getUniqueId(), name, user.getLastSeen(), user.getAccountCreated()); - this.add(updated); - this.userRepository.saveUser(updated); + private User updateNameIfChanged(User user, String name) { + if (user.getName().equals(name)) { + return user; } + + User updated = new User(user.getUniqueId(), name, user.getLastSeen(), user.getAccountCreated()); + this.removeNameMapping(user); + this.add(updated); + this.userRepository.saveUser(updated); + return updated; } private User updateLastSeen(User user) { @@ -74,6 +78,10 @@ private User updateLastSeen(User user) { return updated; } + private void removeNameMapping(User user) { + this.usersByName.remove(user.getName(), user); + } + private void add(User user) { this.usersByUniqueId.put(user.getUniqueId(), user); this.usersByName.put(user.getName(), user);