mirror of
https://github.com/bitwarden/web
synced 2026-01-20 01:13:32 +00:00
Feature/families for enterprise (#1300)
* Added manual routing
* Families for enterprise/account settings (#1290)
* Added sponsored families page
* Revert "Added manual routing"
This reverts commit a970ba78ff.
* Add messages to page
* Remove stages and simplify design
* Switch to new figma design
* Add screen reader
* Add calls to server
* Reorder methods
* Used to organization filters
* Connected page to server
* Add preliminary text to subscription page
* Sponsor existing family organization flow
* Update jslib
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Add revoke sponsorship flow
* Add spinner to send offer button
* Determine if subscription has sponsored items
* Work on subscription button
* Add message for new family organization
* Families for enterprise/subscription page (#1292)
* Work on subscription button
* Determine if subscription has sponsored items
* Work on subscriptions page
* Add message for new family organization
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Families for enterprise/redeem card (#1295)
* Add toast localization message
* Use helpers to property display sponsorship items
* Split table rows into component so buttons load (#1296)
* Split table rows into component so buttons load
* Update jslib
* Families for enterprise/localizations (#1299)
* Add more localizations
* Remove unneeded comments
* Fix help article
* Run linting
* Do not show redeem button if no orgs exist to redeem
* Implement new process for accepting sponsorships
* Hide business checkbox
* Update jslib
* Removed commented code
* Remove commented html
* Cleaned up imports
* Use proper message
* Remove merge conflict message
* Remove confusing comment
* Listened to PR feedback
* Remove unused property
* Update help text
* Fix aria labels
* Add try catch
* Made toast before emit
* Minor copy changes
* Update jslib
* Remove unneeded loading
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
This commit is contained in:
@@ -38,6 +38,7 @@ export class OrganizationSubscriptionComponent implements OnInit {
|
||||
|
||||
userOrg: Organization;
|
||||
|
||||
removeSponsorshipPromise: Promise<any>;
|
||||
cancelPromise: Promise<any>;
|
||||
reinstatePromise: Promise<any>;
|
||||
|
||||
@@ -156,6 +157,26 @@ export class OrganizationSubscriptionComponent implements OnInit {
|
||||
}
|
||||
}
|
||||
|
||||
async removeSponsorship() {
|
||||
const isConfirmed = await this.platformUtilsService.showDialog(
|
||||
this.i18nService.t('removeSponsorshipConfirmation'),
|
||||
this.i18nService.t('removeSponsorship'),
|
||||
this.i18nService.t('remove'), this.i18nService.t('cancel'), 'warning');
|
||||
|
||||
if (!isConfirmed) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
this.removeSponsorshipPromise = this.apiService.deleteRemoveSponsorship(this.organizationId);
|
||||
await this.removeSponsorshipPromise;
|
||||
this.toasterService.popAsync('success', null, this.i18nService.t('removeSponsorshipSuccess'));
|
||||
await this.load();
|
||||
} catch (e) {
|
||||
this.logService.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
get isExpired() {
|
||||
return this.sub != null && this.sub.expiration != null &&
|
||||
new Date(this.sub.expiration) < new Date();
|
||||
@@ -207,6 +228,10 @@ export class OrganizationSubscriptionComponent implements OnInit {
|
||||
return this.sub.plan.hasAdditionalSeatsOption;
|
||||
}
|
||||
|
||||
get isSponsoredSubscription(): boolean {
|
||||
return this.sub.subscription?.items.some(i => i.sponsoredSubscriptionItem);
|
||||
}
|
||||
|
||||
get canDownloadLicense() {
|
||||
return (this.sub.planType !== PlanType.Free && this.subscription == null) ||
|
||||
(this.subscription != null && !this.subscription.cancelled);
|
||||
@@ -216,7 +241,11 @@ export class OrganizationSubscriptionComponent implements OnInit {
|
||||
if (this.sub.planType === PlanType.Free) {
|
||||
return this.i18nService.t('subscriptionFreePlan', this.sub.seats.toString());
|
||||
} else if (this.sub.planType === PlanType.FamiliesAnnually || this.sub.planType === PlanType.FamiliesAnnually2019) {
|
||||
return this.i18nService.t('subscriptionFamiliesPlan', this.sub.seats.toString());
|
||||
if (this.isSponsoredSubscription) {
|
||||
return this.i18nService.t('subscriptionSponsoredFamiliesPlan', this.sub.seats.toString());
|
||||
} else {
|
||||
return this.i18nService.t('subscriptionFamiliesPlan', this.sub.seats.toString());
|
||||
}
|
||||
} else if (this.sub.maxAutoscaleSeats === this.sub.seats && this.sub.seats != null) {
|
||||
return this.i18nService.t('subscriptionMaxReached', this.sub.seats.toString());
|
||||
} else if (this.sub.maxAutoscaleSeats == null) {
|
||||
|
||||
Reference in New Issue
Block a user