1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-16 16:23:44 +00:00

[SG-439] Add feature flags to web (#3092)

* Add feature flags to web

* Remove extra file from dev
This commit is contained in:
Robyn MacCallum
2022-07-13 12:22:58 -04:00
committed by GitHub
parent 6a26223f93
commit 0465168919
8 changed files with 48 additions and 4 deletions

View File

@@ -1,10 +1,12 @@
import { NgModule } from "@angular/core";
import { RouterModule, Routes } from "@angular/router";
import { Route, RouterModule, Routes } from "@angular/router";
import { AuthGuard } from "@bitwarden/angular/guards/auth.guard";
import { LockGuard } from "@bitwarden/angular/guards/lock.guard";
import { UnauthGuard } from "@bitwarden/angular/guards/unauth.guard";
import { flagEnabled, FlagName } from "../utils/flags";
import { AcceptEmergencyComponent } from "./accounts/accept-emergency.component";
import { AcceptOrganizationComponent } from "./accounts/accept-organization.component";
import { HintComponent } from "./accounts/hint.component";
@@ -65,12 +67,12 @@ const routes: Routes = [
canActivate: [UnauthGuard],
data: { titleId: "createAccount" },
},
{
buildFlaggedRoute("showTrial", {
path: "trial",
component: TrialInitiationComponent,
canActivate: [UnauthGuard],
data: { titleId: "startTrial" },
},
}),
{
path: "sso",
component: SsoComponent,
@@ -258,3 +260,12 @@ const routes: Routes = [
exports: [RouterModule],
})
export class OssRoutingModule {}
export function buildFlaggedRoute(flagName: FlagName, route: Route): Route {
return flagEnabled(flagName)
? route
: {
path: route.path,
redirectTo: "/",
};
}

View File

@@ -0,0 +1,19 @@
export type Flags = {
showTrial?: boolean;
};
export type FlagName = keyof Flags;
export function flagEnabled(flag: FlagName): boolean {
return flags()[flag] == null || flags()[flag];
}
function flags(): Flags {
const envFlags = process.env.FLAGS as string | Flags;
if (typeof envFlags === "string") {
return JSON.parse(envFlags) as Flags;
} else {
return envFlags as Flags;
}
}