Skip to content

Commit 1f14834

Browse files
committed
Hide the stale entity name in the breadcrumb while the details page shows its error state
1 parent 5889222 commit 1f14834

6 files changed

Lines changed: 27 additions & 6 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<app-common-details-page-header
22
rootName="experiments.title.text"
3-
[detailsName]="(selectedExperiment$ | async)?.name ?? ''"
3+
[detailsName]="(detailsName$ | async) ?? ''"
44
rootLink="experiments"
55
>
66
</app-common-details-page-header>

packages/frontend/projects/upgrade/src/app/features/dashboard/experiments/pages/experiment-details-page/experiment-details-page-header/experiment-details-page-header.component.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';
22
import { CommonDetailsPageHeaderComponent } from '@shared-component-lib';
33
import { ExperimentService } from '../../../../../../core/experiments/experiments.service';
44
import { CommonModule } from '@angular/common';
5+
import { combineLatest, Observable } from 'rxjs';
6+
import { map } from 'rxjs/operators';
57

68
@Component({
79
selector: 'app-experiment-details-page-header',
@@ -11,7 +13,12 @@ import { CommonModule } from '@angular/common';
1113
changeDetection: ChangeDetectionStrategy.OnPush,
1214
})
1315
export class ExperimentDetailsPageHeaderComponent {
14-
selectedExperiment$ = this.experimentService.selectedExperiment$;
16+
// Suppress the cached experiment name while the details page shows its error state,
17+
// so the breadcrumb doesn't display a stale name next to "not found"
18+
detailsName$: Observable<string> = combineLatest([
19+
this.experimentService.selectedExperiment$,
20+
this.experimentService.experimentDetailsPageError$,
21+
]).pipe(map(([experiment, detailsPageError]) => (detailsPageError ? '' : experiment?.name ?? '')));
1522

1623
constructor(private experimentService: ExperimentService) {}
1724
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<app-common-details-page-header
22
rootName="feature-flags.title.text"
3-
[detailsName]="(selectedFeatureFlag$ | async)?.name ?? ''"
3+
[detailsName]="(detailsName$ | async) ?? ''"
44
rootLink="featureflags"
55
>
66
</app-common-details-page-header>

packages/frontend/projects/upgrade/src/app/features/dashboard/feature-flags/pages/feature-flag-details-page/feature-flag-details-page-header/feature-flag-details-page-header.component.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';
22
import { CommonDetailsPageHeaderComponent } from '@shared-component-lib';
33
import { FeatureFlagsService } from '../../../../../../core/feature-flags/feature-flags.service';
44
import { CommonModule } from '@angular/common';
5+
import { combineLatest, Observable } from 'rxjs';
6+
import { map } from 'rxjs/operators';
57

68
@Component({
79
selector: 'app-feature-flag-details-page-header',
@@ -11,7 +13,12 @@ import { CommonModule } from '@angular/common';
1113
changeDetection: ChangeDetectionStrategy.OnPush,
1214
})
1315
export class FeatureFlagDetailsPageHeaderComponent {
14-
selectedFeatureFlag$ = this.featureFlagService.selectedFeatureFlag$;
16+
// Suppress the cached flag name while the details page shows its error state,
17+
// so the breadcrumb doesn't display a stale name next to "not found"
18+
detailsName$: Observable<string> = combineLatest([
19+
this.featureFlagService.selectedFeatureFlag$,
20+
this.featureFlagService.featureFlagDetailsPageError$,
21+
]).pipe(map(([featureFlag, detailsPageError]) => (detailsPageError ? '' : featureFlag?.name ?? '')));
1522

1623
constructor(private featureFlagService: FeatureFlagsService) {}
1724
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<app-common-details-page-header
22
rootName="app-header.title.segments"
3-
[detailsName]="(selectedSegment$ | async)?.name ?? ''"
3+
[detailsName]="(detailsName$ | async) ?? ''"
44
rootLink="segments"
55
>
66
</app-common-details-page-header>

packages/frontend/projects/upgrade/src/app/features/dashboard/segments/pages/segment-details-page/segment-details-page-header/segment-details-page-header.component.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';
22
import { CommonDetailsPageHeaderComponent } from '@shared-component-lib';
33
import { SegmentsService } from '../../../../../../core/segments/segments.service';
44
import { CommonModule } from '@angular/common';
5+
import { combineLatest, Observable } from 'rxjs';
6+
import { map } from 'rxjs/operators';
57

68
@Component({
79
selector: 'app-segment-details-page-header',
@@ -11,7 +13,12 @@ import { CommonModule } from '@angular/common';
1113
changeDetection: ChangeDetectionStrategy.OnPush,
1214
})
1315
export class SegmentDetailsPageHeaderComponent {
14-
selectedSegment$ = this.segmentsService.selectedSegment$;
16+
// Suppress the cached segment name while the details page shows its error state,
17+
// so the breadcrumb doesn't display a stale name next to "not found"
18+
detailsName$: Observable<string> = combineLatest([
19+
this.segmentsService.selectedSegment$,
20+
this.segmentsService.segmentDetailsPageError$,
21+
]).pipe(map(([segment, detailsPageError]) => (detailsPageError ? '' : segment?.name ?? '')));
1522

1623
constructor(private segmentsService: SegmentsService) {}
1724
}

0 commit comments

Comments
 (0)