mirror of
https://github.com/bitwarden/browser
synced 2025-12-16 08:13:42 +00:00
[PM-5979] Refactor EnvironmentService (#8040)
Refactor environment service to emit a single observable. This required significant changes to how the environment service behaves and tackles much of the tech debt planned for it.
This commit is contained in:
@@ -1,38 +1,25 @@
|
||||
<div class="tw-mb-1" *ngIf="showRegionSelector">
|
||||
<bit-menu #environmentOptions>
|
||||
<a
|
||||
*ngFor="let region of availableRegions"
|
||||
bitMenuItem
|
||||
[attr.href]="
|
||||
isUsServer ? 'javascript:void(0)' : 'https://vault.bitwarden.com' + routeAndParams
|
||||
region == currentRegion ? 'javascript:void(0)' : region.urls.webVault + routeAndParams
|
||||
"
|
||||
class="pr-4"
|
||||
>
|
||||
<i
|
||||
class="bwi bwi-fw bwi-sm bwi-check pb-1"
|
||||
aria-hidden="true"
|
||||
[style.visibility]="isUsServer ? 'visible' : 'hidden'"
|
||||
[style.visibility]="region == currentRegion ? 'visible' : 'hidden'"
|
||||
></i>
|
||||
{{ "usDomain" | i18n }}
|
||||
</a>
|
||||
<a
|
||||
bitMenuItem
|
||||
[attr.href]="
|
||||
isEuServer ? 'javascript:void(0)' : 'https://vault.bitwarden.eu' + routeAndParams
|
||||
"
|
||||
class="pr-4"
|
||||
>
|
||||
<i
|
||||
class="bwi bwi-fw bwi-sm bwi-check pb-1"
|
||||
aria-hidden="true"
|
||||
[style.visibility]="isEuServer ? 'visible' : 'hidden'"
|
||||
></i>
|
||||
{{ "euDomain" | i18n }}
|
||||
{{ region.domain }}
|
||||
</a>
|
||||
</bit-menu>
|
||||
<div>
|
||||
{{ "server" | i18n }}:
|
||||
<a [routerLink]="[]" [bitMenuTriggerFor]="environmentOptions">
|
||||
<b>{{ isEuServer ? ("euDomain" | i18n) : ("usDomain" | i18n) }}</b
|
||||
<b>{{ currentRegion?.domain }}</b
|
||||
><i class="bwi bwi-fw bwi-sm bwi-angle-down" aria-hidden="true"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import { Component, OnInit } from "@angular/core";
|
||||
import { Router } from "@angular/router";
|
||||
|
||||
import { RegionDomain } from "@bitwarden/common/platform/abstractions/environment.service";
|
||||
import {
|
||||
EnvironmentService,
|
||||
RegionConfig,
|
||||
} from "@bitwarden/common/platform/abstractions/environment.service";
|
||||
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
|
||||
import { Utils } from "@bitwarden/common/platform/misc/utils";
|
||||
|
||||
@@ -12,19 +15,21 @@ import { Utils } from "@bitwarden/common/platform/misc/utils";
|
||||
export class EnvironmentSelectorComponent implements OnInit {
|
||||
constructor(
|
||||
private platformUtilsService: PlatformUtilsService,
|
||||
private environmentService: EnvironmentService,
|
||||
private router: Router,
|
||||
) {}
|
||||
|
||||
isEuServer: boolean;
|
||||
isUsServer: boolean;
|
||||
showRegionSelector = false;
|
||||
routeAndParams: string;
|
||||
protected availableRegions = this.environmentService.availableRegions();
|
||||
protected currentRegion?: RegionConfig;
|
||||
|
||||
protected showRegionSelector = false;
|
||||
protected routeAndParams: string;
|
||||
|
||||
async ngOnInit() {
|
||||
const domain = Utils.getDomain(window.location.href);
|
||||
this.isEuServer = domain.includes(RegionDomain.EU);
|
||||
this.isUsServer = domain.includes(RegionDomain.US) || domain.includes(RegionDomain.USQA);
|
||||
this.showRegionSelector = !this.platformUtilsService.isSelfHost();
|
||||
this.routeAndParams = `/#${this.router.url}`;
|
||||
|
||||
const host = Utils.getHost(window.location.href);
|
||||
this.currentRegion = this.availableRegions.find((r) => Utils.getHost(r.urls.webVault) === host);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user