|
@@ -65,11 +65,13 @@ public class ErrorController implements FxController {
|
|
|
private final Scene previousScene;
|
|
|
private final Stage window;
|
|
|
private final Environment environment;
|
|
|
+ private final ExecutorService executorService;
|
|
|
|
|
|
private final BooleanProperty copiedDetails = new SimpleBooleanProperty();
|
|
|
private final ObjectProperty<ErrorDiscussion> matchingErrorDiscussion = new SimpleObjectProperty<>();
|
|
|
private final BooleanExpression errorSolutionFound = matchingErrorDiscussion.isNotNull();
|
|
|
private final BooleanProperty isLoadingHttpResponse = new SimpleBooleanProperty();
|
|
|
+ private final BooleanProperty askedForLookupDatabasePermission = new SimpleBooleanProperty();
|
|
|
|
|
|
@Inject
|
|
|
ErrorController(Application application, @Named("stackTrace") String stackTrace, ErrorCode errorCode, @Nullable Scene previousScene, Stage window, Environment environment, ExecutorService executorService) {
|
|
@@ -79,15 +81,7 @@ public class ErrorController implements FxController {
|
|
|
this.previousScene = previousScene;
|
|
|
this.window = window;
|
|
|
this.environment = environment;
|
|
|
-
|
|
|
- isLoadingHttpResponse.set(true);
|
|
|
- HttpClient httpClient = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
|
|
|
- HttpRequest httpRequest = HttpRequest.newBuilder()//
|
|
|
- .uri(URI.create(ERROR_CODES_URL))//
|
|
|
- .build();
|
|
|
- httpClient.sendAsync(httpRequest, HttpResponse.BodyHandlers.ofInputStream())//
|
|
|
- .thenAcceptAsync(this::loadHttpResponse, executorService)//
|
|
|
- .whenCompleteAsync((r, e) -> isLoadingHttpResponse.set(false), Platform::runLater);
|
|
|
+ this.executorService = executorService;
|
|
|
}
|
|
|
|
|
|
@FXML
|
|
@@ -140,6 +134,24 @@ public class ErrorController implements FxController {
|
|
|
CompletableFuture.delayedExecutor(2, TimeUnit.SECONDS, Platform::runLater).execute(() -> copiedDetails.set(false));
|
|
|
}
|
|
|
|
|
|
+ @FXML
|
|
|
+ public void dismiss() {
|
|
|
+ askedForLookupDatabasePermission.set(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ @FXML
|
|
|
+ public void lookUpSolution() {
|
|
|
+ isLoadingHttpResponse.set(true);
|
|
|
+ askedForLookupDatabasePermission.set(true);
|
|
|
+ HttpClient httpClient = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
|
|
|
+ HttpRequest httpRequest = HttpRequest.newBuilder()//
|
|
|
+ .uri(URI.create(ERROR_CODES_URL))//
|
|
|
+ .build();
|
|
|
+ httpClient.sendAsync(httpRequest, HttpResponse.BodyHandlers.ofInputStream())//
|
|
|
+ .thenAcceptAsync(this::loadHttpResponse, executorService)//
|
|
|
+ .whenCompleteAsync((r, e) -> isLoadingHttpResponse.set(false), Platform::runLater);
|
|
|
+ }
|
|
|
+
|
|
|
private void loadHttpResponse(HttpResponse<InputStream> response) {
|
|
|
if (response.statusCode() != 200) {
|
|
|
LOG.error("Status code {} when trying to load {} ", response.statusCode(), response.uri());
|
|
@@ -293,4 +305,12 @@ public class ErrorController implements FxController {
|
|
|
return isLoadingHttpResponse.get();
|
|
|
}
|
|
|
|
|
|
+ public BooleanProperty askedForLookupDatabasePermissionProperty() {
|
|
|
+ return askedForLookupDatabasePermission;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean getAskedForLookupDatabasePermission() {
|
|
|
+ return askedForLookupDatabasePermission.get();
|
|
|
+ }
|
|
|
+
|
|
|
}
|