Skip to content

Commit

Permalink
Fix bedrock login cancel button breaking resource reloading
Browse files Browse the repository at this point in the history
Closes #552
  • Loading branch information
FlorianMichael committed Sep 6, 2024
1 parent 7a3d2e0 commit eea48d6
Showing 1 changed file with 11 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

package de.florianmichael.viafabricplus.settings.impl;

import com.mojang.blaze3d.systems.RenderSystem;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.viafabricplus.injection.access.IConfirmScreen;
import de.florianmichael.viafabricplus.save.impl.AccountsSave;
Expand All @@ -41,15 +40,18 @@
import net.raphimc.minecraftauth.util.logging.ILogger;

import java.util.Locale;
import java.util.concurrent.CompletableFuture;

public class BedrockSettings extends SettingGroup {

private static final Text TITLE = Text.of("Microsoft Bedrock login");

private static final BedrockSettings INSTANCE = new BedrockSettings();

private final ButtonSetting clickToSetBedrockAccount = new ButtonSetting(this, Text.translatable("bedrock_settings.viafabricplus.click_to_set_bedrock_account"), () -> CompletableFuture.runAsync(this::openBedrockAccountLogin)) {
private Thread thread;
private final ButtonSetting clickToSetBedrockAccount = new ButtonSetting(this, Text.translatable("bedrock_settings.viafabricplus.click_to_set_bedrock_account"), () -> {
thread = new Thread(this::openBedrockAccountLogin);
thread.start();
}) {

@Override
public MutableText displayValue() {
Expand Down Expand Up @@ -94,15 +96,18 @@ private void openBedrockAccountLogin() {
client.keyboard.setClipboard(msaDeviceCode.getDirectVerificationUri());
} else {
client.setScreen(prevScreen);
Thread.currentThread().interrupt();
this.thread.interrupt();
}
}, TITLE, Text.translatable("click_to_set_bedrock_account.viafabricplus.notice"), Text.translatable("base.viafabricplus.copy_link"), Text.translatable("base.viafabricplus.cancel")));
Util.getOperatingSystem().open(msaDeviceCode.getDirectVerificationUri());
})));

VFPScreen.setScreen(prevScreen);
} catch (Throwable e) {
Thread.currentThread().interrupt();
} catch (Exception e) {
if (e instanceof InterruptedException) {
return;
}
this.thread.interrupt();
VFPScreen.showErrorScreen(TITLE, e, prevScreen);
}
}
Expand Down

0 comments on commit eea48d6

Please sign in to comment.