Add removeInvitation to the invitation screen

This commit is contained in:
2026-06-08 13:22:13 +02:00
parent 69adee180a
commit bca736dab4
3 changed files with 57 additions and 0 deletions
+13
View File
@@ -67,6 +67,7 @@ export class AppService extends EventEmitter<AppEventMap> {
{
onUpdated: (invitation: XOInvitation) => void;
onStatusChanged: (status: string) => void;
onRemoved: () => void;
}
>();
@@ -241,13 +242,25 @@ export class AppService extends EventEmitter<AppEventMap> {
invitationIdentifier,
});
};
const onRemoved = () => {
this.detachInvitationListeners(invitationIdentifier);
this.invitations.splice(this.invitations.indexOf(invitation), 1);
this.bumpInvitationRevision(invitationIdentifier);
this.emit("invitation-removed", invitation);
this.emit("wallet-state-changed", {
reason: "invitation-removed",
invitationIdentifier: invitationIdentifier,
});
};
invitation.on("invitation-updated", onUpdated);
invitation.on("invitation-status-changed", onStatusChanged);
invitation.on("invitation-removed", onRemoved);
this.invitationEventCleanup.set(invitationIdentifier, {
onUpdated,
onStatusChanged,
onRemoved,
});
}
+18
View File
@@ -46,6 +46,7 @@ export type { ResolvedInvitationData } from "../utils/resolve-invitation-data.js
export type InvitationEventMap = {
"invitation-updated": XOInvitation;
"invitation-status-changed": string;
"invitation-removed": void;
error: Error;
};
@@ -889,4 +890,21 @@ export class Invitation extends EventEmitter<InvitationEventMap> {
return totalSats;
}
/**
* Removes the invitation from the Local SQLite db as well as the Engine's internal DB
* NOTE: This uses methods that are marked "DANGEROUSLY" inside the engine and behaviour may change
*/
public async delete() {
// Remove the invitation from our local db
this.storage.remove(this.data.invitationIdentifier);
// Remove the invitation from the engine's internal db
await this.engine.DANGEROUS_deleteStoredInvitation(this.data.invitationIdentifier);
this.emit("invitation-removed", this.data.invitationIdentifier);
// Update the status of the invitation
await this.updateStatus();
}
}