ethereum-lite-explorer
Version:
Ethereum Lite Explorer
99 lines (83 loc) • 2.5 kB
text/typescript
import { UserPreferences } from "app/UserPreferences";
import { IConfigData } from "@alethio/cms";
declare var APP_DEFAULT_LOCALE: string;
declare var APP_AVAILABLE_LOCALES: string;
interface IAppConfigData {
APP_SENTRY_ENABLED?: string;
APP_SENTRY_APPNAME?: string;
APP_SENTRY_DSN?: string;
APP_SENTRY_ENV?: string;
GOOGLE_ANALYTICS_ID?: string;
HOTJAR_ID?: string;
pluginsUrl: string;
plugins: any;
pages: any;
rootModules: any;
}
declare var GIT_VERSION: string;
declare var GIT_COMMITHASH: string;
declare var GIT_BRANCH: string;
export class AppConfig {
private data: IAppConfigData;
constructor(private userPreferences: UserPreferences) {
}
fromJson(data: IAppConfigData) {
this.data = data;
}
/**
* Returns locale string in language-region format (e.g. en-US)
*/
getLocale() {
return this.userPreferences.getLocale() || APP_DEFAULT_LOCALE;
}
getDefaultLocale() {
return APP_DEFAULT_LOCALE;
}
/**
* Available locales are listed from the translation folder at build time and passed in webpack config
*/
getAvailableLocales(): string[] {
return APP_AVAILABLE_LOCALES.split(",");
}
/**
* Git version information (version, commit hash and branch name)
*/
getVersionInfo() {
return {
version: GIT_VERSION,
commitHash: GIT_COMMITHASH,
branch: GIT_BRANCH
};
}
isSentryEnabled() {
if (this.data.APP_SENTRY_ENABLED === undefined) {
return false;
}
return ["true", true, "on", "1", 1].indexOf(this.data.APP_SENTRY_ENABLED) !== -1;
}
getSentryConfig() {
return {
dsn: this.data.APP_SENTRY_DSN,
appName: this.data.APP_SENTRY_APPNAME,
env: this.data.APP_SENTRY_ENV
};
}
getGoogleAnalyticsId() {
return this.data.GOOGLE_ANALYTICS_ID;
}
getHotjarId() {
return this.data.HOTJAR_ID;
}
getCmsConfig(): IConfigData {
let basePath = (__webpack_public_path__).replace(/\/$/, "");
return {
basePath,
pluginsBaseUrl: !this.data.pluginsUrl.match(/^https?:\/\/|\//) ?
basePath + "/" + this.data.pluginsUrl :
this.data.pluginsUrl,
plugins: this.data.plugins,
pages: this.data.pages,
rootModules: this.data.rootModules
};
}
}