From 3ace33bf1a0c1e2546507f849ab832261ef16435 Mon Sep 17 00:00:00 2001 From: Joana Maia Date: Wed, 1 Mar 2023 16:47:20 +0000 Subject: [PATCH 1/3] Allow to reenrich members --- .../components/list/member-list-toolbar.vue | 100 +++++++++++++----- .../member/components/member-dropdown.vue | 9 +- frontend/src/shared/dialog/confirm-dialog.js | 24 ++++- 3 files changed, 99 insertions(+), 34 deletions(-) diff --git a/frontend/src/modules/member/components/list/member-list-toolbar.vue b/frontend/src/modules/member/components/list/member-list-toolbar.vue index 9bd9243a0b..e50efa705c 100644 --- a/frontend/src/modules/member/components/list/member-list-toolbar.vue +++ b/frontend/src/modules/member/components/list/member-list-toolbar.vue @@ -25,7 +25,6 @@ Merge members - Enrich members + {{ + enrichmentLabel + }} @@ -130,22 +131,33 @@ export default { }, elegibleEnrichmentMembersIds() { return this.selectedRows - .filter( - (r) => - (r.username?.github || r.email) && - !r.lastEnriched - ) + .filter((r) => r.username?.github || r.email) .map((item) => item.id) }, - selectedIds() { - return this.selectedRows - .filter((item) => !item.lastEnriched) - .map((item) => item.id) + enrichedMembers() { + return this.selectedRows.filter((r) => r.lastEnriched) + .length }, - areSelectedMembersNotEnriched() { - return this.selectedRows.some( - (item) => !item.lastEnriched - ) + enrichmentLabel() { + if ( + this.enrichedMembers === + this.elegibleEnrichmentMembersIds.length + ) { + return `Re-enrich ${pluralize( + 'member', + this.selectedIds, + false + )}` + } + + return `Enrich ${pluralize( + 'member', + this.selectedIds.length, + false + )}` + }, + selectedIds() { + return this.selectedRows.map((item) => item.id) }, markAsTeamMemberOptions() { const isTeamView = this.activeView.id === 'team' @@ -192,16 +204,45 @@ export default { } else if (command.action === 'destroyAll') { await this.doDestroyAllWithConfirm() } else if (command.action === 'enrichMember') { + const enrichments = + this.elegibleEnrichmentMembersIds.length + let doEnrich = false + let reEnrichmentMessage = null + + if (this.enrichedMembers) { + reEnrichmentMessage = + this.enrichedMembers === 1 + ? `You selected 1 member that was already enriched. If you proceed, this member will be re-enriched and counted towards your quota.` + : `You selected ${this.enrichedMembers} members that were already enriched. If you proceed, these members will be re-enriched and counted towards your quota.` + } + // All members are elegible for enrichment - if ( - this.elegibleEnrichmentMembersIds.length === - this.selectedIds.length - ) { - await this.doBulkEnrich( - this.elegibleEnrichmentMembersIds - ) - } else { + if (enrichments === this.selectedIds.length) { + // If there are already enriched members, show a warning dialog + if (this.enrichedMembers) { + try { + await ConfirmDialog({ + type: 'warning', + title: 'Some members were already enriched', + message: reEnrichmentMessage, + confirmButtonText: `Proceed with enrichment (${pluralize( + 'member', + enrichments, + true + )})`, + cancelButtonText: 'Cancel', + icon: 'ri-alert-line' + }) + + doEnrich = true + } catch (error) { + // no + } + } else { + doEnrich = true + } // Only a few members are elegible for enrichment + } else { try { await ConfirmDialog({ type: 'warning', @@ -211,20 +252,25 @@ export default { 'Member enrichment requires an associated GitHub profile or Email. If you proceed, only the members who fulfill this requirement will be enriched and counted towards your quota.', confirmButtonText: `Proceed with enrichment (${pluralize( 'member', - this.elegibleEnrichmentMembersIds.length, + enrichments, true )})`, + highlightedInfo: reEnrichmentMessage, cancelButtonText: 'Cancel', icon: 'ri-alert-line' }) - await this.doBulkEnrich( - this.elegibleEnrichmentMembersIds - ) + doEnrich = true } catch (error) { // no } } + + if (doEnrich) { + await this.doBulkEnrich( + this.elegibleEnrichmentMembersIds + ) + } } }, diff --git a/frontend/src/modules/member/components/member-dropdown.vue b/frontend/src/modules/member/components/member-dropdown.vue index 5f9f5be655..748eea6043 100644 --- a/frontend/src/modules/member/components/member-dropdown.vue +++ b/frontend/src/modules/member/components/member-dropdown.vue @@ -22,7 +22,7 @@ } }" > - Enrich member{{ + member.lastEnriched + ? 'Re-enrich member' + : 'Enrich member' + }} diff --git a/frontend/src/shared/dialog/confirm-dialog.js b/frontend/src/shared/dialog/confirm-dialog.js index d3db1592a3..03db9e9d6f 100644 --- a/frontend/src/shared/dialog/confirm-dialog.js +++ b/frontend/src/shared/dialog/confirm-dialog.js @@ -52,10 +52,26 @@ export default ({ ) ] ), - h('p', { - innerHTML: message, - class: 'text-gray-500 text-sm' - }) + h('div', [ + h('p', { + innerHTML: message, + class: 'text-gray-500 text-sm' + }), + highlightedInfo + ? h( + 'div', + { + class: + 'text-2xs text-yellow-600 flex items-center mt-4' + }, + [ + h('div', { + innerHTML: highlightedInfo + }) + ] + ) + : undefined + ]) ] ) From dbbf840f09c1080ff56b35c409f2d3b0c6f961d2 Mon Sep 17 00:00:00 2001 From: Joana Maia Date: Wed, 1 Mar 2023 17:33:53 +0000 Subject: [PATCH 2/3] Fix copy for enrich members bulk --- .../src/modules/member/components/list/member-list-toolbar.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/modules/member/components/list/member-list-toolbar.vue b/frontend/src/modules/member/components/list/member-list-toolbar.vue index e50efa705c..7de55f3dba 100644 --- a/frontend/src/modules/member/components/list/member-list-toolbar.vue +++ b/frontend/src/modules/member/components/list/member-list-toolbar.vue @@ -140,8 +140,9 @@ export default { }, enrichmentLabel() { if ( + this.enrichedMembers && this.enrichedMembers === - this.elegibleEnrichmentMembersIds.length + this.elegibleEnrichmentMembersIds.length ) { return `Re-enrich ${pluralize( 'member', From 0f4b8b1d039963c0ccab25393c95ac8ebacb39bd Mon Sep 17 00:00:00 2001 From: Joana Maia Date: Wed, 1 Mar 2023 17:38:22 +0000 Subject: [PATCH 3/3] Fix reenrichment validation for only already enriched members --- .../src/modules/member/components/list/member-list-toolbar.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/modules/member/components/list/member-list-toolbar.vue b/frontend/src/modules/member/components/list/member-list-toolbar.vue index 7de55f3dba..6d8ab07764 100644 --- a/frontend/src/modules/member/components/list/member-list-toolbar.vue +++ b/frontend/src/modules/member/components/list/member-list-toolbar.vue @@ -146,7 +146,7 @@ export default { ) { return `Re-enrich ${pluralize( 'member', - this.selectedIds, + this.selectedIds.length, false )}` }