Re-jig config accessors
We only ever used the static instance() method to get to the config object, so just make a static instance that returns the ConfigOptions directly, throwing an exception if it's not yet initialised. This way the types can all be non-optional (plus it's shorter).
This commit is contained in:
parent
6303b357ab
commit
c879090a34
4 changed files with 19 additions and 20 deletions
|
@ -114,8 +114,8 @@ export class PosthogAnalytics {
|
||||||
|
|
||||||
constructor(private readonly posthog: PostHog) {
|
constructor(private readonly posthog: PostHog) {
|
||||||
const posthogConfig: PosthogSettings = {
|
const posthogConfig: PosthogSettings = {
|
||||||
project_api_key: Config.instance.config.posthog?.api_key,
|
project_api_key: Config.get().posthog?.api_key,
|
||||||
api_host: Config.instance.config.posthog?.api_host,
|
api_host: Config.get().posthog?.api_host,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (posthogConfig.project_api_key && posthogConfig.api_host) {
|
if (posthogConfig.project_api_key && posthogConfig.api_host) {
|
||||||
|
|
|
@ -18,13 +18,15 @@ import { DEFAULT_CONFIG, ConfigOptions } from "./ConfigOptions";
|
||||||
|
|
||||||
export class Config {
|
export class Config {
|
||||||
private static internalInstance: Config;
|
private static internalInstance: Config;
|
||||||
public static get instance(): Config {
|
|
||||||
if (!this.internalInstance)
|
public static get(): ConfigOptions {
|
||||||
|
if (!this.internalInstance?.config)
|
||||||
throw new Error("Config instance read before config got initialized");
|
throw new Error("Config instance read before config got initialized");
|
||||||
return this.internalInstance;
|
return this.internalInstance.config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static init(): Promise<void> {
|
public static init(): Promise<void> {
|
||||||
if (Config?.internalInstance?.initPromise) {
|
if (Config.internalInstance?.initPromise) {
|
||||||
return Config.internalInstance.initPromise;
|
return Config.internalInstance.initPromise;
|
||||||
}
|
}
|
||||||
Config.internalInstance = new Config();
|
Config.internalInstance = new Config();
|
||||||
|
@ -39,25 +41,25 @@ export class Config {
|
||||||
|
|
||||||
// Convenience accessors
|
// Convenience accessors
|
||||||
public static defaultHomeserverUrl(): string | undefined {
|
public static defaultHomeserverUrl(): string | undefined {
|
||||||
const defaultServerConfig = Config.instance.config.default_server_config;
|
const defaultServerConfig = Config.get().default_server_config;
|
||||||
if (!defaultServerConfig) {
|
if (!defaultServerConfig) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
return defaultServerConfig["m.homeserver"]?.base_url;
|
return defaultServerConfig["m.homeserver"].base_url;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static defaultServerName(): string | undefined {
|
public static defaultServerName(): string | undefined {
|
||||||
const defaultServerConfig = Config.instance.config.default_server_config;
|
const defaultServerConfig = Config.get().default_server_config;
|
||||||
if (!defaultServerConfig) {
|
if (!defaultServerConfig) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
return defaultServerConfig["m.homeserver"]?.server_name;
|
return defaultServerConfig["m.homeserver"].server_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public config: ConfigOptions;
|
public config?: ConfigOptions;
|
||||||
private initPromise: Promise<void>;
|
private initPromise?: Promise<void>;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function downloadConfig(
|
async function downloadConfig(
|
||||||
|
|
|
@ -191,13 +191,10 @@ export class Initializer {
|
||||||
this.loadStates.sentry === LoadState.None &&
|
this.loadStates.sentry === LoadState.None &&
|
||||||
this.loadStates.config === LoadState.Loaded
|
this.loadStates.config === LoadState.Loaded
|
||||||
) {
|
) {
|
||||||
if (
|
if (Config.get().sentry?.DSN && Config.get().sentry?.environment) {
|
||||||
Config.instance.config.sentry?.DSN &&
|
|
||||||
Config.instance.config.sentry?.environment
|
|
||||||
) {
|
|
||||||
Sentry.init({
|
Sentry.init({
|
||||||
dsn: Config.instance.config.sentry?.DSN,
|
dsn: Config.get().sentry?.DSN,
|
||||||
environment: Config.instance.config.sentry?.environment,
|
environment: Config.get().sentry?.environment,
|
||||||
integrations: [
|
integrations: [
|
||||||
new Integrations.BrowserTracing({
|
new Integrations.BrowserTracing({
|
||||||
routingInstrumentation:
|
routingInstrumentation:
|
||||||
|
|
|
@ -53,7 +53,7 @@ export function useSubmitRageshake(): {
|
||||||
|
|
||||||
const submitRageshake = useCallback(
|
const submitRageshake = useCallback(
|
||||||
async (opts) => {
|
async (opts) => {
|
||||||
if (!Config.instance.config.rageshake?.submit_url) {
|
if (!Config.get().rageshake?.submit_url) {
|
||||||
throw new Error("No rageshake URL is configured");
|
throw new Error("No rageshake URL is configured");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -261,7 +261,7 @@ export function useSubmitRageshake(): {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
await fetch(Config.instance.config.rageshake?.submit_url, {
|
await fetch(Config.get().rageshake?.submit_url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
body,
|
body,
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue