support checking if pusher is still present on server
This commit is contained in:
parent
010b782a96
commit
c06659c0be
3 changed files with 26 additions and 0 deletions
|
@ -522,6 +522,18 @@ export class Session {
|
||||||
const pusherData = await readTxn.session.get(PUSHER_KEY);
|
const pusherData = await readTxn.session.get(PUSHER_KEY);
|
||||||
return !!pusherData;
|
return !!pusherData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async checkPusherEnabledOnHomeServer() {
|
||||||
|
const readTxn = await this._storage.readTxn([this._storage.storeNames.session]);
|
||||||
|
const pusherData = await readTxn.session.get(PUSHER_KEY);
|
||||||
|
if (!pusherData) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const myPusher = new Pusher(pusherData);
|
||||||
|
const serverPushersData = await this._hsApi.getPushers().response();
|
||||||
|
const serverPushers = (serverPushersData?.pushers || []).map(data => new Pusher(data));
|
||||||
|
return serverPushers.some(p => p.equals(myPusher));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function tests() {
|
export function tests() {
|
||||||
|
|
|
@ -258,6 +258,10 @@ export class HomeServerApi {
|
||||||
setPusher(pusher, options = null) {
|
setPusher(pusher, options = null) {
|
||||||
return this._post("/pushers/set", null, pusher, options);
|
return this._post("/pushers/set", null, pusher, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getPushers(options = null) {
|
||||||
|
return this._get("/pushers", null, null, options);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function tests() {
|
export function tests() {
|
||||||
|
|
|
@ -37,4 +37,14 @@ export class Pusher {
|
||||||
serialize() {
|
serialize() {
|
||||||
return this._description;
|
return this._description;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
equals(pusher) {
|
||||||
|
if (this._description.app_id !== pusher._description.app_id) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this._description.pushkey !== pusher._description.pushkey) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return JSON.stringify(this._description.data) === JSON.stringify(pusher._description.data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue