mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-21 09:40:44 +00:00
Make client config loading worker-safe
This commit is contained in:
@@ -39,12 +39,18 @@ export async function getServerConfigFromClient(): Promise<ServerConfig> {
|
||||
return cachedSC;
|
||||
}
|
||||
|
||||
const bootstrapGameEnv = window.BOOTSTRAP_CONFIG?.gameEnv;
|
||||
if (!bootstrapGameEnv) {
|
||||
throw new Error("Missing bootstrap server config");
|
||||
const bootstrapGameEnv =
|
||||
typeof window !== "undefined"
|
||||
? window.BOOTSTRAP_CONFIG?.gameEnv
|
||||
: undefined;
|
||||
const bundledGameEnv =
|
||||
typeof process !== "undefined" ? process.env?.GAME_ENV : undefined;
|
||||
const gameEnv = bootstrapGameEnv ?? bundledGameEnv;
|
||||
if (!gameEnv) {
|
||||
throw new Error("Missing client server config");
|
||||
}
|
||||
|
||||
cachedSC = getServerConfig(bootstrapGameEnv);
|
||||
cachedSC = getServerConfig(gameEnv);
|
||||
return cachedSC;
|
||||
}
|
||||
export function getServerConfigFromServer(): ServerConfig {
|
||||
|
||||
@@ -6,9 +6,12 @@ import {
|
||||
} from "../../../src/core/configuration/ConfigLoader";
|
||||
|
||||
describe("ConfigLoader", () => {
|
||||
const originalGameEnv = process.env.GAME_ENV;
|
||||
|
||||
beforeEach(() => {
|
||||
vi.restoreAllMocks();
|
||||
window.BOOTSTRAP_CONFIG = undefined;
|
||||
process.env.GAME_ENV = originalGameEnv;
|
||||
clearCachedServerConfig();
|
||||
});
|
||||
|
||||
@@ -21,4 +24,12 @@ describe("ConfigLoader", () => {
|
||||
expect(config.env()).toBe(GameEnv.Prod);
|
||||
expect(fetchSpy).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("falls back to bundled env when bootstrap config is unavailable", async () => {
|
||||
process.env.GAME_ENV = "prod";
|
||||
|
||||
const config = await getServerConfigFromClient();
|
||||
|
||||
expect(config.env()).toBe(GameEnv.Prod);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user