From 897d172a5665cb09e228eda2484118ba503ee99c Mon Sep 17 00:00:00 2001 From: JaredScar Date: Thu, 22 Jan 2026 16:01:11 -0500 Subject: [PATCH] Enhance organization integrations module with routing updates and state management improvements - Added OrganizationIntegrationsState for better state management. - Updated routing to redirect to single sign-on by default. - Integrated OrganizationIntegrationsResolver for preloading data. - Refactored components to utilize new state management and improved async handling. --- .../organization-integrations/integrations.component.html | 2 ++ .../organization-integrations-routing.module.ts | 4 +++- .../organization-integrations.module.ts | 2 +- .../organization-integrations.state.ts | 2 +- .../single-sign-on/single-sign-on.component.ts | 4 ++-- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integrations.component.html b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integrations.component.html index 694385bd4f4..5d5eca87f8f 100644 --- a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integrations.component.html +++ b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integrations.component.html @@ -15,3 +15,5 @@ } + + diff --git a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations-routing.module.ts b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations-routing.module.ts index 5392d4b1447..626fc5dee88 100644 --- a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations-routing.module.ts +++ b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations-routing.module.ts @@ -7,6 +7,7 @@ import { DeviceManagementComponent } from "./device-management/device-management import { EventManagementComponent } from "./event-management/event-management.component"; import { AdminConsoleIntegrationsComponent } from "./integrations.component"; import { OrganizationIntegrationsResolver } from "./organization-integrations.resolver"; +import { OrganizationIntegrationsState } from "./organization-integrations.state"; import { SingleSignOnComponent } from "./single-sign-on/single-sign-on.component"; import { UserProvisioningComponent } from "./user-provisioning/user-provisioning.component"; @@ -18,9 +19,10 @@ const routes: Routes = [ titleId: "integrations", }, component: AdminConsoleIntegrationsComponent, + providers: [OrganizationIntegrationsState, OrganizationIntegrationsResolver], resolve: { integrations: OrganizationIntegrationsResolver }, children: [ - { path: "", component: AdminConsoleIntegrationsComponent }, + { path: "", redirectTo: "single-sign-on", pathMatch: "full" }, { path: "single-sign-on", component: SingleSignOnComponent }, { path: "user-provisioning", component: UserProvisioningComponent }, { path: "event-management", component: EventManagementComponent }, diff --git a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations.module.ts b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations.module.ts index c97177803d4..33f389a92a9 100644 --- a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations.module.ts +++ b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations.module.ts @@ -24,6 +24,7 @@ import { UserProvisioningComponent } from "./user-provisioning/user-provisioning EventManagementComponent, ], providers: [ + OrganizationIntegrationsResolver, safeProvider({ provide: OrganizationIntegrationService, useClass: OrganizationIntegrationService, @@ -39,7 +40,6 @@ import { UserProvisioningComponent } from "./user-provisioning/user-provisioning useClass: OrganizationIntegrationConfigurationApiService, deps: [ApiService], }), - OrganizationIntegrationsResolver, ], }) export class OrganizationIntegrationsModule {} diff --git a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations.state.ts b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations.state.ts index 6bbb1a72f9b..a49a1d3bf41 100644 --- a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations.state.ts +++ b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations.state.ts @@ -4,7 +4,7 @@ import { toObservable } from "@angular/core/rxjs-interop"; import { Integration } from "@bitwarden/bit-common/dirt/organization-integrations/models/integration"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; -@Injectable({ providedIn: "root" }) +@Injectable() export class OrganizationIntegrationsState { private readonly _integrations = signal([]); private readonly _organization = signal(null); diff --git a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/single-sign-on/single-sign-on.component.ts b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/single-sign-on/single-sign-on.component.ts index 7f045378800..19e0b7b01f3 100644 --- a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/single-sign-on/single-sign-on.component.ts +++ b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/single-sign-on/single-sign-on.component.ts @@ -3,11 +3,11 @@ import { Component, OnInit } from "@angular/core"; import { IntegrationType } from "@bitwarden/common/enums/integration-type.enum"; import { SharedModule } from "@bitwarden/web-vault/app/shared"; +import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; import { IntegrationGridComponent } from "../integration-grid/integration-grid.component"; import { FilterIntegrationsPipe } from "../integrations.pipe"; import { OrganizationIntegrationsState } from "../organization-integrations.state"; import { tap } from "rxjs/operators"; -import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; // FIXME(https://bitwarden.atlassian.net/browse/CL-764): Migrate to OnPush // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection @@ -24,7 +24,7 @@ export class SingleSignOnComponent implements OnInit { ngOnInit() { // eslint-disable-next-line no-console - this.state.integrations$ + this.integrationsList$ .pipe( tap((integrations) => console.log("[DEBUG] integrations in single-sign-on.component.ts =>", integrations),