| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -5,7 +5,7 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  <!-- CONTENT --> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  <section id="Content" class="p-2 pb-24 max-w-3xl mx-auto"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    <h1 id="ViewHeading" class="text-4xl text-center font-light px-4 mb-8"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      Time Safari | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      {{ AppString.APP_NAME }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    </h1> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    <!-- prompt to install notifications --> | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -79,89 +79,100 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        <!-- !isCreatingIdentifier --> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        <div | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          v-if="!activeDid" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          class="bg-amber-200 rounded-md overflow-hidden text-center px-4 py-3 mb-4" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          class="bg-amber-200 rounded-md text-center px-4 py-3 mb-4" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <p class="text-lg mb-3"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            Want to connect with your contacts, or share contributions or | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            projects? | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            Want to see info from your contacts, or share contributions? | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          </p> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <router-link | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            :to="{ name: 'start' }" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            class="block text-center text-md font-bold bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mt-2 px-2 py-3 rounded-md" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            Create An Identifier | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          </router-link> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        <div | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          v-else-if="!isRegistered" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          class="bg-amber-200 rounded-md overflow-hidden text-center px-4 py-3 mb-4" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <!-- activeDid && !isRegistered --> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          Someone must register you before you can give kudos or make offers or | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          create projects... basically before doing anything. | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <router-link | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            :to="{ name: 'contact-qr' }" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            class="block text-center text-md font-bold bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mt-2 px-2 py-3 rounded-md" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            Show Them Your Identifier Info | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          </router-link> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <div class="flex justify-between"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <button | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              class="block text-center text-md font-bold bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mt-2 px-2 py-3 rounded-md" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              @click="generateIdentifier()" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              Let me start the easiest (with a passkey). | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            </button> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <router-link | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              :to="{ name: 'start' }" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              class="block text-center text-md font-bold bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mt-2 px-2 py-3 rounded-md" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              Give me all the options. | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            </router-link> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        <div v-else> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <!-- activeDid && isRegistered --> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <!-- show the actions for recognizing a give --> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <div class="mb-4"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <h2 class="text-xl font-bold">Record Something Given By:</h2> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        <div v-else class="mb-4"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <!-- activeDid --> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <ul | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            class="grid grid-cols-4 sm:grid-cols-5 md:grid-cols-6 gap-x-3 gap-y-5 text-center mb-5" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <div | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            v-if="!isRegistered" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            class="bg-amber-200 rounded-md overflow-hidden text-center px-4 py-3 mb-4" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <li @click="openDialog()"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              <img | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                src="../assets/blank-square.svg" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                class="mx-auto border border-slate-300 rounded-md mb-1" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              /> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              <h3 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                class="text-xs italic font-medium text-ellipsis whitespace-nowrap overflow-hidden" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                Unnamed/Unknown | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              </h3> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            </li> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <li | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              v-for="contact in allContacts.slice(0, 7)" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              :key="contact.did" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              @click="openDialog(contact)" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              <EntityIcon | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                :contact="contact" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                :iconSize="64" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                class="mx-auto border border-slate-300 rounded-md mb-1 cursor-pointer" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              /> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              <h3 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                class="text-xs font-medium text-ellipsis whitespace-nowrap overflow-hidden" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                {{ contact.name || contact.did }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              </h3> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            </li> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          </ul> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <div class="flex justify-between"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <!-- activeDid && !isRegistered --> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            Someone must register you before you can give kudos or make offers | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            or create projects... basically before doing anything. | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <router-link | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              v-if="allContacts.length >= 7" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              :to="{ name: 'contact-gift' }" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              class="block text-center text-md font-bold bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              :to="{ name: 'contact-qr' }" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              class="block text-center text-md font-bold bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mt-2 px-2 py-3 rounded-md" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              Choose From All Contacts | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              Show Them Your Identifier Info | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            </router-link> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <button | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              @click="openGiftedPrompts()" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              class="block text-center text-md bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <div v-else> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <!-- activeDid && isRegistered --> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <!-- show the actions for recognizing a give --> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <div class="mb-4"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              <h2 class="text-xl font-bold">Record Something Given By:</h2> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <ul | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              class="grid grid-cols-4 sm:grid-cols-5 md:grid-cols-6 gap-x-3 gap-y-5 text-center mb-5" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              Ideas... | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            </button> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              <li @click="openDialog()"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                <img | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  src="../assets/blank-square.svg" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  class="mx-auto border border-slate-300 rounded-md mb-1" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                /> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                <h3 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  class="text-xs italic font-medium text-ellipsis whitespace-nowrap overflow-hidden" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  Unnamed/Unknown | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                </h3> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              </li> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              <li | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                v-for="contact in allContacts.slice(0, 7)" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                :key="contact.did" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                @click="openDialog(contact)" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                <EntityIcon | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  :contact="contact" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  :iconSize="64" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  class="mx-auto border border-slate-300 rounded-md mb-1 cursor-pointer" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                /> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                <h3 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  class="text-xs font-medium text-ellipsis whitespace-nowrap overflow-hidden" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  {{ contact.name || contact.did }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                </h3> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              </li> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            </ul> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <div class="flex justify-between"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              <router-link | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                v-if="allContacts.length >= 7" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                :to="{ name: 'contact-gift' }" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                class="block text-center text-md font-bold bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                Choose From All Contacts | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              </router-link> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              <button | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                @click="openGiftedPrompts()" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                class="block text-center text-md bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                Ideas... | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              </button> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      </div> | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -309,6 +320,7 @@ import { IIdentifier } from "@veramo/core"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { Component, Vue } from "vue-facing-decorator"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { Router } from "vue-router"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import App from "../App.vue"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import EntityIcon from "@/components/EntityIcon.vue"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import GiftedDialog from "@/components/GiftedDialog.vue"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import GiftedPrompts from "@/components/GiftedPrompts.vue"; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -316,7 +328,7 @@ import FeedFilters from "@/components/FeedFilters.vue"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import InfiniteScroll from "@/components/InfiniteScroll.vue"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import QuickNav from "@/components/QuickNav.vue"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import TopMessage from "@/components/TopMessage.vue"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { NotificationIface } from "@/constants/app"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { AppString, NotificationIface } from "@/constants/app"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { db, accountsDB } from "@/db/index"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { Account } from "@/db/tables/accounts"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { Contact } from "@/db/tables/contacts"; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -336,7 +348,7 @@ import { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  GiverReceiverInputInfo, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  GiveSummaryRecord, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} from "@/libs/endorserServer"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { generateSaveAndActivateIdentity } from "@/libs/util"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { registerSaveAndActivatePasskey } from "@/libs/util"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					interface GiveRecordWithContactInfo extends GiveSummaryRecord { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  giver: { | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -354,6 +366,11 @@ interface GiveRecordWithContactInfo extends GiveSummaryRecord { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					@Component({ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  computed: { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    App() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      return App; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  components: { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    GiftedDialog, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    GiftedPrompts, | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -367,6 +384,8 @@ interface GiveRecordWithContactInfo extends GiveSummaryRecord { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					export default class HomeView extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  $notify!: (notification: NotificationIface, timeout?: number) => void; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  AppString = AppString; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  activeDid = ""; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  allContacts: Array<Contact> = []; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  allMyDids: Array<string> = []; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -374,6 +393,7 @@ export default class HomeView extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  feedData: GiveRecordWithContactInfo[] = []; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  feedPreviousOldestId?: string; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  feedLastViewedClaimId?: string; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  givenName = ""; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  isAnyFeedFilterOn: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  isCreatingIdentifier = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  isFeedFilteredByVisible = false; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -397,15 +417,6 @@ export default class HomeView extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return identity; // may be null | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public async getHeaders(identity: IIdentifier) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const token = await accessToken(identity); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const headers = { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      "Content-Type": "application/json", | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      Authorization: "Bearer " + token, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return headers; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  async mounted() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    try { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      await accountsDB.open(); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -418,6 +429,7 @@ export default class HomeView extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.activeDid = settings?.activeDid || ""; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.allContacts = await db.contacts.toArray(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.feedLastViewedClaimId = settings?.lastViewedClaimId; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.givenName = settings?.firstName || ""; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.isFeedFilteredByVisible = !!settings?.filterFeedByVisible; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.isFeedFilteredByNearby = !!settings?.filterFeedByNearby; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.isRegistered = !!settings?.isRegistered; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -426,14 +438,7 @@ export default class HomeView extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.isAnyFeedFilterOn = isAnyFeedFilterOn(settings); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if (this.allMyDids.length === 0) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        this.isCreatingIdentifier = true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        this.activeDid = await generateSaveAndActivateIdentity(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        this.allMyDids = [this.activeDid]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        this.isCreatingIdentifier = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      // someone may have have registered after sharing contact info | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      // someone may have have registered after sharing contact info, so recheck | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if (!this.isRegistered && this.activeDid) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        const identity = await this.getIdentity(this.activeDid); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        try { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -475,6 +480,15 @@ export default class HomeView extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  async generateIdentifier() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.isCreatingIdentifier = true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const account = await registerSaveAndActivatePasskey( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      AppString.APP_NAME + (this.givenName ? " - " + this.givenName : ""), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.activeDid = account.did; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.allMyDids = this.allMyDids.concat(this.activeDid); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.isCreatingIdentifier = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  resultsAreFiltered() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return this.isFeedFilteredByVisible || this.isFeedFilteredByNearby; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -483,7 +497,7 @@ export default class HomeView extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return "Notification" in window; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public async buildHeaders() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  async buildHeaders() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const headers: HeadersInit = { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      "Content-Type": "application/json", | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -520,7 +534,7 @@ export default class HomeView extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					   * Data loader used by infinite scroller | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					   * @param payload is the flag from the InfiniteScroll indicating if it should load | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					   **/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public async loadMoreGives(payload: boolean) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  async loadMoreGives(payload: boolean) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // Since feed now loads projects along the way, it takes longer | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // and the InfiniteScroll component triggers a load before finished. | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // One alternative is to totally separate the project link loading. | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -542,7 +556,7 @@ export default class HomeView extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public async updateAllFeed() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  async updateAllFeed() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.isFeedLoading = true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let endOfResults = true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    await this.retrieveGives(this.apiServer, this.feedPreviousOldestId) | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -650,7 +664,7 @@ export default class HomeView extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					   * @param beforeId the earliest ID (of previous searches) to search earlier | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					   * @return claims in reverse chronological order | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					   */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public async retrieveGives(endorserApiServer: string, beforeId?: string) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  async retrieveGives(endorserApiServer: string, beforeId?: string) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const beforeQuery = beforeId == null ? "" : "&beforeId=" + beforeId; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const response = await fetch( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      endorserApiServer + | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |