From 0ffc2b406ed569f51ac09631f58977629a84312c Mon Sep 17 00:00:00 2001 From: cyprain-okeke <108260115+cyprain-okeke@users.noreply.github.com> Date: Fri, 16 May 2025 15:22:52 +0100 Subject: [PATCH] Resolve more than one Sponsorship revoke bug (#14818) --- .../free-bitwarden-families.component.ts | 5 +++- ...ion-sponsorship-api.service.abstraction.ts | 6 +++-- .../organization-sponsorship-api.service.ts | 23 +++++++++++++++++-- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/apps/web/src/app/billing/members/free-bitwarden-families.component.ts b/apps/web/src/app/billing/members/free-bitwarden-families.component.ts index dddc730168..da5d2b54f9 100644 --- a/apps/web/src/app/billing/members/free-bitwarden-families.component.ts +++ b/apps/web/src/app/billing/members/free-bitwarden-families.component.ts @@ -179,7 +179,10 @@ export class FreeBitwardenFamiliesComponent implements OnInit { return; } - await this.organizationSponsorshipApiService.deleteRevokeSponsorship(this.organizationId, true); + await this.organizationSponsorshipApiService.deleteAdminInitiatedRevokeSponsorship( + this.organizationId, + sponsorship.friendlyName, + ); this.toastService.showToast({ variant: "success", diff --git a/libs/common/src/billing/abstractions/organizations/organization-sponsorship-api.service.abstraction.ts b/libs/common/src/billing/abstractions/organizations/organization-sponsorship-api.service.abstraction.ts index 5e69f57ca1..46b11a9332 100644 --- a/libs/common/src/billing/abstractions/organizations/organization-sponsorship-api.service.abstraction.ts +++ b/libs/common/src/billing/abstractions/organizations/organization-sponsorship-api.service.abstraction.ts @@ -11,8 +11,10 @@ export abstract class OrganizationSponsorshipApiServiceAbstraction { friendlyName?: string, ): Promise; - abstract deleteRevokeSponsorship: ( + abstract deleteRevokeSponsorship: (sponsoringOrganizationId: string) => Promise; + + abstract deleteAdminInitiatedRevokeSponsorship: ( sponsoringOrganizationId: string, - isAdminInitiated?: boolean, + sponsoredFriendlyName: string, ) => Promise; } diff --git a/libs/common/src/billing/services/organization/organization-sponsorship-api.service.ts b/libs/common/src/billing/services/organization/organization-sponsorship-api.service.ts index 99440b10de..bba24f7ed7 100644 --- a/libs/common/src/billing/services/organization/organization-sponsorship-api.service.ts +++ b/libs/common/src/billing/services/organization/organization-sponsorship-api.service.ts @@ -44,11 +44,30 @@ export class OrganizationSponsorshipApiService ): Promise { const basePath = "/organization/sponsorship/"; const hostPath = this.platformUtilsService.isSelfHost() ? "self-hosted/" : ""; - const queryParam = `?isAdminInitiated=${isAdminInitiated}`; return await this.apiService.send( "DELETE", - basePath + hostPath + sponsoringOrganizationId + queryParam, + basePath + hostPath + sponsoringOrganizationId, + null, + true, + false, + ); + } + + async deleteAdminInitiatedRevokeSponsorship( + sponsoringOrganizationId: string, + sponsoredFriendlyName: string, + ): Promise { + const basePath = "/organization/sponsorship/"; + const hostPath = this.platformUtilsService.isSelfHost() ? "self-hosted/" : ""; + return await this.apiService.send( + "DELETE", + basePath + + hostPath + + sponsoringOrganizationId + + "/" + + encodeURIComponent(sponsoredFriendlyName) + + "/revoke", null, true, false,