diff --git a/apps/web/src/app/organizations/core/index.ts b/apps/web/src/app/organizations/core/index.ts index e68991103c9..2f4f7e585bc 100644 --- a/apps/web/src/app/organizations/core/index.ts +++ b/apps/web/src/app/organizations/core/index.ts @@ -1,4 +1,3 @@ export * from "./core-organization.module"; -export * from "./services/collection-admin.service"; -export * from "./views/collection-access-selection-view"; -export * from "./views/collection-admin-view"; +export * from "./services"; +export * from "./views"; diff --git a/apps/web/src/app/organizations/core/services/collection-admin.service.ts b/apps/web/src/app/organizations/core/services/collection-admin.service.ts index 039751eb754..d0edef52592 100644 --- a/apps/web/src/app/organizations/core/services/collection-admin.service.ts +++ b/apps/web/src/app/organizations/core/services/collection-admin.service.ts @@ -12,7 +12,7 @@ import { import { CollectionView } from "@bitwarden/common/models/view/collection.view"; import { CoreOrganizationModule } from "../core-organization.module"; -import { CollectionAdminView } from "../views/collection-admin-view"; +import { CollectionAdminView } from "../views/collection-admin.view"; @Injectable({ providedIn: CoreOrganizationModule }) export class CollectionAdminService { diff --git a/apps/web/src/app/organizations/services/group/group.service.ts b/apps/web/src/app/organizations/core/services/group/group.service.ts similarity index 93% rename from apps/web/src/app/organizations/services/group/group.service.ts rename to apps/web/src/app/organizations/core/services/group/group.service.ts index b1e40f2c8bf..9888ef5ea46 100644 --- a/apps/web/src/app/organizations/services/group/group.service.ts +++ b/apps/web/src/app/organizations/core/services/group/group.service.ts @@ -4,14 +4,15 @@ import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { SelectionReadOnlyRequest } from "@bitwarden/common/models/request/selection-read-only.request"; import { ListResponse } from "@bitwarden/common/models/response/list.response"; +import { CoreOrganizationModule } from "../../core-organization.module"; import { GroupView } from "../../views/group.view"; -import { GroupRequest, GroupServiceAbstraction } from "../abstractions/group"; +import { GroupRequest } from "./requests/group.request"; import { OrganizationGroupBulkRequest } from "./requests/organization-group-bulk.request"; import { GroupDetailsResponse, GroupResponse } from "./responses/group.response"; -@Injectable() -export class GroupService implements GroupServiceAbstraction { +@Injectable({ providedIn: CoreOrganizationModule }) +export class GroupService { constructor(private apiService: ApiService) {} async delete(orgId: string, groupId: string): Promise { diff --git a/apps/web/src/app/organizations/services/abstractions/group/requests/group.request.ts b/apps/web/src/app/organizations/core/services/group/requests/group.request.ts similarity index 100% rename from apps/web/src/app/organizations/services/abstractions/group/requests/group.request.ts rename to apps/web/src/app/organizations/core/services/group/requests/group.request.ts diff --git a/apps/web/src/app/organizations/services/group/requests/organization-group-bulk.request.ts b/apps/web/src/app/organizations/core/services/group/requests/organization-group-bulk.request.ts similarity index 100% rename from apps/web/src/app/organizations/services/group/requests/organization-group-bulk.request.ts rename to apps/web/src/app/organizations/core/services/group/requests/organization-group-bulk.request.ts diff --git a/apps/web/src/app/organizations/services/group/responses/group.response.ts b/apps/web/src/app/organizations/core/services/group/responses/group.response.ts similarity index 100% rename from apps/web/src/app/organizations/services/group/responses/group.response.ts rename to apps/web/src/app/organizations/core/services/group/responses/group.response.ts diff --git a/apps/web/src/app/organizations/core/services/index.ts b/apps/web/src/app/organizations/core/services/index.ts new file mode 100644 index 00000000000..7864ce90ac4 --- /dev/null +++ b/apps/web/src/app/organizations/core/services/index.ts @@ -0,0 +1,2 @@ +export * from "./group/group.service"; +export * from "./collection-admin.service"; diff --git a/apps/web/src/app/organizations/core/views/collection-access-selection-view.ts b/apps/web/src/app/organizations/core/views/collection-access-selection.view.ts similarity index 100% rename from apps/web/src/app/organizations/core/views/collection-access-selection-view.ts rename to apps/web/src/app/organizations/core/views/collection-access-selection.view.ts diff --git a/apps/web/src/app/organizations/core/views/collection-admin-view.ts b/apps/web/src/app/organizations/core/views/collection-admin.view.ts similarity index 97% rename from apps/web/src/app/organizations/core/views/collection-admin-view.ts rename to apps/web/src/app/organizations/core/views/collection-admin.view.ts index e0ad35bf438..b363d3064c4 100644 --- a/apps/web/src/app/organizations/core/views/collection-admin-view.ts +++ b/apps/web/src/app/organizations/core/views/collection-admin.view.ts @@ -1,7 +1,7 @@ import { CollectionView } from "@bitwarden/common/models/view/collection.view"; import { CollectionAccessDetailsResponse } from "@bitwarden/common/src/models/response/collection.response"; -import { CollectionAccessSelectionView } from "./collection-access-selection-view"; +import { CollectionAccessSelectionView } from "./collection-access-selection.view"; export class CollectionAdminView extends CollectionView { groups: CollectionAccessSelectionView[] = []; diff --git a/apps/web/src/app/organizations/views/group.view.ts b/apps/web/src/app/organizations/core/views/group.view.ts similarity index 89% rename from apps/web/src/app/organizations/views/group.view.ts rename to apps/web/src/app/organizations/core/views/group.view.ts index 929c05f23ef..0c0f9559a21 100644 --- a/apps/web/src/app/organizations/views/group.view.ts +++ b/apps/web/src/app/organizations/core/views/group.view.ts @@ -1,7 +1,8 @@ import { View } from "@bitwarden/common/models/view/view"; import { GroupDetailsResponse, GroupResponse } from "../services/group/responses/group.response"; -import { CollectionAccessSelectionView } from "../views/collection-access-selection.view"; + +import { CollectionAccessSelectionView } from "./collection-access-selection.view"; export class GroupView implements View { id: string; diff --git a/apps/web/src/app/organizations/core/views/index.ts b/apps/web/src/app/organizations/core/views/index.ts new file mode 100644 index 00000000000..5ecfed1efdf --- /dev/null +++ b/apps/web/src/app/organizations/core/views/index.ts @@ -0,0 +1,3 @@ +export * from "./collection-access-selection.view"; +export * from "./collection-admin.view"; +export * from "./group.view"; diff --git a/apps/web/src/app/organizations/manage/group-add-edit.component.ts b/apps/web/src/app/organizations/manage/group-add-edit.component.ts index ccf42cdc477..2fdad269796 100644 --- a/apps/web/src/app/organizations/manage/group-add-edit.component.ts +++ b/apps/web/src/app/organizations/manage/group-add-edit.component.ts @@ -14,7 +14,7 @@ import { CollectionDetailsResponse } from "@bitwarden/common/models/response/col import { ErrorResponse } from "@bitwarden/common/models/response/error.response"; import { DialogService } from "@bitwarden/components"; -import { GroupServiceAbstraction } from "../services/abstractions/group"; +import { GroupService, GroupView } from "../core"; import { AccessItemType, AccessItemValue, @@ -23,7 +23,6 @@ import { convertToSelectionView, PermissionMode, } from "../shared/components/access-selector"; -import { GroupView } from "../views/group.view"; /** * Indices for the available tabs in the dialog @@ -173,7 +172,7 @@ export class GroupAddEditComponent implements OnInit, OnDestroy { @Inject(DIALOG_DATA) private params: GroupAddEditDialogParams, private dialogRef: DialogRef, private apiService: ApiService, - private groupService: GroupServiceAbstraction, + private groupService: GroupService, private i18nService: I18nService, private collectionService: CollectionService, private platformUtilsService: PlatformUtilsService, diff --git a/apps/web/src/app/organizations/manage/groups.component.ts b/apps/web/src/app/organizations/manage/groups.component.ts index 29827961c83..f205bd1b3f5 100644 --- a/apps/web/src/app/organizations/manage/groups.component.ts +++ b/apps/web/src/app/organizations/manage/groups.component.ts @@ -33,8 +33,7 @@ import { ListResponse } from "@bitwarden/common/models/response/list.response"; import { CollectionView } from "@bitwarden/common/models/view/collection.view"; import { DialogService } from "@bitwarden/components"; -import { GroupServiceAbstraction } from "../services/abstractions/group"; -import { GroupView } from "../views/group.view"; +import { GroupService, GroupView } from "../core"; import { GroupAddEditDialogResultType, @@ -124,7 +123,7 @@ export class GroupsComponent implements OnInit, OnDestroy { constructor( private apiService: ApiService, - private groupApiService: GroupServiceAbstraction, + private groupService: GroupService, private route: ActivatedRoute, private i18nService: I18nService, private modalService: ModalService, @@ -148,7 +147,7 @@ export class GroupsComponent implements OnInit, OnDestroy { ), // groups this.refreshGroups$.pipe( - switchMap(() => this.groupApiService.getAll(this.organizationId)) + switchMap(() => this.groupService.getAll(this.organizationId)) ), ]) ), @@ -246,7 +245,7 @@ export class GroupsComponent implements OnInit, OnDestroy { } try { - await this.groupApiService.delete(this.organizationId, groupRow.details.id); + await this.groupService.delete(this.organizationId, groupRow.details.id); this.platformUtilsService.showToast( "success", null, @@ -278,7 +277,7 @@ export class GroupsComponent implements OnInit, OnDestroy { } try { - const result = await this.groupApiService.deleteMany( + const result = await this.groupService.deleteMany( this.organizationId, groupsToDelete.map((g) => g.details.id) ); diff --git a/apps/web/src/app/organizations/manage/user-groups.component.ts b/apps/web/src/app/organizations/manage/user-groups.component.ts index 91a44cf614b..1cb8bf7fef6 100644 --- a/apps/web/src/app/organizations/manage/user-groups.component.ts +++ b/apps/web/src/app/organizations/manage/user-groups.component.ts @@ -7,8 +7,7 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { Utils } from "@bitwarden/common/misc/utils"; import { OrganizationUserUpdateGroupsRequest } from "@bitwarden/common/models/request/organization-user-update-groups.request"; -import { GroupServiceAbstraction } from "../services/abstractions/group"; -import { GroupView } from "../views/group.view"; +import { GroupService, GroupView } from "../core"; @Component({ selector: "app-user-groups", @@ -26,7 +25,7 @@ export class UserGroupsComponent implements OnInit { constructor( private apiService: ApiService, - private groupApiService: GroupServiceAbstraction, + private groupApiService: GroupService, private i18nService: I18nService, private platformUtilsService: PlatformUtilsService, private logService: LogService diff --git a/apps/web/src/app/organizations/organization.module.ts b/apps/web/src/app/organizations/organization.module.ts index 8d790e86385..93c83be3ded 100644 --- a/apps/web/src/app/organizations/organization.module.ts +++ b/apps/web/src/app/organizations/organization.module.ts @@ -1,25 +1,14 @@ import { NgModule } from "@angular/core"; -import { ApiService as ApiServiceAbstraction } from "@bitwarden/common/abstractions/api.service"; - import { CoreOrganizationModule } from "./core"; import { GroupAddEditComponent } from "./manage/group-add-edit.component"; import { GroupsComponent } from "./manage/groups.component"; import { UserGroupsComponent } from "./manage/user-groups.component"; import { OrganizationsRoutingModule } from "./organization-routing.module"; -import { GroupServiceAbstraction } from "./services/abstractions/group"; -import { GroupService } from "./services/group/group.service"; import { SharedOrganizationModule } from "./shared"; @NgModule({ - imports: [OrganizationsRoutingModule, SharedOrganizationModule, CoreOrganizationModule], + imports: [SharedOrganizationModule, CoreOrganizationModule, OrganizationsRoutingModule], declarations: [GroupsComponent, GroupAddEditComponent, UserGroupsComponent], - providers: [ - { - provide: GroupServiceAbstraction, - useClass: GroupService, - deps: [ApiServiceAbstraction], - }, - ], }) export class OrganizationModule {} diff --git a/apps/web/src/app/organizations/services/abstractions/group/group.service.abstraction.ts b/apps/web/src/app/organizations/services/abstractions/group/group.service.abstraction.ts deleted file mode 100644 index 8407a3496eb..00000000000 --- a/apps/web/src/app/organizations/services/abstractions/group/group.service.abstraction.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { GroupView } from "../../../views/group.view"; - -export class GroupServiceAbstraction { - delete: (orgId: string, groupId: string) => Promise; - deleteMany: (orgId: string, groupIds: string[]) => Promise; - - get: (orgId: string, groupId: string) => Promise; - getAll: (orgId: string) => Promise; - - save: (group: GroupView) => Promise; -} diff --git a/apps/web/src/app/organizations/services/abstractions/group/index.ts b/apps/web/src/app/organizations/services/abstractions/group/index.ts deleted file mode 100644 index 1ba10bf6ea5..00000000000 --- a/apps/web/src/app/organizations/services/abstractions/group/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./group.service.abstraction"; -export * from "./requests/group.request"; diff --git a/apps/web/src/app/organizations/shared/components/collection-dialog/collection-dialog.component.ts b/apps/web/src/app/organizations/shared/components/collection-dialog/collection-dialog.component.ts index 570f6a81b03..590392b9ba0 100644 --- a/apps/web/src/app/organizations/shared/components/collection-dialog/collection-dialog.component.ts +++ b/apps/web/src/app/organizations/shared/components/collection-dialog/collection-dialog.component.ts @@ -12,9 +12,12 @@ import { OrganizationUserUserDetailsResponse } from "@bitwarden/common/src/model import { CollectionView } from "@bitwarden/common/src/models/view/collection.view"; import { BitValidators, DialogService } from "@bitwarden/components"; -import { CollectionAdminService, CollectionAdminView } from "../../../core"; -import { GroupServiceAbstraction } from "../../../services/abstractions/group"; -import { GroupView } from "../../../views/group.view"; +import { + CollectionAdminService, + CollectionAdminView, + GroupService, + GroupView, +} from "../../../core"; import { AccessItemType, AccessItemValue, @@ -62,7 +65,7 @@ export class CollectionDialogComponent implements OnInit, OnDestroy { private dialogRef: DialogRef, private apiService: ApiService, private organizationService: OrganizationService, - private groupService: GroupServiceAbstraction, + private groupService: GroupService, private collectionService: CollectionAdminService, private i18nService: I18nService, private platformUtilsService: PlatformUtilsService diff --git a/apps/web/src/app/organizations/shared/components/collection-dialog/collection-dialog.stories.ts b/apps/web/src/app/organizations/shared/components/collection-dialog/collection-dialog.stories.ts index d16c13a8bc6..00970f03478 100644 --- a/apps/web/src/app/organizations/shared/components/collection-dialog/collection-dialog.stories.ts +++ b/apps/web/src/app/organizations/shared/components/collection-dialog/collection-dialog.stories.ts @@ -18,9 +18,9 @@ import { CollectionAccessSelectionView, CollectionAdminService, CollectionAdminView, + GroupService, + GroupView, } from "../../../core"; -import { GroupServiceAbstraction } from "../../../services/abstractions/group/group.service.abstraction"; -import { GroupView } from "../../../views/group.view"; import { AccessSelectorModule } from "../access-selector"; import { CollectionDialogComponent, CollectionDialogParams } from "./collection-dialog.component"; @@ -96,8 +96,8 @@ function providers(data: ProviderData) { } as Partial, }, { - provide: GroupServiceAbstraction, - useValue: { getAll: () => Promise.resolve(data.groups) } as Partial, + provide: GroupService, + useValue: { getAll: () => Promise.resolve(data.groups) } as Partial, }, { provide: ApiService, diff --git a/apps/web/src/app/organizations/views/collection-access-selection.view.ts b/apps/web/src/app/organizations/views/collection-access-selection.view.ts deleted file mode 100644 index 18af9c594c4..00000000000 --- a/apps/web/src/app/organizations/views/collection-access-selection.view.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { View } from "@bitwarden/common/models/view/view"; - -interface SelectionResponseLike { - id: string; - readOnly: boolean; - hidePasswords: boolean; -} - -export class CollectionAccessSelectionView extends View { - id: string; - readOnly: boolean; - hidePasswords: boolean; - - constructor(source?: SelectionResponseLike) { - super(); - - if (source == undefined) { - return; - } - this.id = source.id; - this.readOnly = source.readOnly; - this.hidePasswords = source.hidePasswords; - } -}