| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -304,7 +304,7 @@ export default class MembersList extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  async refreshData(showPendingEvenIfAllWereIgnored = false) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // Force refresh both contacts and members | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.contacts = await this.$getAllContacts() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.contacts = await this.$getAllContacts(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    await this.fetchMembers(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -462,7 +462,12 @@ export default class MembersList extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return this.contacts.find((contact) => contact.did === did); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  getPendingMembers(): { did: string; name: string; isContact: boolean; member: { memberId: string; }; }[] { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  getPendingMembers(): { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    did: string; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    name: string; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    isContact: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    member: { memberId: string }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  }[] { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return this.decryptedMembers | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      .filter((member) => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // Exclude the current user | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -482,7 +487,12 @@ export default class MembersList extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      })); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  getNonContactMembers(): { did: string; name: string; isContact: boolean; member: { memberId: string; }; }[] { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  getNonContactMembers(): { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    did: string; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    name: string; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    isContact: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    member: { memberId: string }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  }[] { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return this.decryptedMembers | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      .filter((member) => !this.getContactFor(member.did)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      .map((member) => ({ | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -499,18 +509,18 @@ export default class MembersList extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					   * Show the admit pending members dialog if conditions are met | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					   */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  checkAndShowAdmitPendingDialog(showPendingEvenIfAllWereIgnored = false) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const pendingMembers = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.isOrganizer ? this.getPendingMembers() : this.getNonContactMembers(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const pendingMembers = this.isOrganizer | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ? this.getPendingMembers() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      : this.getNonContactMembers(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if (pendingMembers.length === 0) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.startAutoRefresh(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if (!showPendingEvenIfAllWereIgnored) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      // only show if there are pending members that have not been ignored | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      const pendingMembersNotIgnored = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        pendingMembers.filter( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          (member) => !this.previousMemberDidsIgnored.includes(member.did) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      const pendingMembersNotIgnored = pendingMembers.filter( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        (member) => !this.previousMemberDidsIgnored.includes(member.did), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if (pendingMembersNotIgnored.length === 0) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        this.startAutoRefresh(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // everyone waiting has been ignored | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -520,21 +530,27 @@ export default class MembersList extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.stopAutoRefresh(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.pendingMembersData = pendingMembers; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if (this.isOrganizer) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      (this.$refs.admitPendingMembersDialog as AdmitPendingMembersDialog).open(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        this.$refs.admitPendingMembersDialog as AdmitPendingMembersDialog | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ).open(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.visibleBulkVisibilityDialog = true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  // Admit Pending Members Dialog methods | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  async closeAdmitPendingDialog(result: { notSelectedMemberDids: string[] } | undefined) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  async closeAdmitPendingDialog( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    result: { notSelectedMemberDids: string[] } | undefined, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  ) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.pendingMembersData = []; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.previousMemberDidsIgnored = result?.notSelectedMemberDids || []; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    await this.refreshData(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  async closeSetBulkVisibilityDialog(result: { notSelectedMemberDids: string[] } | undefined) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  async closeSetBulkVisibilityDialog( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    result: { notSelectedMemberDids: string[] } | undefined, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  ) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.visibleBulkVisibilityDialog = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.pendingMembersData = []; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.previousMemberDidsIgnored = result?.notSelectedMemberDids || []; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -680,7 +696,6 @@ export default class MembersList extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  startAutoRefresh() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.lastRefreshTime = Date.now(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.countdownTimer = 10; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |