Skip to content

Commit dad8d33

Browse files
committed
Use Listeners from integrations-api
1 parent 377fe75 commit dad8d33

File tree

1 file changed

+45
-2
lines changed

1 file changed

+45
-2
lines changed

src/main/java/org/cryptomator/linux/update/FlatpakUpdater.java

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
import org.cryptomator.integrations.common.DistributionChannel;
55
import org.cryptomator.integrations.common.OperatingSystem;
66
import org.cryptomator.integrations.common.Priority;
7+
import org.cryptomator.integrations.update.Progress;
8+
import org.cryptomator.integrations.update.ProgressListener;
9+
import org.cryptomator.integrations.update.UpdateAvailable;
10+
import org.cryptomator.integrations.update.UpdateAvailableListener;
711
import org.cryptomator.integrations.update.UpdateFailedException;
812
import org.cryptomator.integrations.update.UpdateService;
913
import org.freedesktop.dbus.FileDescriptor;
@@ -20,6 +24,7 @@
2024
import java.util.Collections;
2125
import java.util.List;
2226
import java.util.Map;
27+
import java.util.concurrent.CopyOnWriteArrayList;
2328

2429
@Priority(1000)
2530
@CheckAvailability
@@ -30,6 +35,9 @@ public class FlatpakUpdater implements UpdateService, AutoCloseable {
3035
private static final Logger LOG = LoggerFactory.getLogger(FlatpakUpdater.class);
3136
private static final String APP_NAME = "org.cryptomator.Cryptomator";
3237

38+
private final List<UpdateAvailableListener> updateAvailableListeners = new CopyOnWriteArrayList<>();
39+
private final List<ProgressListener> progressListeners = new CopyOnWriteArrayList<>();
40+
3341
private final UpdatePortal portal;
3442
private Flatpak.UpdateMonitor updateMonitor;
3543

@@ -104,6 +112,9 @@ private synchronized Flatpak.UpdateMonitor getUpdateMonitor() {
104112
portal.getDBusConnection().addSigHandler(Flatpak.UpdateMonitor.UpdateAvailable.class, signal -> {
105113
notifyOnUpdateAvailable(signal);
106114
});
115+
portal.getDBusConnection().addSigHandler(Flatpak.UpdateMonitor.Progress.class, signal -> {
116+
notifyOnUpdateProceeds(signal);
117+
});
107118
} catch (DBusException e) {
108119
LOG.error(e.toString(), e.getCause());
109120
}
@@ -114,8 +125,40 @@ private synchronized Flatpak.UpdateMonitor getUpdateMonitor() {
114125
return updateMonitor;
115126
}
116127

117-
public void notifyOnUpdateAvailable(Flatpak.UpdateMonitor.UpdateAvailable signal) {
118-
LOG.info("Update available to remote-commit {}", signal.update_info.get("remote-commit").getValue());
128+
@Override
129+
public void addUpdateAvailableListener(UpdateAvailableListener listener) {
130+
updateAvailableListeners.add(listener);
131+
}
132+
133+
@Override
134+
public void removeUpdateAvailableListener(UpdateAvailableListener listener) {
135+
updateAvailableListeners.remove(listener);
136+
}
137+
138+
private void notifyOnUpdateAvailable(Flatpak.UpdateMonitor.UpdateAvailable signal) {
139+
UpdateAvailable updateAvailable = new UpdateAvailable((String) signal.update_info.get("remote-commit").getValue());
140+
for (UpdateAvailableListener listener : updateAvailableListeners) {
141+
listener.onUpdateAvailable(updateAvailable);
142+
}
143+
}
144+
145+
@Override
146+
public void addProgressListener(ProgressListener listener) {
147+
progressListeners.add(listener);
148+
}
149+
150+
@Override
151+
public void removeProgressListener(ProgressListener listener) {
152+
progressListeners.remove(listener);
153+
}
154+
155+
private void notifyOnUpdateProceeds(Flatpak.UpdateMonitor.Progress signal) {
156+
long status = ((UInt32) signal.info.get("status").getValue()).longValue();
157+
long progress = ((UInt32) signal.info.get("progress").getValue()).longValue();
158+
Progress p = new Progress(status, progress);
159+
for (ProgressListener listener : progressListeners) {
160+
listener.onProgress(p);
161+
}
119162
}
120163

121164
private UInt32 spawnApp(List<Byte> cwdPath, List<List<Byte>> argv, Map<UInt32, FileDescriptor> fds, Map<String, String> envs, UInt32 flags, Map<String, Variant<?>> options) {

0 commit comments

Comments
 (0)