|
|
@ -6,55 +6,78 @@ |
|
|
|
Time Safari |
|
|
|
</h1> |
|
|
|
|
|
|
|
<!-- show the actions for recognizing a give --> |
|
|
|
<div class="mb-8"> |
|
|
|
<h2 class="text-xl font-bold">Record a Gift</h2> |
|
|
|
|
|
|
|
<ul class="grid grid-cols-4 gap-x-3 gap-y-5 text-center mb-5"> |
|
|
|
<li @click="openDialog()"> |
|
|
|
<EntityIcon |
|
|
|
:entityId="null" |
|
|
|
:iconSize="64" |
|
|
|
class="mx-auto border border-slate-300 rounded-md mb-1" |
|
|
|
></EntityIcon> |
|
|
|
<h3 |
|
|
|
class="text-xs italic font-medium text-ellipsis whitespace-nowrap overflow-hidden" |
|
|
|
> |
|
|
|
Anonymous/Unnamed |
|
|
|
</h3> |
|
|
|
</li> |
|
|
|
<li |
|
|
|
v-for="contact in allContacts" |
|
|
|
:key="contact.did" |
|
|
|
@click="openDialog(contact)" |
|
|
|
<div v-if="!activeDid"> |
|
|
|
To record others' giving, |
|
|
|
<router-link :to="{ name: 'start' }" class="text-blue-500"> |
|
|
|
create your identifier.</router-link |
|
|
|
> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div v-else-if="!isRegistered"> |
|
|
|
To record others' giving, someone must register your account, so show |
|
|
|
them |
|
|
|
<router-link :to="{ name: 'contact-qr' }" class="text-blue-500"> |
|
|
|
your identity info</router-link |
|
|
|
> |
|
|
|
<EntityIcon |
|
|
|
:entityId="contact.did" |
|
|
|
:iconSize="64" |
|
|
|
class="mx-auto border border-slate-300 rounded-md mb-1" |
|
|
|
></EntityIcon> |
|
|
|
<h3 |
|
|
|
class="text-xs font-medium text-ellipsis whitespace-nowrap overflow-hidden" |
|
|
|
and then |
|
|
|
<router-link :to="{ name: 'account' }" class="text-blue-500"> |
|
|
|
check your limits.</router-link |
|
|
|
> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div v-else> |
|
|
|
<!-- activeDid && isRegistered --> |
|
|
|
<h2 class="text-xl font-bold">Record a Gift</h2> |
|
|
|
|
|
|
|
<ul class="grid grid-cols-4 gap-x-3 gap-y-5 text-center mb-5"> |
|
|
|
<li @click="openDialog()"> |
|
|
|
<EntityIcon |
|
|
|
:entityId="null" |
|
|
|
:iconSize="64" |
|
|
|
class="mx-auto border border-slate-300 rounded-md mb-1" |
|
|
|
></EntityIcon> |
|
|
|
<h3 |
|
|
|
class="text-xs italic font-medium text-ellipsis whitespace-nowrap overflow-hidden" |
|
|
|
> |
|
|
|
Anonymous/Unnamed |
|
|
|
</h3> |
|
|
|
</li> |
|
|
|
<li |
|
|
|
v-for="contact in allContacts" |
|
|
|
:key="contact.did" |
|
|
|
@click="openDialog(contact)" |
|
|
|
> |
|
|
|
{{ contact.name || contact.did }} |
|
|
|
</h3> |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
<EntityIcon |
|
|
|
:entityId="contact.did" |
|
|
|
:iconSize="64" |
|
|
|
class="mx-auto border border-slate-300 rounded-md mb-1" |
|
|
|
></EntityIcon> |
|
|
|
<h3 |
|
|
|
class="text-xs font-medium text-ellipsis whitespace-nowrap overflow-hidden" |
|
|
|
> |
|
|
|
{{ contact.name || contact.did }} |
|
|
|
</h3> |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
|
|
|
|
<!-- Ideally, this button should only be visible when the active account has more than 7 or 11 contacts in their list (we want to limit the grid count above to 8 or 12 accounts to keep it compact) --> |
|
|
|
<router-link |
|
|
|
v-if="allContacts.length >= 7" |
|
|
|
:to="{ name: 'contact-gives' }" |
|
|
|
class="block text-center text-md font-bold uppercase bg-slate-500 text-white px-2 py-3 rounded-md" |
|
|
|
> |
|
|
|
Show More Contacts… |
|
|
|
</router-link> |
|
|
|
|
|
|
|
<!-- If there are no contacts, show this instead: --> |
|
|
|
<div |
|
|
|
class="rounded border border-dashed border-slate-300 bg-slate-100 px-4 py-3 text-center italic text-slate-500" |
|
|
|
v-if="allContacts.length === 0" |
|
|
|
> |
|
|
|
(No contacts to show.) |
|
|
|
<!-- Ideally, this button should only be visible when the active account has more than 7 or 11 contacts in their list (we want to limit the grid count above to 8 or 12 accounts to keep it compact) --> |
|
|
|
<router-link |
|
|
|
v-if="allContacts.length >= 7" |
|
|
|
:to="{ name: 'contact-gives' }" |
|
|
|
class="block text-center text-md font-bold uppercase bg-slate-500 text-white px-2 py-3 rounded-md" |
|
|
|
> |
|
|
|
Show More Contacts… |
|
|
|
</router-link> |
|
|
|
|
|
|
|
<!-- If there are no contacts, show this instead: --> |
|
|
|
<div |
|
|
|
class="rounded border border-dashed border-slate-300 bg-slate-100 px-4 py-3 text-center italic text-slate-500" |
|
|
|
v-if="allContacts.length === 0" |
|
|
|
> |
|
|
|
(No contacts to show.) |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
@ -129,6 +152,7 @@ export default class HomeView extends Vue { |
|
|
|
feedPreviousOldestId?: string; |
|
|
|
feedLastViewedId?: string; |
|
|
|
isHiddenSpinner = true; |
|
|
|
isRegistered = false; |
|
|
|
numAccounts = 0; |
|
|
|
|
|
|
|
async beforeCreate() { |
|
|
@ -173,6 +197,7 @@ export default class HomeView extends Vue { |
|
|
|
this.activeDid = settings?.activeDid || ""; |
|
|
|
this.allContacts = await db.contacts.toArray(); |
|
|
|
this.feedLastViewedId = settings?.lastViewedClaimId; |
|
|
|
this.isRegistered = !!settings?.isRegistered; |
|
|
|
this.updateAllFeed(); |
|
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any |
|
|
|
} catch (err: any) { |
|
|
|