Skip to content

Commit 532b237

Browse files
committed
Perform update check in a separate thread (task)
1 parent 0e30175 commit 532b237

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

src/main/java/com/github/introfog/gitwave/controller/main/MenuController.java

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.github.introfog.gitwave.model.UpdateChecker;
99

1010
import java.io.File;
11+
import javafx.concurrent.Task;
1112
import javafx.scene.control.Menu;
1213
import javafx.scene.control.MenuItem;
1314
import javafx.scene.control.SeparatorMenuItem;
@@ -16,22 +17,16 @@
1617

1718
public class MenuController extends SupportController {
1819
private static final Logger LOGGER = LoggerFactory.getLogger(MenuController.class);
19-
private Menu menu;
20-
private MenuItem updateMenuItem;
21-
private SeparatorMenuItem updateMenuItemSeparator;
20+
private final Menu menu;
21+
private final MenuItem updateMenuItem;
22+
private final SeparatorMenuItem updateMenuItemSeparator;
2223

2324
public MenuController(FxmlStageHolder fxmlStageHolder, Menu menu, MenuItem updateMenuItem, SeparatorMenuItem updateMenuItemSeparator) {
2425
super(fxmlStageHolder);
2526
this.menu = menu;
2627
this.updateMenuItem = updateMenuItem;
2728
this.updateMenuItemSeparator = updateMenuItemSeparator;
28-
if (UpdateChecker.isNewReleaseAvailable()) {
29-
this.menu.setText("Menu*");
30-
this.updateMenuItem.setDisable(false);
31-
this.updateMenuItem.setVisible(true);
32-
this.updateMenuItemSeparator.setDisable(false);
33-
this.updateMenuItemSeparator.setVisible(true);
34-
}
29+
new Thread(createCheckForUpdateTask()).start();
3530
}
3631

3732
@Override
@@ -60,4 +55,24 @@ public void openAbout() {
6055
public void openUpdate() {
6156
StageFactory.createModalUpdateWindow().getStage().showAndWait();
6257
}
58+
59+
private Task<Boolean> createCheckForUpdateTask() {
60+
Task<Boolean> checkForUpdate = new Task<>() {
61+
@Override
62+
protected Boolean call() {
63+
return UpdateChecker.isNewReleaseAvailable();
64+
}
65+
};
66+
checkForUpdate.setOnSucceeded((e) -> {
67+
boolean isNewReleaseAvailable = checkForUpdate.getValue();
68+
if (isNewReleaseAvailable) {
69+
this.menu.setText("Menu*");
70+
this.updateMenuItem.setDisable(false);
71+
this.updateMenuItem.setVisible(true);
72+
this.updateMenuItemSeparator.setDisable(false);
73+
this.updateMenuItemSeparator.setVisible(true);
74+
}
75+
});
76+
return checkForUpdate;
77+
}
6378
}

src/main/java/com/github/introfog/gitwave/model/UpdateChecker.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ private UpdateChecker() {
3636
}
3737

3838
public static boolean isNewReleaseAvailable() {
39-
// TODO MINOR fetch and check update in the separate thread, to quicker open app.
4039
final String latestTag = fetchLatestTag(AppConstants.GIT_HUB_REPO_OWNER, AppConstants.APP_NAME);
4140
LOGGER.info("Fetch '{}' tag from GitHub repo.", latestTag);
4241
return latestTag != null && !AppConstants.VERSION.equals(latestTag);

0 commit comments

Comments
 (0)