Skip to content

Commit 9774153

Browse files
committed
Better error message when no betas found
1 parent 61f9878 commit 9774153

File tree

3 files changed

+29
-16
lines changed

3 files changed

+29
-16
lines changed

src/main/java/airsquared/blobsaver/app/Controller.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ public void initialize() {
9797
betaCheckBox.setSelected(false);
9898
}
9999
});
100+
betaCheckBox.selectedProperty().addListener(__ -> betaCheckBox.setEffect(null));
100101
switch (Prefs.getDarkMode()) {
101102
case DISABLED -> darkDisabled.setSelected(true);
102103
case SYNC_WITH_OS -> darkSync.setSelected(true);
@@ -716,6 +717,8 @@ private void parseException(Throwable t) {
716717
ipswField.setEffect(Utils.errorBorder);
717718
} else if (message.contains("not being signed") && !allSignedVersionsCheckBox.isSelected()) {
718719
versionField.setEffect(Utils.errorBorder);
720+
} else if (message.contains("without including beta versions") && betaCheckBox.isSelected()) {
721+
betaCheckBox.setEffect(Utils.errorBorder);
719722
}
720723
e.showErrorAlert();
721724
} else {

src/main/java/airsquared/blobsaver/app/TSS.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -296,13 +296,12 @@ private List<Utils.IOSVersion> getIOSVersions() throws TSSException {
296296
return Collections.singletonList(new Utils.IOSVersion(null, null, manualIpswURL, null));
297297
} else if (includeBetas) {
298298
var signedFirmwares = getSignedFirmwares(deviceIdentifier);
299-
Stream<Utils.IOSVersion> signedBetas;
300299
try {
301-
signedBetas = getSignedBetas(deviceIdentifier);
302-
} catch (IOException e) {
303-
throw new TSSException("There was an error with the beta API; try without including beta versions.", false, e);
300+
Stream<Utils.IOSVersion> signedBetas = getSignedBetas(deviceIdentifier);
301+
return Stream.concat(signedFirmwares, signedBetas).toList();
302+
} catch (Exception e) {
303+
throw new TSSException("There was an error retrieving beta versions; try without including beta versions.", false, e);
304304
}
305-
return Stream.concat(signedFirmwares, signedBetas).toList();
306305
} else { // all signed firmwares
307306
return getSignedFirmwares(deviceIdentifier).toList();
308307
}

src/main/java/airsquared/blobsaver/app/Utils.java

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,7 @@
2222
import com.google.gson.JsonElement;
2323
import com.sun.jna.Platform;
2424
import javafx.scene.Node;
25-
import javafx.scene.control.Alert;
26-
import javafx.scene.control.Button;
27-
import javafx.scene.control.ButtonBar;
28-
import javafx.scene.control.ButtonType;
29-
import javafx.scene.control.CheckBox;
30-
import javafx.scene.control.TextField;
31-
import javafx.scene.control.TextFormatter;
25+
import javafx.scene.control.*;
3226
import javafx.scene.effect.DropShadow;
3327
import javafx.scene.input.Clipboard;
3428
import javafx.scene.input.ClipboardContent;
@@ -51,6 +45,7 @@
5145
import java.nio.file.StandardCopyOption;
5246
import java.nio.file.StandardOpenOption;
5347
import java.util.List;
48+
import java.util.NoSuchElementException;
5449
import java.util.Objects;
5550
import java.util.concurrent.ExecutorService;
5651
import java.util.concurrent.Executors;
@@ -269,6 +264,16 @@ static ButtonType showUnreportableError(String msg, ButtonType... buttons) {
269264
return alert.getResult();
270265
}
271266

267+
static ButtonType showUnreportableError(String msg, String toShow, ButtonType... buttons) {
268+
Alert alert = new Alert(Alert.AlertType.ERROR, msg, buttons);
269+
resizeAlertButtons(alert);
270+
var text = new TextArea(toShow);
271+
text.setEditable(false);
272+
alert.getDialogPane().setExpandableContent(text);
273+
alert.showAndWait();
274+
return alert.getResult();
275+
}
276+
272277
static void showInfoAlert(String msg, ButtonType... buttons) {
273278
Alert alert = new Alert(Alert.AlertType.INFORMATION, msg, buttons);
274279
alert.showAndWait();
@@ -374,10 +379,16 @@ static Stream<IOSVersion> getBetaList(String deviceIdentifier) throws IOExceptio
374379

375380
static Stream<IOSVersion> getBetaHubList(String deviceIdentifier, boolean betas) throws IOException {
376381
String url = "https://www.betahub.cn/api/apple/firmwares/" + deviceIdentifier + "?type=" + (betas ? 2 : 1);
377-
JsonArray firmwares = Network.makeJsonRequest(url).getAsJsonObject().getAsJsonArray("firmwares");
378-
return StreamSupport.stream(firmwares.spliterator(), false)
379-
.map(JsonElement::getAsJsonObject)
380-
.map(o -> new IOSVersion(o.get("version").getAsString(), o.get("build_id").getAsString(), o.get("url").getAsString(), o.get("signing").getAsInt() == 1));
382+
383+
JsonElement response = Network.makeJsonRequest(url);
384+
try {
385+
var firmwares = response.getAsJsonObject().getAsJsonArray("firmwares");
386+
return StreamSupport.stream(firmwares.spliterator(), false)
387+
.map(JsonElement::getAsJsonObject)
388+
.map(o -> new IOSVersion(o.get("version").getAsString(), o.get("build_id").getAsString(), o.get("url").getAsString(), o.get("signing").getAsInt() == 1));
389+
} catch (NullPointerException e) {
390+
throw new NoSuchElementException("Unable to extract iOS Versions from JSON:\n" + response, e);
391+
}
381392
}
382393

383394
private static Stream<IOSVersion> createVersionStream(JsonArray array) {

0 commit comments

Comments
 (0)