fix(server): make system config core singleton (#4392)

* make system config core singleton

* refactor

* fix tests

* chore: fix tests

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
This commit is contained in:
Daniel Dietzler 2023-10-09 02:51:03 +02:00 committed by GitHub
parent 66ccf298ba
commit 0243570c0b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 33 additions and 19 deletions

View file

@ -134,7 +134,7 @@ export enum FeatureFlag {
export type FeatureFlags = Record<FeatureFlag, boolean>;
const singleton = new Subject<SystemConfig>();
let instance: SystemConfigCore | null;
@Injectable()
export class SystemConfigCore {
@ -142,9 +142,20 @@ export class SystemConfigCore {
private validators: SystemConfigValidator[] = [];
private configCache: SystemConfig | null = null;
public config$ = singleton;
public config$ = new Subject<SystemConfig>();
constructor(private repository: ISystemConfigRepository) {}
private constructor(private repository: ISystemConfigRepository) {}
static create(repository: ISystemConfigRepository) {
if (!instance) {
instance = new SystemConfigCore(repository);
}
return instance;
}
static reset() {
instance = null;
}
async requireFeature(feature: FeatureFlag) {
const hasFeature = await this.hasFeature(feature);