diff --git a/src/views/InviteOneView.vue b/src/views/InviteOneView.vue index fe6a82dec..ae3f14c80 100644 --- a/src/views/InviteOneView.vue +++ b/src/views/InviteOneView.vue @@ -60,6 +60,13 @@ {{ getTruncatedRedeemedBy(invite.redeemedBy) }} + + + @@ -153,6 +160,27 @@ export default class InviteOneView extends Vue { ); } + lookForErrorAndNotify(error, title, defaultMessage) { + console.error(title, "-", error); + let message = defaultMessage; + if (error.response && error.response.data && error.response.data.error) { + if (error.response.data.error.message) { + message = error.response.data.error.message; + } else { + message = error.response.data.error; + } + } + this.$notify( + { + group: "alert", + type: "danger", + title: title, + text: message, + }, + 5000, + ); + } + async createInvite() { const inviteIdentifier = Math.random().toString(36).substring(2) + @@ -191,31 +219,56 @@ export default class InviteOneView extends Vue { }); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { - console.error("Error creating invite:", error); - let message = "Got an error creating your invite."; - if ( - error.response && - error.response.data && - error.response.data.error - ) { - if (error.response.data.error.message) { - message = error.response.data.error.message; - } else { - message = error.response.data.error; - } - } - this.$notify( - { - group: "alert", - type: "danger", - title: "Error Creating Invite", - text: message, - }, - 5000, + this.lookForErrorAndNotify( + error, + "Error Creating Invite", + "Got an error creating your invite.", ); } }, ); } + + deleteInvite(inviteId: string) { + this.$notify( + { + group: "modal", + type: "confirm", + title: "Delete Invite?", + text: "Are you sure you want to erase this invite? (There is no undo.)", + onYes: async () => { + const headers = await getHeaders(this.activeDid); + try { + const result = await axios.delete( + this.apiServer + "/api/userUtil/invite/" + inviteId, + { headers }, + ); + if (result.status !== 204) { + throw result.data; + } + this.invites = this.invites.filter( + (invite) => invite.inviteIdentifier !== inviteId, + ); + this.$notify( + { + group: "alert", + type: "success", + title: "Deleted", + text: "Invite deleted.", + }, + 3000, + ); + } catch (e) { + this.lookForErrorAndNotify( + e, + "Error Deleting Invite", + "Got an error deleting your invite.", + ); + } + }, + }, + -1, + ); + } }