-
-
Notifications
You must be signed in to change notification settings - Fork 13
/
runtimeConfig.ts
96 lines (84 loc) · 2.39 KB
/
runtimeConfig.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
interface RuntimeConfigItems {
baseUrl: string;
captchaRequired: boolean;
captchaSiteKey: string;
offline: boolean;
emailServicesEnabled: boolean;
showCertExpiration: boolean;
}
declare global {
interface Window {
runtimeConfig: RuntimeConfigItems;
release: string;
}
}
const defaultConfig: RuntimeConfigItems = {
baseUrl: "http://localhost:5000",
captchaRequired: true,
captchaSiteKey: "6Le6BL0UAAAAAMjSs1nINeB5hqDZ4m3mMg3k67x3",
offline: false,
emailServicesEnabled: true,
showCertExpiration: true,
};
export class RuntimeConfig {
private static _instance: RuntimeConfig;
private constructor() {
if (
!window.hasOwnProperty("runtimeConfig") ||
typeof window.runtimeConfig === "undefined"
) {
window.runtimeConfig = defaultConfig;
}
}
public static getInstance(): RuntimeConfig {
if (!this._instance) {
this._instance = new RuntimeConfig();
}
return this._instance;
}
public baseUrl(): string {
if (window.runtimeConfig.hasOwnProperty("useConnectionBaseUrlForApi")) {
return `${window.location.protocol}//${window.location.host}`;
}
return defaultConfig.baseUrl;
}
public appRelease(): string {
if (window.hasOwnProperty("release")) {
return window.release;
}
return "v0.0.0-default.0";
}
public captchaSiteKey(): string {
if (window.runtimeConfig.hasOwnProperty("captchaSiteKey")) {
return window.runtimeConfig.captchaSiteKey;
}
return defaultConfig.captchaSiteKey;
}
public captchaRequired(): boolean {
if (window.runtimeConfig.hasOwnProperty("captchaRequired")) {
return window.runtimeConfig.captchaRequired;
}
return defaultConfig.captchaRequired;
}
public emailServicesEnabled(): boolean {
if (RuntimeConfig._instance.isOffline()) {
return false;
}
if (window.runtimeConfig.hasOwnProperty("emailServicesEnabled")) {
return window.runtimeConfig.emailServicesEnabled;
}
return defaultConfig.emailServicesEnabled;
}
public isOffline(): boolean {
if (window.runtimeConfig.hasOwnProperty("offline")) {
return window.runtimeConfig.offline;
}
return defaultConfig.offline;
}
public showCertExpiration(): boolean {
if (window.runtimeConfig.hasOwnProperty("showCertExpiration")) {
return window.runtimeConfig.showCertExpiration;
}
return defaultConfig.showCertExpiration;
}
}