Browse Source

Add feature flag

pull/218/head
Thomas 4 years ago
parent
commit
9efee04c50
  1. 4
      apps/api/src/app/info/info.service.ts
  2. 1
      apps/api/src/services/configuration.service.ts
  3. 1
      apps/api/src/services/interfaces/environment.interface.ts
  4. 7
      apps/client/src/app/pages/about/about-page.component.ts
  5. 2
      apps/client/src/app/pages/about/about-page.html
  6. 1
      libs/common/src/lib/permissions.ts

4
apps/api/src/app/info/info.service.ts

@ -28,6 +28,10 @@ export class InfoService {
const globalPermissions: string[] = [];
if (this.configurationService.get('ENABLE_FEATURE_BLOG')) {
globalPermissions.push(permissions.enableBlog);
}
if (this.configurationService.get('ENABLE_FEATURE_IMPORT')) {
globalPermissions.push(permissions.enableImport);
}

1
apps/api/src/services/configuration.service.ts

@ -15,6 +15,7 @@ export class ConfigurationService {
ALPHA_VANTAGE_API_KEY: str({ default: '' }),
CACHE_TTL: num({ default: 1 }),
DATA_SOURCES: json({ default: JSON.stringify([DataSource.YAHOO]) }),
ENABLE_FEATURE_BLOG: bool({ default: false }),
ENABLE_FEATURE_CUSTOM_SYMBOLS: bool({ default: false }),
ENABLE_FEATURE_FEAR_AND_GREED_INDEX: bool({ default: false }),
ENABLE_FEATURE_IMPORT: bool({ default: !environment.production }),

1
apps/api/src/services/interfaces/environment.interface.ts

@ -5,6 +5,7 @@ export interface Environment extends CleanedEnvAccessors {
ALPHA_VANTAGE_API_KEY: string;
CACHE_TTL: number;
DATA_SOURCES: string | string[]; // string is not correct, error in envalid?
ENABLE_FEATURE_BLOG: boolean;
ENABLE_FEATURE_CUSTOM_SYMBOLS: boolean;
ENABLE_FEATURE_FEAR_AND_GREED_INDEX: boolean;
ENABLE_FEATURE_IMPORT: boolean;

7
apps/client/src/app/pages/about/about-page.component.ts

@ -17,6 +17,7 @@ import { environment } from '../../../environments/environment';
})
export class AboutPageComponent implements OnDestroy, OnInit {
public baseCurrency = baseCurrency;
public hasPermissionForBlog: boolean;
public hasPermissionForStatistics: boolean;
public hasPermissionForSubscription: boolean;
public isLoggedIn: boolean;
@ -41,6 +42,12 @@ export class AboutPageComponent implements OnDestroy, OnInit {
*/
public ngOnInit() {
const { globalPermissions, statistics } = this.dataService.fetchInfo();
this.hasPermissionForBlog = hasPermission(
globalPermissions,
permissions.enableBlog
);
this.hasPermissionForStatistics = hasPermission(
globalPermissions,
permissions.enableStatistics

2
apps/client/src/app/pages/about/about-page.html

@ -104,7 +104,7 @@
</div>
</div>
<div class="mb-5 row">
<div *ngIf="hasPermissionForBlog" class="mb-5 row">
<div class="col">
<h3 class="mb-3 text-center" i18n>Blog</h3>
<mat-card class="blog-container">

1
libs/common/src/lib/permissions.ts

@ -15,6 +15,7 @@ export const permissions = {
deleteOrder: 'deleteOrder',
deleteUser: 'deleteUser',
enableImport: 'enableImport',
enableBlog: 'enableBlog',
enableSocialLogin: 'enableSocialLogin',
enableStatistics: 'enableStatistics',
enableSubscription: 'enableSubscription',

Loading…
Cancel
Save