Drop stale live subscriptions across reconnects
This commit is contained in:
@@ -1135,6 +1135,7 @@ class Te extends A {
|
||||
_clockTimer;
|
||||
_unsubs = [];
|
||||
_subscribed = !1;
|
||||
_subGeneration = 0;
|
||||
setConfig(t) {
|
||||
if (!t || typeof t != "object")
|
||||
throw new Error("Invalid configuration");
|
||||
@@ -1151,24 +1152,25 @@ class Te extends A {
|
||||
if (!t)
|
||||
return;
|
||||
this._subscribed = !0;
|
||||
const e = (n) => {
|
||||
n.then((i) => {
|
||||
this._subscribed ? this._unsubs.push(i) : i();
|
||||
const e = ++this._subGeneration, n = (i) => {
|
||||
i.then((r) => {
|
||||
this._subscribed && e === this._subGeneration ? this._unsubs.push(r) : r();
|
||||
}).catch(() => {
|
||||
});
|
||||
};
|
||||
for (const n of pe)
|
||||
e(
|
||||
t.subscribeEvents(() => this.requestUpdate(), n)
|
||||
for (const i of pe)
|
||||
n(
|
||||
t.subscribeEvents(() => this.requestUpdate(), i)
|
||||
);
|
||||
e(
|
||||
t.subscribeEvents((n) => {
|
||||
const i = he(n);
|
||||
(i.startsWith("sensor.nestquest_") || i.startsWith("binary_sensor.nestquest_")) && this.requestUpdate();
|
||||
n(
|
||||
t.subscribeEvents((i) => {
|
||||
const r = he(i);
|
||||
(r.startsWith("sensor.nestquest_") || r.startsWith("binary_sensor.nestquest_")) && this.requestUpdate();
|
||||
}, "state_changed")
|
||||
);
|
||||
}
|
||||
_unsubscribeLive() {
|
||||
this._subGeneration++;
|
||||
for (const t of this._unsubs)
|
||||
t();
|
||||
this._unsubs = [], this._subscribed = !1;
|
||||
@@ -2726,6 +2728,7 @@ class un extends A {
|
||||
_completeTimer;
|
||||
_unsubs = [];
|
||||
_subscribed = !1;
|
||||
_subGeneration = 0;
|
||||
setConfig(t) {
|
||||
if (!t || typeof t != "object")
|
||||
throw new Error("Invalid configuration");
|
||||
@@ -2742,24 +2745,25 @@ class un extends A {
|
||||
if (!t)
|
||||
return;
|
||||
this._subscribed = !0;
|
||||
const e = (n) => {
|
||||
n.then((i) => {
|
||||
this._subscribed ? this._unsubs.push(i) : i();
|
||||
const e = ++this._subGeneration, n = (i) => {
|
||||
i.then((r) => {
|
||||
this._subscribed && e === this._subGeneration ? this._unsubs.push(r) : r();
|
||||
}).catch(() => {
|
||||
});
|
||||
};
|
||||
for (const n of Le)
|
||||
e(
|
||||
t.subscribeEvents(() => this.requestUpdate(), n)
|
||||
for (const i of Le)
|
||||
n(
|
||||
t.subscribeEvents(() => this.requestUpdate(), i)
|
||||
);
|
||||
e(
|
||||
t.subscribeEvents((n) => {
|
||||
const i = De(n);
|
||||
(i.startsWith("sensor.nestquest_") || i.startsWith("binary_sensor.nestquest_")) && this.requestUpdate();
|
||||
n(
|
||||
t.subscribeEvents((i) => {
|
||||
const r = De(i);
|
||||
(r.startsWith("sensor.nestquest_") || r.startsWith("binary_sensor.nestquest_")) && this.requestUpdate();
|
||||
}, "state_changed")
|
||||
);
|
||||
}
|
||||
_unsubscribeLive() {
|
||||
this._subGeneration++;
|
||||
for (const t of this._unsubs)
|
||||
t();
|
||||
this._unsubs = [], this._subscribed = !1;
|
||||
|
||||
@@ -743,6 +743,7 @@ export class NestQuestPartyBoardCard extends LitElement {
|
||||
private _clockTimer?: number;
|
||||
private _unsubs: Array<() => void> = [];
|
||||
private _subscribed = false;
|
||||
private _subGeneration = 0;
|
||||
|
||||
setConfig(config: CardConfig): void {
|
||||
if (!config || typeof config !== "object") {
|
||||
@@ -773,10 +774,11 @@ export class NestQuestPartyBoardCard extends LitElement {
|
||||
return;
|
||||
}
|
||||
this._subscribed = true;
|
||||
const token = ++this._subGeneration;
|
||||
const track = (unsubPromise: Promise<() => void>): void => {
|
||||
unsubPromise
|
||||
.then((unsub) => {
|
||||
if (this._subscribed) {
|
||||
if (this._subscribed && token === this._subGeneration) {
|
||||
this._unsubs.push(unsub);
|
||||
} else {
|
||||
unsub();
|
||||
@@ -803,6 +805,7 @@ export class NestQuestPartyBoardCard extends LitElement {
|
||||
}
|
||||
|
||||
private _unsubscribeLive(): void {
|
||||
this._subGeneration++;
|
||||
for (const unsub of this._unsubs) {
|
||||
unsub();
|
||||
}
|
||||
|
||||
@@ -1389,6 +1389,7 @@ export class NestQuestQuestLogCard extends LitElement {
|
||||
private _completeTimer?: number;
|
||||
private _unsubs: Array<() => void> = [];
|
||||
private _subscribed = false;
|
||||
private _subGeneration = 0;
|
||||
|
||||
setConfig(config: QuestLogCardConfig): void {
|
||||
if (!config || typeof config !== "object") {
|
||||
@@ -1419,10 +1420,11 @@ export class NestQuestQuestLogCard extends LitElement {
|
||||
return;
|
||||
}
|
||||
this._subscribed = true;
|
||||
const token = ++this._subGeneration;
|
||||
const track = (unsubPromise: Promise<() => void>): void => {
|
||||
unsubPromise
|
||||
.then((unsub) => {
|
||||
if (this._subscribed) {
|
||||
if (this._subscribed && token === this._subGeneration) {
|
||||
this._unsubs.push(unsub);
|
||||
} else {
|
||||
unsub();
|
||||
@@ -1449,6 +1451,7 @@ export class NestQuestQuestLogCard extends LitElement {
|
||||
}
|
||||
|
||||
private _unsubscribeLive(): void {
|
||||
this._subGeneration++;
|
||||
for (const unsub of this._unsubs) {
|
||||
unsub();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user