From c8fd68a6011d852da8c6ffd1b8a3a6b7e323cde2 Mon Sep 17 00:00:00 2001 From: Miodec Date: Wed, 15 Jan 2025 00:04:22 +0100 Subject: [PATCH] refactor: config group definitions - moved group definitionsg to the shared pacakge - made sure typescript will throw errors if a config is left without a group - removed the 'missing group' check because its not possible anymore --- frontend/src/ts/modals/edit-preset.ts | 201 ++++------------------ packages/contracts/src/schemas/configs.ts | 114 +++++++++++- packages/contracts/src/schemas/presets.ts | 32 ++-- 3 files changed, 158 insertions(+), 189 deletions(-) diff --git a/frontend/src/ts/modals/edit-preset.ts b/frontend/src/ts/modals/edit-preset.ts index b253412d9..54f26807a 100644 --- a/frontend/src/ts/modals/edit-preset.ts +++ b/frontend/src/ts/modals/edit-preset.ts @@ -7,24 +7,23 @@ import * as Notifications from "../elements/notifications"; import * as ConnectionState from "../states/connection"; import AnimatedModal from "../utils/animated-modal"; import { - ActiveSettingGroups, - ActiveSettingGroupsSchema, - PresetSettingGroup, - PresetSettingGroupSchema, PresetType, PresetTypeSchema, } from "@monkeytype/contracts/schemas/presets"; import { getPreset } from "../controllers/preset-controller"; import defaultConfig from "../constants/default-config"; -import { Config as ConfigType } from "@monkeytype/contracts/schemas/configs"; +import { + ConfigGroupName, + ConfigGroupNameSchema, + ConfigGroupsLiteral, + ConfigKey, + Config as ConfigType, +} from "@monkeytype/contracts/schemas/configs"; const state = { presetType: "full" as PresetType, checkboxes: new Map( - PresetSettingGroupSchema.options.map((key: PresetSettingGroup) => [ - key, - true, - ]) + ConfigGroupNameSchema.options.map((key: ConfigGroupName) => [key, true]) ), setPresetToCurrent: false, }; @@ -122,19 +121,17 @@ async function initializeEditState(id: string): Promise { } function addCheckboxListeners(): void { - PresetSettingGroupSchema.options.forEach( - (settingGroup: PresetSettingGroup) => { - const checkboxInput = $( - `#editPresetModal .modal .checkboxList .checkboxTitlePair[data-id="${settingGroup}"] input` + ConfigGroupNameSchema.options.forEach((settingGroup: ConfigGroupName) => { + const checkboxInput = $( + `#editPresetModal .modal .checkboxList .checkboxTitlePair[data-id="${settingGroup}"] input` + ); + checkboxInput.on("change", (e) => { + state.checkboxes.set( + settingGroup, + checkboxInput.prop("checked") as boolean ); - checkboxInput.on("change", (e) => { - state.checkboxes.set( - settingGroup, - checkboxInput.prop("checked") as boolean - ); - }); - } - ); + }); + }); const presetToCurrentCheckbox = $( `#editPresetModal .modal .changePresetToCurrentCheckbox input` @@ -154,7 +151,7 @@ function addCheckBoxes(): void { const settingGroupListEl = $( "#editPresetModal .modal .inputs .checkboxList" ).empty(); - PresetSettingGroupSchema.options.forEach((currSettingGroup) => { + ConfigGroupNameSchema.options.forEach((currSettingGroup) => { const currSettingGroupTitle = camelCaseToSpaced(currSettingGroup); const settingGroupCheckbox: string = `