| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -7,7 +7,6 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    <!-- Members List --> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    <div v-else class="space-y-4"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      <div v-if="missingMyself" class="py-4"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        You are not yet admitted. The organizer will admit you. | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      </div> | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -30,15 +29,22 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <div class="flex"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <h3 class="text-lg font-medium">{{ member.name }}</h3> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <span | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              v-if="showOrganizerTools && isOrganizer && member.did !== activeDid" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              v-if=" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                showOrganizerTools && isOrganizer && member.did !== activeDid | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              " | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              class="flex items-center" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              <button | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                @click="toggleAdmission(member)" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                class="ml-2 w-6 h-6 flex items-center justify-center rounded-full bg-blue-100 text-blue-600 hover:bg-blue-200 hover:text-blue-800 transition-colors" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                :title="member.member.admitted ? 'Remove member' : 'Admit member'" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                :title=" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  member.member.admitted ? 'Remove member' : 'Admit member' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                " | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                <fa :icon="member.member.admitted ? 'minus' : 'plus'" class="text-sm" /> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                <fa | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  :icon="member.member.admitted ? 'minus' : 'plus'" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  class="text-sm" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                /> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              </button> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              <button | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                @click="informAboutAdmission()" | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -93,7 +99,6 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          "Your password failed. Please go back and try again." | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      </p> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					</template> | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -101,7 +106,11 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					<script lang="ts"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { Component, Vue, Prop } from "vue-facing-decorator"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { logConsoleAndDb, retrieveSettingsForActiveAccount, db } from "@/db/index"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  logConsoleAndDb, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  retrieveSettingsForActiveAccount, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  db, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} from "@/db/index"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  errorStringForLog, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  getHeaders, | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -152,7 +161,7 @@ export default class MembersList extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      await this.axios.put( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        `${this.apiServer}/api/partner/groupOnboardMember/${member.member.memberId}`, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        { admitted: !member.member.admitted }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        { headers } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        { headers }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      // Update local state | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      member.member.admitted = !member.member.admitted; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -163,7 +172,12 @@ export default class MembersList extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          did: member.did, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          name: member.name, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        const result = await register(this.activeDid, this.apiServer, this.axios, contact); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        const result = await register( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          this.activeDid, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          this.apiServer, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          this.axios, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          contact, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if (result.success) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          member.member.registered = true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          await db.contacts.update(member.did, { registered: true }); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -192,8 +206,15 @@ export default class MembersList extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } catch (error) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      logConsoleAndDb("Error toggling admission: " + errorStringForLog(error), true); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.$emit("error", serverMessageForUser(error) || "Failed to update member admission status."); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      logConsoleAndDb( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        "Error toggling admission: " + errorStringForLog(error), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        true, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.$emit( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        "error", | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        serverMessageForUser(error) || | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          "Failed to update member admission status.", | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -240,7 +261,8 @@ export default class MembersList extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let isFirstEntry = true, foundMyself = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let isFirstEntry = true, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      foundMyself = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    for (const member of this.members) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      try { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        const decryptedContent = await decryptMessage( | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -299,7 +321,7 @@ export default class MembersList extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  isContactAlready(did: string): boolean { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return this.contacts.some(contact => contact.did === did); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return this.contacts.some((contact) => contact.did === did); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  async addAsContact(member: DecryptedMember) { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |