Skip to content

Commit 2b64517

Browse files
committed
Start FlatpakUpdater
1 parent 42732f4 commit 2b64517

File tree

4 files changed

+104
-2
lines changed

4 files changed

+104
-2
lines changed

pom.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,10 @@
4040

4141
<!-- runtime dependencies -->
4242

43-
<api.version>1.6.0</api.version>
43+
<api.version>1.7.0-SNAPSHOT</api.version>
4444
<secret-service.version>2.0.1-alpha</secret-service.version>
4545
<kdewallet.version>1.4.0</kdewallet.version>
46+
<flatpakupdateportal.version>1.0-SNAPSHOT</flatpakupdateportal.version>
4647
<slf4j.version>2.0.17</slf4j.version>
4748
<appindicator.version>1.4.2</appindicator.version>
4849

@@ -88,6 +89,11 @@
8889
<artifactId>libappindicator-gtk3-java-minimal</artifactId>
8990
<version>${appindicator.version}</version>
9091
</dependency>
92+
<dependency>
93+
<groupId>org.purejava</groupId>
94+
<artifactId>flatpak-update-portal</artifactId>
95+
<version>${flatpakupdateportal.version}</version>
96+
</dependency>
9197
<dependency>
9298
<groupId>org.junit.jupiter</groupId>
9399
<artifactId>junit-jupiter</artifactId>

src/main/java/module-info.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,34 @@
33
import org.cryptomator.integrations.quickaccess.QuickAccessService;
44
import org.cryptomator.integrations.revealpath.RevealPathService;
55
import org.cryptomator.integrations.tray.TrayMenuController;
6+
import org.cryptomator.integrations.update.UpdateService;
67
import org.cryptomator.linux.autostart.FreedesktopAutoStartService;
7-
import org.cryptomator.linux.keychain.KDEWalletKeychainAccess;
88
import org.cryptomator.linux.keychain.GnomeKeyringKeychainAccess;
9+
import org.cryptomator.linux.keychain.KDEWalletKeychainAccess;
910
import org.cryptomator.linux.quickaccess.DolphinPlaces;
1011
import org.cryptomator.linux.quickaccess.NautilusBookmarks;
1112
import org.cryptomator.linux.revealpath.DBusSendRevealPathService;
1213
import org.cryptomator.linux.tray.AppindicatorTrayMenuController;
14+
import org.cryptomator.linux.update.FlatpakUpdater;
1315

1416
module org.cryptomator.integrations.linux {
1517
requires org.cryptomator.integrations.api;
1618
requires org.slf4j;
1719
requires org.freedesktop.dbus;
1820
requires org.purejava.appindicator;
1921
requires org.purejava.kwallet;
22+
requires org.purejava.portal;
2023
requires de.swiesend.secretservice;
2124

2225
provides AutoStartProvider with FreedesktopAutoStartService;
2326
provides KeychainAccessProvider with GnomeKeyringKeychainAccess, KDEWalletKeychainAccess;
2427
provides RevealPathService with DBusSendRevealPathService;
2528
provides TrayMenuController with AppindicatorTrayMenuController;
2629
provides QuickAccessService with NautilusBookmarks, DolphinPlaces;
30+
provides UpdateService with FlatpakUpdater;
2731

2832
opens org.cryptomator.linux.tray to org.cryptomator.integrations.api;
2933
opens org.cryptomator.linux.quickaccess to org.cryptomator.integrations.api;
3034
opens org.cryptomator.linux.autostart to org.cryptomator.integrations.api;
35+
opens org.cryptomator.linux.update to org.cryptomator.integrations.api;
3136
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package org.cryptomator.linux.update;
2+
3+
import org.cryptomator.integrations.common.CheckAvailability;
4+
import org.cryptomator.integrations.common.OperatingSystem;
5+
import org.cryptomator.integrations.common.Priority;
6+
import org.cryptomator.integrations.update.UpdateFailedException;
7+
import org.cryptomator.integrations.update.UpdateService;
8+
import org.freedesktop.dbus.exceptions.DBusException;
9+
import org.purejava.portal.Flatpak;
10+
import org.purejava.portal.UpdatePortal;
11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
13+
14+
@Priority(1000)
15+
@CheckAvailability
16+
@OperatingSystem(OperatingSystem.Value.LINUX)
17+
public class FlatpakUpdater implements UpdateService, AutoCloseable {
18+
19+
private static final Logger LOG = LoggerFactory.getLogger(FlatpakUpdater.class);
20+
21+
private final UpdatePortal portal;
22+
private Flatpak.UpdateMonitor updateMonitor;
23+
24+
public FlatpakUpdater() {
25+
this.portal = new UpdatePortal();
26+
}
27+
28+
@Override
29+
public boolean isSupported() {
30+
return portal.isAvailable();
31+
}
32+
33+
@Override
34+
public String isUpdateAvailable(DistributionChannel channel) {
35+
return "";
36+
}
37+
38+
@Override
39+
public void triggerUpdate() throws UpdateFailedException {
40+
getUpdateMonitor();
41+
//var monitor = getUpdateMonitor();
42+
//portal.updateApp("x11:0", monitor, UpdatePortal.OPTIONS_DUMMY);
43+
}
44+
45+
@Override
46+
public boolean doesRequireElevatedPermissions() {
47+
return false;
48+
}
49+
50+
@Override
51+
public String getDisplayName() {
52+
return "Update via Flatpak update";
53+
}
54+
55+
@Override
56+
public void close() throws Exception {
57+
try {
58+
if (null != updateMonitor) {
59+
updateMonitor.Close();
60+
}
61+
portal.close();
62+
} catch (Exception e) {
63+
LOG.error(e.toString(), e.getCause());
64+
}
65+
}
66+
67+
private synchronized Flatpak.UpdateMonitor getUpdateMonitor() {
68+
if (updateMonitor == null) {
69+
var updateMonitorPath = portal.CreateUpdateMonitor(UpdatePortal.OPTIONS_DUMMY);
70+
if (updateMonitorPath != null) {
71+
LOG.debug("UpdateMonitor successful created at {}", updateMonitorPath);
72+
updateMonitor = portal.getUpdateMonitor(updateMonitorPath.toString());
73+
try {
74+
portal.getDBusConnection().addSigHandler(Flatpak.UpdateMonitor.UpdateAvailable.class, signal -> {
75+
notifyOnUpdateAvailable(signal);
76+
});
77+
} catch (DBusException e) {
78+
LOG.error(e.toString(), e.getCause());
79+
}
80+
} else {
81+
LOG.error("Failed to create UpdateMonitor on DBus");
82+
}
83+
}
84+
return updateMonitor;
85+
}
86+
87+
public void notifyOnUpdateAvailable(Flatpak.UpdateMonitor.UpdateAvailable signal) {
88+
LOG.info("Update available to remote-commit {}", signal.update_info.get("remote-commit").getValue());
89+
}
90+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
org.cryptomator.linux.update.FlatpakUpdater

0 commit comments

Comments
 (0)