|
@ -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 { |
|
|