allow deletion of a contact
This commit is contained in:
@@ -96,7 +96,12 @@
|
|||||||
{{ contact.name || "(no name)" }}
|
{{ contact.name || "(no name)" }}
|
||||||
</h2>
|
</h2>
|
||||||
<div class="text-sm truncate">{{ contact.did }}</div>
|
<div class="text-sm truncate">{{ contact.did }}</div>
|
||||||
<div class="text-sm truncate">{{ contact.publicKeyBase64 }}</div>
|
<div class="text-sm truncate" v-if="contact.publicKeyBase64">
|
||||||
|
Public Key (base 64): {{ contact.publicKeyBase64 }}
|
||||||
|
</div>
|
||||||
|
<button @click="deleteContact(contact)">
|
||||||
|
<fa icon="trash-can" class="text-slate-900 fa-fw ml-1" />
|
||||||
|
</button>
|
||||||
<div v-if="showGiveTotals" class="float-right">
|
<div v-if="showGiveTotals" class="float-right">
|
||||||
<div class="float-right">
|
<div class="float-right">
|
||||||
to: {{ givenByMeTotals[contact.did] || 0 }}
|
to: {{ givenByMeTotals[contact.did] || 0 }}
|
||||||
@@ -183,7 +188,11 @@ export default class ContactsView extends Vue {
|
|||||||
if (this.showGiveTotals) {
|
if (this.showGiveTotals) {
|
||||||
this.loadGives();
|
this.loadGives();
|
||||||
}
|
}
|
||||||
this.contacts = await db.contacts.toArray();
|
const allContacts = await db.contacts.toArray();
|
||||||
|
this.contacts = R.sort(
|
||||||
|
(a: Contact, b) => (a.name || "").localeCompare(b.name || ""),
|
||||||
|
allContacts
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
async onClickNewContact(): Promise<void> {
|
async onClickNewContact(): Promise<void> {
|
||||||
@@ -206,7 +215,11 @@ export default class ContactsView extends Vue {
|
|||||||
}
|
}
|
||||||
const newContact = { did, name, publicKeyBase64 };
|
const newContact = { did, name, publicKeyBase64 };
|
||||||
await db.contacts.add(newContact);
|
await db.contacts.add(newContact);
|
||||||
this.contacts = this.contacts.concat([newContact]);
|
const allContacts = this.contacts.concat([newContact]);
|
||||||
|
this.contacts = R.sort(
|
||||||
|
(a: Contact, b) => (a.name || "").localeCompare(b.name || ""),
|
||||||
|
allContacts
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
async loadGives() {
|
async loadGives() {
|
||||||
@@ -281,6 +294,22 @@ export default class ContactsView extends Vue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async deleteContact(contact: Contact) {
|
||||||
|
if (
|
||||||
|
confirm(
|
||||||
|
"Are you sure you want to delete " +
|
||||||
|
this.nameForDid(this.contacts, contact.did) +
|
||||||
|
" with DID " +
|
||||||
|
contact.did +
|
||||||
|
"?"
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
await db.open();
|
||||||
|
await db.contacts.delete(contact.did);
|
||||||
|
this.contacts = R.without([contact], this.contacts);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// from https://stackoverflow.com/a/175787/845494
|
// from https://stackoverflow.com/a/175787/845494
|
||||||
//
|
//
|
||||||
private isNumeric(str: string): boolean {
|
private isNumeric(str: string): boolean {
|
||||||
|
|||||||
Reference in New Issue
Block a user