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() {