Fix invitation syncing in realtime
This commit is contained in:
@@ -183,6 +183,7 @@ export class AppService extends EventEmitter<AppEventMap> {
|
||||
|
||||
// Add the invitation to the invitations array
|
||||
this.invitations.push(invitation);
|
||||
this.bumpInvitationRevision(invitation.data.invitationIdentifier);
|
||||
|
||||
// Emit the invitation-added event
|
||||
this.emit("invitation-added", invitation);
|
||||
@@ -201,6 +202,7 @@ export class AppService extends EventEmitter<AppEventMap> {
|
||||
if (invitationIndex >= 0) {
|
||||
this.invitations.splice(invitationIndex, 1);
|
||||
}
|
||||
this.bumpInvitationRevision(invitationIdentifier);
|
||||
|
||||
// Emit the invitation-removed event
|
||||
this.emit("invitation-removed", invitation);
|
||||
@@ -215,12 +217,14 @@ export class AppService extends EventEmitter<AppEventMap> {
|
||||
if (this.invitationEventCleanup.has(invitationIdentifier)) return;
|
||||
|
||||
const onUpdated = () => {
|
||||
this.bumpInvitationRevision(invitationIdentifier);
|
||||
this.emit("wallet-state-changed", {
|
||||
reason: "invitation-updated",
|
||||
invitationIdentifier,
|
||||
});
|
||||
};
|
||||
const onStatusChanged = () => {
|
||||
this.bumpInvitationRevision(invitationIdentifier);
|
||||
this.emit("wallet-state-changed", {
|
||||
reason: "invitation-status-changed",
|
||||
invitationIdentifier,
|
||||
@@ -236,6 +240,18 @@ export class AppService extends EventEmitter<AppEventMap> {
|
||||
});
|
||||
}
|
||||
|
||||
getInvitationRevision(invitationIdentifier: string): number {
|
||||
return this.invitationRevisions.get(invitationIdentifier) ?? 0;
|
||||
}
|
||||
|
||||
private bumpInvitationRevision(invitationIdentifier: string): void {
|
||||
this.invitationsRevision += 1;
|
||||
this.invitationRevisions.set(
|
||||
invitationIdentifier,
|
||||
this.getInvitationRevision(invitationIdentifier) + 1,
|
||||
);
|
||||
}
|
||||
|
||||
private detachInvitationListeners(invitationIdentifier: string): void {
|
||||
const trackedInvitation = this.invitations.find(
|
||||
(candidate) =>
|
||||
|
||||
Reference in New Issue
Block a user