From f5e1e5f1a216c03b72d2116496052ac59e2edb91 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Thu, 7 Mar 2024 18:32:04 +0900 Subject: [PATCH] [enterprise] implement subdomain logo cache buster --- .../master-page/master-page.component.html | 4 ++-- .../master-page/master-page.component.ts | 18 +++++++++++++++--- .../src/app/services/enterprise.service.ts | 5 +++-- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/frontend/src/app/components/master-page/master-page.component.html b/frontend/src/app/components/master-page/master-page.component.html index 828ece1e5..da0bbfcea 100644 --- a/frontend/src/app/components/master-page/master-page.component.html +++ b/frontend/src/app/components/master-page/master-page.component.html @@ -16,9 +16,9 @@ - +
- +
diff --git a/frontend/src/app/components/master-page/master-page.component.ts b/frontend/src/app/components/master-page/master-page.component.ts index a92f77cf9..6f376f923 100644 --- a/frontend/src/app/components/master-page/master-page.component.ts +++ b/frontend/src/app/components/master-page/master-page.component.ts @@ -1,7 +1,7 @@ -import { Component, OnInit, Input, ViewChild } from '@angular/core'; +import { Component, OnInit, OnDestroy, Input, ViewChild } from '@angular/core'; import { Router } from '@angular/router'; import { Env, StateService } from '../../services/state.service'; -import { Observable, merge, of } from 'rxjs'; +import { Observable, merge, of, Subscription } from 'rxjs'; import { LanguageService } from '../../services/language.service'; import { EnterpriseService } from '../../services/enterprise.service'; import { NavigationService } from '../../services/navigation.service'; @@ -14,7 +14,7 @@ import { ApiService } from '../../services/api.service'; templateUrl: './master-page.component.html', styleUrls: ['./master-page.component.scss'], }) -export class MasterPageComponent implements OnInit { +export class MasterPageComponent implements OnInit, OnDestroy { @Input() headerVisible = true; @Input() footerVisibleOverride: boolean | null = null; @@ -32,6 +32,9 @@ export class MasterPageComponent implements OnInit { user: any = undefined; servicesEnabled = false; menuOpen = false; + + enterpriseInfo: any; + enterpriseInfo$: Subscription; @ViewChild(MenuComponent) public menuComponent!: MenuComponent; @@ -64,6 +67,9 @@ export class MasterPageComponent implements OnInit { this.footerVisible = this.footerVisibleOverride; } }); + this.enterpriseInfo$ = this.enterpriseService.info$.subscribe(info => { + this.enterpriseInfo = info; + }); this.servicesEnabled = this.officialMempoolSpace && this.stateService.env.ACCELERATOR === true && this.stateService.network === ''; this.refreshAuth(); @@ -72,6 +78,12 @@ export class MasterPageComponent implements OnInit { this.menuOpen = isServicesPage && !this.isSmallScreen(); } + ngOnDestroy() { + if (this.enterpriseInfo$) { + this.enterpriseInfo$.unsubscribe(); + } + } + collapse(): void { this.navCollapsed = !this.navCollapsed; } diff --git a/frontend/src/app/services/enterprise.service.ts b/frontend/src/app/services/enterprise.service.ts index d1e3624f9..698af138b 100644 --- a/frontend/src/app/services/enterprise.service.ts +++ b/frontend/src/app/services/enterprise.service.ts @@ -4,6 +4,7 @@ import { ApiService } from './api.service'; import { SeoService } from './seo.service'; import { StateService } from './state.service'; import { ActivatedRoute } from '@angular/router'; +import { BehaviorSubject } from 'rxjs'; @Injectable({ providedIn: 'root' @@ -11,9 +12,9 @@ import { ActivatedRoute } from '@angular/router'; export class EnterpriseService { exclusiveHostName = '.mempool.space'; subdomain: string | null = null; - info: object = {}; statsUrl: string; siteId: number; + info$: BehaviorSubject = new BehaviorSubject(null); constructor( @Inject(DOCUMENT) private document: Document, @@ -47,9 +48,9 @@ export class EnterpriseService { fetchSubdomainInfo(): void { this.apiService.getEnterpriseInfo$(this.subdomain).subscribe((info) => { - this.info = info; this.insertMatomo(info.site_id); this.seoService.setEnterpriseTitle(info.title); + this.info$.next(info); }, (error) => { if (error.status === 404) {