87 lines
3.3 KiB
Diff
87 lines
3.3 KiB
Diff
diff --git a/js/ui/calendar.js b/js/ui/calendar.js
|
|
index 99641841768fca6ef96bb41197fce1c75040fbc2..286aac1e10ee9bd966a98a86eb10cb7210ff3ff6 100644
|
|
--- a/js/ui/calendar.js
|
|
+++ b/js/ui/calendar.js
|
|
@@ -199,46 +199,47 @@ class DBusEventSource extends EventSourceBase {
|
|
|
|
this._initialized = false;
|
|
this._dbusProxy = new CalendarServer();
|
|
- this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null, (object, result) => {
|
|
- let loaded = false;
|
|
-
|
|
- try {
|
|
- this._dbusProxy.init_finish(result);
|
|
- loaded = true;
|
|
- } catch (e) {
|
|
- if (e.matches(Gio.DBusError, Gio.DBusError.TIMED_OUT)) {
|
|
- // Ignore timeouts and install signals as normal, because with high
|
|
- // probability the service will appear later on, and we will get a
|
|
- // NameOwnerChanged which will finish loading
|
|
- //
|
|
- // (But still _initialized to false, because the proxy does not know
|
|
- // about the HasCalendars property and would cause an exception trying
|
|
- // to read it)
|
|
- } else {
|
|
- log('Error loading calendars: %s'.format(e.message));
|
|
- return;
|
|
- }
|
|
+ this._initProxy();
|
|
+ }
|
|
+
|
|
+ async _initProxy() {
|
|
+ let loaded = false;
|
|
+
|
|
+ try {
|
|
+ await this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null);
|
|
+ loaded = true;
|
|
+ } catch (e) {
|
|
+ // Ignore timeouts and install signals as normal, because with high
|
|
+ // probability the service will appear later on, and we will get a
|
|
+ // NameOwnerChanged which will finish loading
|
|
+ //
|
|
+ // (But still _initialized to false, because the proxy does not know
|
|
+ // about the HasCalendars property and would cause an exception trying
|
|
+ // to read it)
|
|
+ if (!e.matches(Gio.DBusError, Gio.DBusError.TIMED_OUT)) {
|
|
+ log('Error loading calendars: %s'.format(e.message));
|
|
+ return;
|
|
}
|
|
+ }
|
|
|
|
- this._dbusProxy.connectSignal('Changed', this._onChanged.bind(this));
|
|
-
|
|
- this._dbusProxy.connect('notify::g-name-owner', () => {
|
|
- if (this._dbusProxy.g_name_owner)
|
|
- this._onNameAppeared();
|
|
- else
|
|
- this._onNameVanished();
|
|
- });
|
|
-
|
|
- this._dbusProxy.connect('g-properties-changed', () => {
|
|
- this.notify('has-calendars');
|
|
- });
|
|
+ this._dbusProxy.connectSignal('Changed', this._onChanged.bind(this));
|
|
|
|
- this._initialized = loaded;
|
|
- if (loaded) {
|
|
- this.notify('has-calendars');
|
|
+ this._dbusProxy.connect('notify::g-name-owner', () => {
|
|
+ if (this._dbusProxy.g_name_owner)
|
|
this._onNameAppeared();
|
|
- }
|
|
+ else
|
|
+ this._onNameVanished();
|
|
+ });
|
|
+
|
|
+ this._dbusProxy.connect('g-properties-changed', () => {
|
|
+ this.notify('has-calendars');
|
|
});
|
|
+
|
|
+ this._initialized = loaded;
|
|
+ if (loaded) {
|
|
+ this.notify('has-calendars');
|
|
+ this._onNameAppeared();
|
|
+ }
|
|
}
|
|
|
|
destroy() {
|