From c8cf5df4e2c059b50225c7df6879c1be6036f2fa Mon Sep 17 00:00:00 2001 From: Mathias-Boulay Date: Sat, 11 Mar 2023 22:05:36 +0100 Subject: [PATCH] Workaround: auto Delete corrupted accounts --- .../main/java/com/kdt/mcgui/mcAccountSpinner.java | 13 ++++++++++++- .../main/java/net/kdt/pojavlaunch/PojavProfile.java | 2 +- .../net/kdt/pojavlaunch/value/MinecraftAccount.java | 4 ++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app_pojavlauncher/src/main/java/com/kdt/mcgui/mcAccountSpinner.java b/app_pojavlauncher/src/main/java/com/kdt/mcgui/mcAccountSpinner.java index fe16526c1..79df93aff 100644 --- a/app_pojavlauncher/src/main/java/com/kdt/mcgui/mcAccountSpinner.java +++ b/app_pojavlauncher/src/main/java/com/kdt/mcgui/mcAccountSpinner.java @@ -159,7 +159,8 @@ public class mcAccountSpinner extends AppCompatSpinner implements AdapterView.On } pickAccount(position); - performLogin(mSelectecAccount); + if(mSelectecAccount != null) + performLogin(mSelectecAccount); } @Override @@ -278,6 +279,16 @@ public class mcAccountSpinner extends AppCompatSpinner implements AdapterView.On if(position != -1){ PojavProfile.setCurrentProfile(getContext(), mAccountList.get(position)); selectedAccount = PojavProfile.getCurrentProfileContent(getContext(), mAccountList.get(position)); + + + // WORKAROUND + // Account file corrupted due to previous versions having improper encoding + if (selectedAccount == null){ + removeCurrentAccount(); + pickAccount(-1); + setSelection(0); + return; + } setSelection(position); }else { // Get the current profile, or the first available profile if the wanted one is unavailable diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/PojavProfile.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/PojavProfile.java index a22af64f0..471c89987 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/PojavProfile.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/PojavProfile.java @@ -25,7 +25,7 @@ public class PojavProfile { return ctx.getSharedPreferences(PROFILE_PREF, Context.MODE_PRIVATE); } - public static MinecraftAccount getCurrentProfileContent(@NonNull Context ctx, @Nullable String profileName) throws JsonSyntaxException { + public static MinecraftAccount getCurrentProfileContent(@NonNull Context ctx, @Nullable String profileName) { return MinecraftAccount.load(profileName == null ? getCurrentProfileName(ctx) : profileName); } diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/MinecraftAccount.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/MinecraftAccount.java index d9c13aa1e..222ed9e47 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/MinecraftAccount.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/MinecraftAccount.java @@ -62,7 +62,7 @@ public class MinecraftAccount { return Tools.GLOBAL_GSON.fromJson(content, MinecraftAccount.class); } - public static MinecraftAccount load(String name) throws JsonSyntaxException { + public static MinecraftAccount load(String name) { if(!accountExists(name)) return null; try { MinecraftAccount acc = parse(Tools.read(Tools.DIR_ACCOUNT_NEW + "/" + name + ".json")); @@ -88,7 +88,7 @@ public class MinecraftAccount { // acc.updateSkinFace("MHF_Steve"); } return acc; - } catch(IOException e) { + } catch(IOException | JsonSyntaxException e) { Log.e(MinecraftAccount.class.getName(), "Caught an exception while loading the profile",e); return null; }