mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-12-29 03:20:46 +08:00
wip
This commit is contained in:
parent
122178eac9
commit
197e15d6b6
3 changed files with 67 additions and 46 deletions
|
|
@ -88,55 +88,55 @@ function isConfigChangeBlocked(): boolean {
|
|||
return false;
|
||||
}
|
||||
|
||||
export function batchSetConfig(
|
||||
keyValues: Partial<Config>,
|
||||
nosave: boolean = false,
|
||||
): Partial<Record<keyof Config, boolean>> {
|
||||
let ret: Partial<Record<keyof Config, boolean>> = {};
|
||||
for (const key of typedKeys(keyValues)) {
|
||||
ret[key] = setConfig(key, keyValues[key] as Config[keyof Config], {
|
||||
nosave: true,
|
||||
batched: true,
|
||||
});
|
||||
//@ts-expect-error this is fine
|
||||
configToSend[key] = config[key];
|
||||
}
|
||||
// export function batchSetConfig(
|
||||
// keyValues: Partial<Config>,
|
||||
// nosave: boolean = false,
|
||||
// ): Partial<Record<keyof Config, boolean>> {
|
||||
// let ret: Partial<Record<keyof Config, boolean>> = {};
|
||||
// for (const key of typedKeys(keyValues)) {
|
||||
// ret[key] = setConfig(key, keyValues[key] as Config[keyof Config], {
|
||||
// nosave: true,
|
||||
// batched: true,
|
||||
// });
|
||||
// //@ts-expect-error this is fine
|
||||
// configToSend[key] = config[key];
|
||||
// }
|
||||
|
||||
const restartRequired = typedKeys(keyValues).some((key) => {
|
||||
const metadata = configMetadata[key];
|
||||
return metadata.changeRequiresRestart;
|
||||
});
|
||||
// const restartRequired = typedKeys(keyValues).some((key) => {
|
||||
// const metadata = configMetadata[key];
|
||||
// return metadata.changeRequiresRestart;
|
||||
// });
|
||||
|
||||
const triggerResizeNeeded = typedKeys(keyValues).some((key) => {
|
||||
const metadata = configMetadata[key];
|
||||
return metadata.triggerResize;
|
||||
});
|
||||
// const triggerResizeNeeded = typedKeys(keyValues).some((key) => {
|
||||
// const metadata = configMetadata[key];
|
||||
// return metadata.triggerResize;
|
||||
// });
|
||||
|
||||
if (triggerResizeNeeded) {
|
||||
triggerResize();
|
||||
}
|
||||
// if (triggerResizeNeeded) {
|
||||
// triggerResize();
|
||||
// }
|
||||
|
||||
if (!nosave) {
|
||||
configLS.set(config);
|
||||
saveToDatabase();
|
||||
}
|
||||
// if (!nosave) {
|
||||
// configLS.set(config);
|
||||
// saveToDatabase();
|
||||
// }
|
||||
|
||||
ConfigEvent.dispatch({
|
||||
key: "batchConfigApplied",
|
||||
nosave,
|
||||
fullConfig: config,
|
||||
restartRequired,
|
||||
});
|
||||
// ConfigEvent.dispatch({
|
||||
// key: "batchConfigApplied",
|
||||
// nosave,
|
||||
// fullConfig: config,
|
||||
// restartRequired,
|
||||
// });
|
||||
|
||||
return ret;
|
||||
}
|
||||
// return ret;
|
||||
// }
|
||||
|
||||
export function setConfig<T extends keyof Config>(
|
||||
key: T,
|
||||
value: Config[T],
|
||||
options?: {
|
||||
nosave?: boolean;
|
||||
batched?: boolean;
|
||||
noevent?: boolean;
|
||||
},
|
||||
): boolean {
|
||||
const metadata = configMetadata[key] as ConfigMetadataObject[T];
|
||||
|
|
@ -225,7 +225,8 @@ export function setConfig<T extends keyof Config>(
|
|||
|
||||
config[key] = value;
|
||||
if (!options?.nosave) saveToLocalStorage(key, options?.nosave);
|
||||
if (!options?.batched) {
|
||||
|
||||
if (!options?.noevent) {
|
||||
// @ts-expect-error i can't figure this out
|
||||
ConfigEvent.dispatch({
|
||||
key: key,
|
||||
|
|
@ -233,11 +234,12 @@ export function setConfig<T extends keyof Config>(
|
|||
nosave: options?.nosave ?? false,
|
||||
previousValue: previousValue as Config[T],
|
||||
});
|
||||
|
||||
if (metadata.triggerResize && !options?.nosave) {
|
||||
triggerResize();
|
||||
}
|
||||
}
|
||||
|
||||
if (metadata.triggerResize && !options?.nosave) {
|
||||
triggerResize();
|
||||
}
|
||||
|
||||
metadata.afterSet?.({
|
||||
nosave: options?.nosave ?? false,
|
||||
currentConfig: config,
|
||||
|
|
@ -345,7 +347,7 @@ export async function applyConfig(
|
|||
|
||||
const set = setConfig(configKey, configValue, {
|
||||
nosave: true,
|
||||
batched: true,
|
||||
noevent: true,
|
||||
});
|
||||
|
||||
if (!set) {
|
||||
|
|
@ -357,6 +359,8 @@ export async function applyConfig(
|
|||
saveToLocalStorage(key);
|
||||
}
|
||||
|
||||
ConfigEvent.dispatch({ key: "configApplied", fullConfig: config });
|
||||
|
||||
ConfigEvent.dispatch({ key: "fullConfigChangeFinished" });
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,12 +4,11 @@ export type ConfigEventKey =
|
|||
| keyof Config
|
||||
| "fullConfigChange"
|
||||
| "fullConfigChangeFinished"
|
||||
| "batchConfigApplied";
|
||||
| "configApplied";
|
||||
|
||||
type SubscribeParams = {
|
||||
nosave?: boolean;
|
||||
fullConfig?: Config;
|
||||
restartRequired?: boolean;
|
||||
} & {
|
||||
[K in ConfigEventKey]?: K extends keyof Config
|
||||
? { key: K; newValue: Config[K]; previousValue: Config[K] }
|
||||
|
|
@ -25,7 +24,7 @@ export function subscribe(fn: SubscribeFunction): void {
|
|||
}
|
||||
|
||||
export function dispatch(options: SubscribeParams): void {
|
||||
console.log("displatching config event", options);
|
||||
console.log("dispatching config event", options);
|
||||
subscribers.forEach((fn) => {
|
||||
try {
|
||||
fn(options);
|
||||
|
|
|
|||
|
|
@ -2033,6 +2033,24 @@ $("#wordsWrapper").on("click", () => {
|
|||
});
|
||||
|
||||
ConfigEvent.subscribe(({ key, newValue }) => {
|
||||
if (key === "configApplied") {
|
||||
$(
|
||||
"#caret, #paceCaret, #liveStatsMini, #typingTest, #wordsInput, #compositionDisplay",
|
||||
).css("fontSize", Config.fontSize + "rem");
|
||||
updateWordWrapperClasses();
|
||||
updateLiveStatsOpacity(Config.timerOpacity);
|
||||
updateLiveStatsColor(Config.timerColor);
|
||||
if (!Config.showOutOfFocusWarning) OutOfFocus.hide();
|
||||
if (Config.compositionDisplay === "below") {
|
||||
CompositionDisplay.update(" ");
|
||||
CompositionDisplay.show();
|
||||
} else {
|
||||
CompositionDisplay.hide();
|
||||
}
|
||||
flipColors(Config.flipTestColors);
|
||||
colorful(Config.colorfulMode);
|
||||
}
|
||||
|
||||
if (key === "quickRestart") {
|
||||
if (newValue === "off") {
|
||||
$(".pageTest #restartTestButton").removeClass("hidden");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue