From d9883317798bab145db3e2e23a0265b36d6c2347 Mon Sep 17 00:00:00 2001 From: Quentin Ra Date: Mon, 12 Jul 2021 22:40:28 +0200 Subject: [PATCH 1/2] fix avatar not changed on edit profile --- src/main/java/com/lgs/eden/api/nexus/NexusHandler.java | 7 +++++++ src/main/java/com/lgs/eden/utils/Utility.java | 4 ++++ src/main/java/com/lgs/eden/views/profile/EditProfile.java | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/src/main/java/com/lgs/eden/api/nexus/NexusHandler.java b/src/main/java/com/lgs/eden/api/nexus/NexusHandler.java index b3d629c7..1ea22845 100644 --- a/src/main/java/com/lgs/eden/api/nexus/NexusHandler.java +++ b/src/main/java/com/lgs/eden/api/nexus/NexusHandler.java @@ -12,6 +12,7 @@ import com.lgs.eden.api.nexus.helpers.RequestObject; import com.lgs.eden.api.profile.friends.FriendConversationView; import com.lgs.eden.application.AppWindowHandler; +import com.lgs.eden.utils.Utility; import io.socket.client.Ack; import io.socket.client.IO; import io.socket.client.Socket; @@ -84,6 +85,12 @@ private NexusHandler(Socket socket) { ((ImpSocket)this.callback).setParent(this); ((ImpSocket)this.games).setParent(this); ((ImpSocket)this.profile).setParent(this); + + socket.on("avatar-changed", args -> { + if (args.length == 1 && args[0] instanceof String avatarPath){ + Utility.reloadImage(avatarPath); + } + }); } @Override diff --git a/src/main/java/com/lgs/eden/utils/Utility.java b/src/main/java/com/lgs/eden/utils/Utility.java index 6d8373b6..2c7f48a1 100644 --- a/src/main/java/com/lgs/eden/utils/Utility.java +++ b/src/main/java/com/lgs/eden/utils/Utility.java @@ -37,6 +37,10 @@ public final class Utility { */ public static Image loadImage(String path) throws NullPointerException { if (images.containsKey(path)) return images.get(path); + return reloadImage(path); + } + + public static Image reloadImage(String path) { try { if (path.startsWith("/")) images.put(path, new Image(Objects.requireNonNull(Utility.class.getResourceAsStream(path)))); else images.put(path, new Image(path)); diff --git a/src/main/java/com/lgs/eden/views/profile/EditProfile.java b/src/main/java/com/lgs/eden/views/profile/EditProfile.java index 4bc2eb01..feb2dffd 100644 --- a/src/main/java/com/lgs/eden/views/profile/EditProfile.java +++ b/src/main/java/com/lgs/eden/views/profile/EditProfile.java @@ -27,6 +27,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Objects; /** * Edit profile view @@ -108,6 +109,10 @@ private void onSubmitChanges(){ } else { try { LoginResponseData d = API.imp.editProfile(newUsername, newAvatar, newDesc); + // clear cache + if(Objects.equals(d.avatarPath, "null")) { + Utility.reloadImage(d.avatarPath); + } AppWindowHandler.updateLoginResponse(d); // go back AppWindowHandler.setScreen(Profile.getScreen(), ViewsPath.PROFILE); From 668148c9c7f775ca892f5a7a3959a15b70290be6 Mon Sep 17 00:00:00 2001 From: Quentin Ra Date: Mon, 12 Jul 2021 22:51:26 +0200 Subject: [PATCH 2/2] fix avatar not changed on edit profile --- src/main/java/com/lgs/eden/api/auth/LoginResponseData.java | 2 +- src/main/java/com/lgs/eden/views/profile/EditProfile.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/lgs/eden/api/auth/LoginResponseData.java b/src/main/java/com/lgs/eden/api/auth/LoginResponseData.java index 3736fdfd..50f94a8c 100644 --- a/src/main/java/com/lgs/eden/api/auth/LoginResponseData.java +++ b/src/main/java/com/lgs/eden/api/auth/LoginResponseData.java @@ -43,7 +43,7 @@ public String toString() { "code=" + code + ", userID=" + userID + ", username='" + username + '\'' + - ", avatar=" + avatar + + ", avatar=" + avatarPath + '}'; } } diff --git a/src/main/java/com/lgs/eden/views/profile/EditProfile.java b/src/main/java/com/lgs/eden/views/profile/EditProfile.java index feb2dffd..07563f3d 100644 --- a/src/main/java/com/lgs/eden/views/profile/EditProfile.java +++ b/src/main/java/com/lgs/eden/views/profile/EditProfile.java @@ -110,7 +110,7 @@ private void onSubmitChanges(){ try { LoginResponseData d = API.imp.editProfile(newUsername, newAvatar, newDesc); // clear cache - if(Objects.equals(d.avatarPath, "null")) { + if(!Objects.equals(d.avatarPath, "null")) { Utility.reloadImage(d.avatarPath); } AppWindowHandler.updateLoginResponse(d);