Stop notifications after removing a host (#3176)
* fix(notifications): stop pushes after host removal Push tokens were persisted indefinitely with no relationship to app pairing state. Give registrations a 48-hour renewable lease so offline unpairing converges, and revoke immediately when the host is reachable. * fix(notifications): make token revocation bounded and durable
This commit is contained in:
@@ -876,6 +876,7 @@ function toTimeoutError(error: unknown, label: string, timeoutMs: number): Error
|
||||
const DEFAULT_RECONNECT_BASE_DELAY_MS = 1500;
|
||||
const DEFAULT_RECONNECT_MAX_DELAY_MS = 30000;
|
||||
const DEFAULT_SESSION_RPC_TIMEOUT_MS = 60_000;
|
||||
const PUSH_TOKEN_REVOCATION_TIMEOUT_MS = 2_000;
|
||||
const DEFAULT_CONNECT_TIMEOUT_MS = 15_000;
|
||||
const DEFAULT_LIVENESS_TIMEOUT_MS = 5000;
|
||||
const LIVENESS_HEARTBEAT_INTERVAL_MS = 10_000;
|
||||
@@ -1840,6 +1841,16 @@ export class DaemonClient {
|
||||
});
|
||||
}
|
||||
|
||||
async unregisterPushToken(token: string): Promise<void> {
|
||||
const requestId = this.createRequestId();
|
||||
await this.sendCorrelatedSessionRequest({
|
||||
requestId,
|
||||
message: { type: "push.unregister.request", token, requestId },
|
||||
responseType: "push.unregister.response",
|
||||
timeout: PUSH_TOKEN_REVOCATION_TIMEOUT_MS,
|
||||
});
|
||||
}
|
||||
|
||||
async ping(params?: { requestId?: string; timeoutMs?: number }): Promise<{
|
||||
requestId: string;
|
||||
clientSentAt: number;
|
||||
|
||||
Reference in New Issue
Block a user