mirror of
https://github.com/bitwarden/browser
synced 2025-12-16 08:13:42 +00:00
Wire up key definitions for OrganizationService (#7781)
* Wire up key definitions for OrganizationService [`AC-2009`: Transition OrganizationService to use StateProvider]( https://bitwarden.atlassian.net/browse/AC-2009) In order to support the new `StateProvider` APIs for managing application state this commit modifies `OrganizationService` in the following ways: 1. Adding a `KeyDefinition` object to `OrganizationService` to store the `organization` record in `StateProvider`. 1. Injecting `StateProvider` and wiring up `OrganizationService` to read from the `organizations` key definition for the active user account. 1. Expanding the capabilities of `OrganizationData` to be able to read itself from a JSON string. Previously this was handled directly by `StateService`. 1. Updating tests to include requirements for testing against `StateProvider`. 1. Marking the existing `StateService`-backed `organizations` `Observable` and `BehaviorSubject` as deprecated. This is largely unimplemented code with no intended visible effects to the system. Implementing getting & updating the `organizations` value from `StateProvider` will the next step in this work. * Rework null check on OrganizationData * Remove deprecation signals for the time being * Move key definition inline with its service * Create date objects when deserialzing json from state
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import { Jsonify } from "type-fest";
|
||||
|
||||
import { ProductType } from "../../../enums";
|
||||
import { OrganizationUserStatusType, OrganizationUserType, ProviderType } from "../../enums";
|
||||
import { PermissionsApi } from "../api/permissions.api";
|
||||
@@ -54,12 +56,16 @@ export class OrganizationData {
|
||||
flexibleCollections: boolean;
|
||||
|
||||
constructor(
|
||||
response: ProfileOrganizationResponse,
|
||||
options: {
|
||||
response?: ProfileOrganizationResponse,
|
||||
options?: {
|
||||
isMember: boolean;
|
||||
isProviderUser: boolean;
|
||||
},
|
||||
) {
|
||||
if (response == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.id = response.id;
|
||||
this.name = response.name;
|
||||
this.status = response.status;
|
||||
@@ -110,4 +116,17 @@ export class OrganizationData {
|
||||
this.isMember = options.isMember;
|
||||
this.isProviderUser = options.isProviderUser;
|
||||
}
|
||||
|
||||
static fromJSON(obj: Jsonify<OrganizationData>) {
|
||||
return Object.assign(new OrganizationData(), obj, {
|
||||
familySponsorshipLastSyncDate:
|
||||
obj.familySponsorshipLastSyncDate != null
|
||||
? new Date(obj.familySponsorshipLastSyncDate)
|
||||
: obj.familySponsorshipLastSyncDate,
|
||||
familySponsorshipValidUntil:
|
||||
obj.familySponsorshipValidUntil != null
|
||||
? new Date(obj.familySponsorshipValidUntil)
|
||||
: obj.familySponsorshipValidUntil,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user