diff --git a/frontend/__tests__/root/config-metadata.spec.ts b/frontend/__tests__/root/config-metadata.spec.ts index d8db8f348d75..ac227685de5d 100644 --- a/frontend/__tests__/root/config-metadata.spec.ts +++ b/frontend/__tests__/root/config-metadata.spec.ts @@ -163,6 +163,15 @@ describe("ConfigMeta", () => { { value: false, given: { tapeMode: "word" } }, { value: true, given: { tapeMode: "word" }, fail: true }, ], + monkey: [{ value: false, given: { liveSpeedStyle: "text" } }], + liveSpeedStyle: [ + { value: "mini", given: { monkey: true } }, + { value: "text", given: { monkey: true } }, + ], + liveAccStyle: [ + { value: "mini", given: { monkey: true } }, + { value: "text", given: { monkey: true } }, + ], }; it.for( @@ -244,6 +253,45 @@ describe("ConfigMeta", () => { expected: { freedomMode: false, stopOnError: "off" }, }, ], + monkey: [ + { + value: false, + given: { liveSpeedStyle: "text", liveAccStyle: "text" }, + expected: { + liveSpeedStyle: "text", + liveAccStyle: "text", + }, + }, + { + value: true, + given: { liveSpeedStyle: "text", liveAccStyle: "text" }, + expected: { liveSpeedStyle: "mini", liveAccStyle: "mini" }, + }, + ], + liveSpeedStyle: [ + { + value: "mini", + given: { monkey: true }, + expected: { monkey: true }, + }, + { + value: "text", + given: { monkey: true }, + expected: { monkey: false }, + }, + ], + liveAccStyle: [ + { + value: "mini", + given: { monkey: true }, + expected: { monkey: true }, + }, + { + value: "text", + given: { monkey: true }, + expected: { monkey: false }, + }, + ], tapeMode: [ { value: "off", diff --git a/frontend/__tests__/root/config.spec.ts b/frontend/__tests__/root/config.spec.ts index d8c881e5588f..40e3ced07ee2 100644 --- a/frontend/__tests__/root/config.spec.ts +++ b/frontend/__tests__/root/config.spec.ts @@ -109,6 +109,50 @@ describe("Config", () => { expect(Config.setConfig("showAllLines", true)).toBe(false); }); + it("disables live text stats when enabling monkey", () => { + //GIVEN + replaceConfig({ + liveSpeedStyle: "text", + liveAccStyle: "text", + monkey: false, + }); + + //WHEN / THEN + expect(Config.setConfig("monkey", true)).toBe(true); + expect(getConfig()).toMatchObject({ + monkey: true, + liveSpeedStyle: "mini", + liveAccStyle: "mini", + }); + expect(notificationAddMock).not.toHaveBeenCalled(); + }); + + it("disables monkey when enabling live speed text", () => { + //GIVEN + replaceConfig({ monkey: true, liveSpeedStyle: "off" }); + + //WHEN / THEN + expect(Config.setConfig("liveSpeedStyle", "text")).toBe(true); + expect(getConfig()).toMatchObject({ + monkey: false, + liveSpeedStyle: "text", + }); + expect(notificationAddMock).not.toHaveBeenCalled(); + }); + + it("disables monkey when enabling live accuracy text", () => { + //GIVEN + replaceConfig({ monkey: true, liveAccStyle: "off" }); + + //WHEN / THEN + expect(Config.setConfig("liveAccStyle", "text")).toBe(true); + expect(getConfig()).toMatchObject({ + monkey: false, + liveAccStyle: "text", + }); + expect(notificationAddMock).not.toHaveBeenCalled(); + }); + it("should use overrideValue", () => { //WHEN Config.setConfig("customLayoutfluid", ["3l", "ABNT2", "3l"]); diff --git a/frontend/src/ts/config/metadata.ts b/frontend/src/ts/config/metadata.ts index 5f4042a85497..dc4815ae5b3f 100644 --- a/frontend/src/ts/config/metadata.ts +++ b/frontend/src/ts/config/metadata.ts @@ -620,6 +620,14 @@ export const configMetadata: ConfigMetadataObject = { displayString: "live speed style", changeRequiresRestart: false, group: "appearance", + overrideConfig: ({ value }) => { + if (value === "text") { + return { + monkey: false, + }; + } + return {}; + }, }, liveAccStyle: { key: "liveAccStyle", @@ -627,6 +635,14 @@ export const configMetadata: ConfigMetadataObject = { displayString: "live accuracy style", changeRequiresRestart: false, group: "appearance", + overrideConfig: ({ value }) => { + if (value === "text") { + return { + monkey: false, + }; + } + return {}; + }, }, liveBurstStyle: { key: "liveBurstStyle", @@ -1005,6 +1021,21 @@ export const configMetadata: ConfigMetadataObject = { displayString: "monkey", changeRequiresRestart: false, group: "hidden", + overrideConfig: ({ value, currentConfig }) => { + if (value) { + return { + liveSpeedStyle: + currentConfig.liveSpeedStyle === "text" + ? "mini" + : currentConfig.liveSpeedStyle, + liveAccStyle: + currentConfig.liveAccStyle === "text" + ? "mini" + : currentConfig.liveAccStyle, + }; + } + return {}; + }, }, monkeyPowerLevel: { key: "monkeyPowerLevel",