mirror of
https://github.com/stoatchat/for-legacy-web.git
synced 2026-03-09 02:05:28 +00:00
Add Redux and reducers.
Load i18n files and add dayjs.
This commit is contained in:
43
src/redux/reducers/experiments.ts
Normal file
43
src/redux/reducers/experiments.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
export type Experiments = never;
|
||||
export const AVAILABLE_EXPERIMENTS: Experiments[] = [ ];
|
||||
|
||||
export interface ExperimentOptions {
|
||||
enabled?: Experiments[]
|
||||
}
|
||||
|
||||
export type ExperimentsAction =
|
||||
| { type: undefined }
|
||||
| {
|
||||
type: "EXPERIMENTS_ENABLE";
|
||||
key: Experiments;
|
||||
}
|
||||
| {
|
||||
type: "EXPERIMENTS_DISABLE";
|
||||
key: Experiments;
|
||||
};
|
||||
|
||||
export function experiments(
|
||||
state = {} as ExperimentOptions,
|
||||
action: ExperimentsAction
|
||||
): ExperimentOptions {
|
||||
switch (action.type) {
|
||||
case "EXPERIMENTS_ENABLE":
|
||||
return {
|
||||
...state,
|
||||
enabled: [
|
||||
...(state.enabled ?? [])
|
||||
.filter(x => AVAILABLE_EXPERIMENTS.includes(x))
|
||||
.filter(v => v !== action.key),
|
||||
action.key
|
||||
]
|
||||
};
|
||||
case "EXPERIMENTS_DISABLE":
|
||||
return {
|
||||
...state,
|
||||
enabled: state.enabled?.filter(v => v !== action.key)
|
||||
.filter(x => AVAILABLE_EXPERIMENTS.includes(x))
|
||||
};
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user