forked from mystiq/hydrogen-web
expose checking pusher on homeserver in setting
This commit is contained in:
parent
c06659c0be
commit
10e9e7388f
2 changed files with 37 additions and 0 deletions
|
@ -22,6 +22,8 @@ class PushNotificationStatus {
|
|||
this.supported = null;
|
||||
this.enabled = false;
|
||||
this.updating = false;
|
||||
this.enabledOnServer = null;
|
||||
this.serverError = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -129,6 +131,8 @@ export class SettingsViewModel extends ViewModel {
|
|||
|
||||
async togglePushNotifications() {
|
||||
this.pushNotifications.updating = true;
|
||||
this.pushNotifications.enabledOnServer = null;
|
||||
this.pushNotifications.serverError = null;
|
||||
this.emitChange("pushNotifications.updating");
|
||||
try {
|
||||
if (await this._session.enablePushNotifications(!this.pushNotifications.enabled)) {
|
||||
|
@ -142,5 +146,17 @@ export class SettingsViewModel extends ViewModel {
|
|||
this.emitChange("pushNotifications.updating");
|
||||
}
|
||||
}
|
||||
|
||||
async checkPushEnabledOnServer() {
|
||||
this.pushNotifications.enabledOnServer = null;
|
||||
this.pushNotifications.serverError = null;
|
||||
try {
|
||||
this.pushNotifications.enabledOnServer = await this._session.checkPusherEnabledOnHomeServer();
|
||||
this.emitChange("pushNotifications.enabledOnServer");
|
||||
} catch (err) {
|
||||
this.pushNotifications.serverError = err;
|
||||
this.emitChange("pushNotifications.serverError");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -66,6 +66,27 @@ export class SettingsView extends TemplateView {
|
|||
} else {
|
||||
return t.p(vm.i18n`Push notifications are not supported on this browser`);
|
||||
}
|
||||
}),
|
||||
t.if(vm => vm.pushNotifications.supported && vm.pushNotifications.enabled, t => {
|
||||
return t.div([
|
||||
t.p([
|
||||
"If you think push notifications are not being delivered, ",
|
||||
t.button({className: "link", onClick: () => vm.checkPushEnabledOnServer()}, "check"),
|
||||
" if they got disabled on the server"
|
||||
]),
|
||||
t.map(vm => vm.pushNotifications.enabledOnServer, (enabled, t) => {
|
||||
if (enabled === true) {
|
||||
return t.p("Push notifications are still enabled on the server, so everything should be working. Sometimes notifications can get dropped if they can't be delivered within a given time.");
|
||||
} else if (enabled === false) {
|
||||
return t.p("Push notifications have been disabled on the server, likely due to a bug. Please re-enable them by clicking Disable and then Enable again above.");
|
||||
}
|
||||
}),
|
||||
t.map(vm => vm.pushNotifications.serverError, (err, t) => {
|
||||
if (err) {
|
||||
return t.p("Couln't not check on server: " + err.message);
|
||||
}
|
||||
})
|
||||
]);
|
||||
})
|
||||
);
|
||||
|
||||
|
|
Loading…
Reference in a new issue