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