From d7fb394d28d0eba41b901db70fbcecdf9eb8d725 Mon Sep 17 00:00:00 2001 From: Hinton Date: Thu, 12 May 2022 10:03:38 +0200 Subject: [PATCH] Switch to using organization as reactive data service --- src/app/layouts/navbar.component.html | 4 +-- src/app/layouts/navbar.component.ts | 35 +++++++------------ .../settings/organization-plans.component.ts | 1 - 3 files changed, 14 insertions(+), 26 deletions(-) diff --git a/src/app/layouts/navbar.component.html b/src/app/layouts/navbar.component.html index 9bbd8d2e..b296579c 100644 --- a/src/app/layouts/navbar.component.html +++ b/src/app/layouts/navbar.component.html @@ -17,8 +17,8 @@ - diff --git a/src/app/layouts/navbar.component.ts b/src/app/layouts/navbar.component.ts index d93ec65d..a3727460 100644 --- a/src/app/layouts/navbar.component.ts +++ b/src/app/layouts/navbar.component.ts @@ -1,6 +1,6 @@ -import { Component, NgZone, OnInit } from "@angular/core"; +import { Component, OnInit } from "@angular/core"; +import { Observable, map } from "rxjs"; -import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; import { I18nService } from "jslib-common/abstractions/i18n.service"; import { MessagingService } from "jslib-common/abstractions/messaging.service"; import { OrganizationService } from "jslib-common/abstractions/organization.service"; @@ -23,7 +23,7 @@ export class NavbarComponent implements OnInit { name: string; email: string; providers: Provider[] = []; - organizations: Organization[] = []; + organizations$ = new Observable(); constructor( private messagingService: MessagingService, @@ -32,9 +32,7 @@ export class NavbarComponent implements OnInit { private providerService: ProviderService, private syncService: SyncService, private organizationService: OrganizationService, - private i18nService: I18nService, - private broadcasterService: BroadcasterService, - private ngZone: NgZone + private i18nService: I18nService ) { this.selfHosted = this.platformUtilsService.isSelfHost(); } @@ -52,26 +50,17 @@ export class NavbarComponent implements OnInit { } this.providers = await this.providerService.getAll(); - this.organizations = await this.buildOrganizations(); - - this.broadcasterService.subscribe(this.constructor.name, async (message: any) => { - this.ngZone.run(async () => { - switch (message.command) { - case "organizationCreated": - if (this.organizations.length < 1) { - this.organizations = await this.buildOrganizations(); - } - break; - } - }); - }); + this.organizations$ = await this.buildOrganizations(); } async buildOrganizations() { - const allOrgs = await this.organizationService.getAll(); - return allOrgs - .filter((org) => OrgNavigationPermissionsService.canAccessAdmin(org)) - .sort(Utils.getSortFunction(this.i18nService, "name")); + return this.organizations$.pipe( + map((orgs) => { + return orgs + .filter((org) => OrgNavigationPermissionsService.canAccessAdmin(org)) + .sort(Utils.getSortFunction(this.i18nService, "name")); + }) + ); } lock() { diff --git a/src/app/settings/organization-plans.component.ts b/src/app/settings/organization-plans.component.ts index 73da459e..ada5e36a 100644 --- a/src/app/settings/organization-plans.component.ts +++ b/src/app/settings/organization-plans.component.ts @@ -300,7 +300,6 @@ export class OrganizationPlansComponent implements OnInit { this.formPromise = doSubmit(); const organizationId = await this.formPromise; this.onSuccess.emit({ organizationId: organizationId }); - this.messagingService.send("organizationCreated", organizationId); } catch (e) { this.logService.error(e); }