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/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..07563f3d 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);