Skip to content
This repository was archived by the owner on Dec 30, 2022. It is now read-only.

Commit 4abb6b3

Browse files
author
DeathsGun
committed
Use ModState for action buttons
1 parent 1d424dd commit 4abb6b3

3 files changed

Lines changed: 28 additions & 18 deletions

File tree

src/main/java/xyz/deathsgun/modmanager/ModManager.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,13 @@ public static String getVersion() {
7575

7676
public static ModState getState(SummarizedMod mod) {
7777
Optional<ModContainer> installedMod = FabricMods.getModContainerByMod(mod);
78-
return installedMod.map(modContainer -> updateCheckService.isUpdateAvailable(mod, modContainer.getMetadata()) ? ModState.OUTDATED : ModState.INSTALLED).orElse(ModState.DOWNLOADABLE);
78+
if (installedMod.isEmpty()) {
79+
return getModManipulationManager().isInstalled(mod) ? ModState.INSTALLED : ModState.DOWNLOADABLE;
80+
}
81+
if (getModManipulationManager().isMarkedUninstalled(mod)) {
82+
return ModState.DOWNLOADABLE;
83+
}
84+
return updateCheckService.isUpdateAvailable(mod, installedMod.get().getMetadata()) ? ModState.OUTDATED : ModState.INSTALLED;
7985
}
8086

8187
@Override

src/main/java/xyz/deathsgun/modmanager/gui/ModDetailScreen.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -80,22 +80,25 @@ protected void init() {
8080
}
8181

8282
private void handleActionClick(ButtonWidget buttonWidget) {
83+
if (exception != null) {
84+
buttonWidget.active = true;
85+
MinecraftClient.getInstance().openScreen(new ModManagerErrorScreen(this, exception));
86+
return;
87+
}
8388
buttonWidget.active = false;
84-
String key = ((TranslatableText) buttonWidget.getMessage()).getKey();
85-
switch (key) {
86-
case "modmanager.message.install" -> {
89+
switch (ModManager.getState(summarizedMod)) {
90+
case OUTDATED -> {
91+
buttonWidget.setMessage(new TranslatableText("modmanager.message.updating"));
92+
ModManager.getModManipulationManager().updateMod(summarizedMod, this::handleTaskResult);
93+
}
94+
case DOWNLOADABLE -> {
8795
buttonWidget.setMessage(new TranslatableText("modmanager.message.installing"));
8896
ModManager.getModManipulationManager().installMod(summarizedMod, this::handleTaskResult);
8997
}
90-
case "modmanager.message.remove" -> {
98+
case INSTALLED -> {
9199
buttonWidget.setMessage(new TranslatableText("modmanager.message.removing"));
92100
ModManager.getModManipulationManager().removeMod(summarizedMod, this::handleTaskResult);
93101
}
94-
case "modmanager.message.showError" -> {
95-
buttonWidget.active = true;
96-
MinecraftClient.getInstance().openScreen(new ModManagerErrorScreen(this, exception));
97-
}
98-
case "modmanager.message.update" -> buttonWidget.setMessage(new TranslatableText("modmanager.message.updating"));
99102
}
100103
}
101104

@@ -110,14 +113,11 @@ void updateActionButton() {
110113
actionButton.setMessage(new TranslatableText("modmanager.message.showError"));
111114
return;
112115
}
113-
if (ModManager.getModManipulationManager().isInstalled(summarizedMod)) {
114-
if (ModManager.getModManipulationManager().isMarkedUninstalled(summarizedMod)) {
115-
actionButton.setMessage(new TranslatableText("modmanager.message.install"));
116-
}
117-
actionButton.setMessage(new TranslatableText("modmanager.message.remove"));
118-
return;
116+
switch (ModManager.getState(summarizedMod)) {
117+
case DOWNLOADABLE -> actionButton.setMessage(new TranslatableText("modmanager.message.install"));
118+
case INSTALLED -> actionButton.setMessage(new TranslatableText("modmanager.message.remove"));
119+
case OUTDATED -> actionButton.setMessage(new TranslatableText("modmanager.message.update"));
119120
}
120-
actionButton.setMessage(new TranslatableText("modmanager.message.install"));
121121
}
122122

123123
@Override

src/main/java/xyz/deathsgun/modmanager/manager/ModManipulationManager.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ public boolean isInstalled(SummarizedMod mod) {
5353
}
5454

5555
public boolean isMarkedUninstalled(SummarizedMod summarizedMod) {
56-
return this.uninstalledMods.add(summarizedMod.id());
56+
return this.uninstalledMods.contains(summarizedMod.id());
57+
}
58+
59+
public void updateMod(SummarizedMod summarizedMod, TaskCallback taskCallback) {
60+
5761
}
5862
}

0 commit comments

Comments
 (0)