Notify on a new own device
This commit is contained in:
parent
acbc5710d0
commit
62ad56af21
|
@ -34,6 +34,7 @@ SOURCES
|
||||||
src/contact_details_dialog.vala
|
src/contact_details_dialog.vala
|
||||||
src/database.vala
|
src/database.vala
|
||||||
src/device_notification_populator.vala
|
src/device_notification_populator.vala
|
||||||
|
src/own_notifications.vala
|
||||||
src/encrypt_state.vala
|
src/encrypt_state.vala
|
||||||
src/encryption_list_entry.vala
|
src/encryption_list_entry.vala
|
||||||
src/manager.vala
|
src/manager.vala
|
||||||
|
|
38
plugins/omemo/src/own_notifications.vala
Normal file
38
plugins/omemo/src/own_notifications.vala
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
using Dino.Entities;
|
||||||
|
using Xmpp;
|
||||||
|
using Gtk;
|
||||||
|
|
||||||
|
namespace Dino.Plugins.Omemo {
|
||||||
|
|
||||||
|
public class OwnNotifications {
|
||||||
|
|
||||||
|
private StreamInteractor stream_interactor;
|
||||||
|
private Plugin plugin;
|
||||||
|
private Account account;
|
||||||
|
|
||||||
|
public OwnNotifications (Plugin plugin, StreamInteractor stream_interactor, Account account) {
|
||||||
|
this.stream_interactor = (!)stream_interactor;
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.account = account;
|
||||||
|
stream_interactor.module_manager.get_module(account, StreamModule.IDENTITY).bundle_fetched.connect_after((jid, device_id, bundle) => {
|
||||||
|
if (jid.equals(account.bare_jid) && has_new_devices(account.bare_jid)) {
|
||||||
|
display_notification();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (has_new_devices(account.bare_jid)) {
|
||||||
|
display_notification();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool has_new_devices(Jid jid) {
|
||||||
|
return plugin.db.identity_meta.with_address(account.id, jid.bare_jid.to_string()).with(plugin.db.identity_meta.trust_level, "=", Database.IdentityMetaTable.TrustLevel.UNKNOWN).without_null(plugin.db.identity_meta.identity_key_public_base64).count() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void display_notification() {
|
||||||
|
Notification notification = new Notification("Trust decision required");
|
||||||
|
notification.set_body(@"A new OMEMO device has been added for the account $(account.bare_jid)");
|
||||||
|
plugin.app.send_notification(account.id.to_string()+"-new-device", notification);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -44,6 +44,7 @@ public class Plugin : RootInterface, Object {
|
||||||
this.app.plugin_registry.register_notification_populator(device_notification_populator);
|
this.app.plugin_registry.register_notification_populator(device_notification_populator);
|
||||||
this.app.stream_interactor.module_manager.initialize_account_modules.connect((account, list) => {
|
this.app.stream_interactor.module_manager.initialize_account_modules.connect((account, list) => {
|
||||||
list.add(new StreamModule());
|
list.add(new StreamModule());
|
||||||
|
new OwnNotifications(this, this.app.stream_interactor, account);
|
||||||
});
|
});
|
||||||
Manager.start(this.app.stream_interactor, db);
|
Manager.start(this.app.stream_interactor, db);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue