From d24d5c1365c271ce4fd366b01106e3b7a9505846 Mon Sep 17 00:00:00 2001 From: Carlos Valente Date: Sat, 12 Jul 2025 12:22:36 +0200 Subject: [PATCH] refactor: freeze is view option --- apps/client/src/common/api/viewSettings.ts | 17 +++++++++--- .../view-params-editor/ViewParamsEditor.tsx | 2 -- .../src/common/models/ViewSettings.type.ts | 2 -- .../panel/settings-panel/ViewSettings.tsx | 27 ------------------- .../app-settings/quick-start/QuickStart.tsx | 22 --------------- .../quick-start/quickStart.utils.ts | 4 --- .../features/control/message/TimerPreview.tsx | 2 +- apps/server/src/api-data/db/db.validation.ts | 4 --- .../view-settings/viewSettings.parser.ts | 2 -- .../view-settings/viewSettings.router.ts | 6 ++--- .../view-settings/viewSettings.validation.ts | 2 -- apps/server/src/models/dataModel.ts | 2 -- apps/server/src/models/demoProject.ts | 2 -- apps/server/test-db/db.json | 2 -- e2e/tests/fixtures/e2e-test-db.json | 2 -- packages/types/src/api/db/db.type.ts | 1 - .../types/src/definitions/core/Views.type.ts | 2 -- 17 files changed, 17 insertions(+), 84 deletions(-) diff --git a/apps/client/src/common/api/viewSettings.ts b/apps/client/src/common/api/viewSettings.ts index 7899b58f6..9eb87505f 100644 --- a/apps/client/src/common/api/viewSettings.ts +++ b/apps/client/src/common/api/viewSettings.ts @@ -2,14 +2,23 @@ import axios from 'axios'; import type { ViewSettings } from 'ontime-types'; import { apiEntryUrl } from './constants'; -const viewSettingsPath = apiEntryUrl + '/view-settings'; -export async function getViewSettings() { +const viewSettingsPath = `${apiEntryUrl}/view-settings`; + +/** + * HTTP request to fetch view settings + * @returns + */ +export async function getViewSettings(): Promise { const res = await axios.get(viewSettingsPath); return res.data; } -export async function postViewSettings(data: ViewSettings) { +/** + * HTTP request to update view settings + * needs to update entire objects, not just a patch + */ +export async function postViewSettings(data: ViewSettings): Promise { const res = await axios.post(viewSettingsPath, data); - return res.data as ViewSettings; + return res.data; } diff --git a/apps/client/src/common/components/view-params-editor/ViewParamsEditor.tsx b/apps/client/src/common/components/view-params-editor/ViewParamsEditor.tsx index 4fb0c2711..a51e80310 100644 --- a/apps/client/src/common/components/view-params-editor/ViewParamsEditor.tsx +++ b/apps/client/src/common/components/view-params-editor/ViewParamsEditor.tsx @@ -39,8 +39,6 @@ function ViewParamsEditor({ viewOptions }: EditFormDrawerProps) { const newParamsObject = Object.fromEntries(new FormData(formEvent.currentTarget)); const newSearchParams = getURLSearchParamsFromObj(newParamsObject, viewOptions); - - console.log('New search params:', newParamsObject, newSearchParams.toString()); setSearchParams(newSearchParams); }; diff --git a/apps/client/src/common/models/ViewSettings.type.ts b/apps/client/src/common/models/ViewSettings.type.ts index 0f1016a50..4bcca29c3 100644 --- a/apps/client/src/common/models/ViewSettings.type.ts +++ b/apps/client/src/common/models/ViewSettings.type.ts @@ -2,8 +2,6 @@ import { ViewSettings } from 'ontime-types'; export const viewsSettingsPlaceholder: ViewSettings = { dangerColor: '#ED3333', - endMessage: '', - freezeEnd: false, normalColor: '#ffffffcc', overrideStyles: false, warningColor: '#FFAB33', diff --git a/apps/client/src/features/app-settings/panel/settings-panel/ViewSettings.tsx b/apps/client/src/features/app-settings/panel/settings-panel/ViewSettings.tsx index a3ddecd92..5fced34c4 100644 --- a/apps/client/src/features/app-settings/panel/settings-panel/ViewSettings.tsx +++ b/apps/client/src/features/app-settings/panel/settings-panel/ViewSettings.tsx @@ -7,7 +7,6 @@ import { maybeAxiosError } from '../../../../common/api/utils'; import Button from '../../../../common/components/buttons/Button'; import Info from '../../../../common/components/info/Info'; import { SwatchPickerRHF } from '../../../../common/components/input/colour-input/SwatchPicker'; -import Input from '../../../../common/components/input/input/Input'; import ExternalLink from '../../../../common/components/link/external-link/ExternalLink'; import Switch from '../../../../common/components/switch/Switch'; import useViewSettings from '../../../../common/hooks-query/useViewSettings'; @@ -26,7 +25,6 @@ export default function ViewSettings() { control, handleSubmit, setError, - register, reset, setValue, watch, @@ -122,31 +120,6 @@ export default function ViewSettings() { - - - - setValue('freezeEnd', value, { shouldDirty: true })} - /> - - - - - - diff --git a/apps/client/src/features/app-settings/quick-start/QuickStart.tsx b/apps/client/src/features/app-settings/quick-start/QuickStart.tsx index 9032dda80..045842a3e 100644 --- a/apps/client/src/features/app-settings/quick-start/QuickStart.tsx +++ b/apps/client/src/features/app-settings/quick-start/QuickStart.tsx @@ -126,28 +126,6 @@ export default function QuickStart({ isOpen, onClose }: QuickStartProps) { /> - - - - - setValue('viewSettings.freezeEnd', checked)} - /> - - - - - - } footerElements={ diff --git a/apps/client/src/features/app-settings/quick-start/quickStart.utils.ts b/apps/client/src/features/app-settings/quick-start/quickStart.utils.ts index 5b05c850f..a6951e4b3 100644 --- a/apps/client/src/features/app-settings/quick-start/quickStart.utils.ts +++ b/apps/client/src/features/app-settings/quick-start/quickStart.utils.ts @@ -8,8 +8,4 @@ export const quickStartDefaults: QuickStartData = { timeFormat: '24', language: 'en', }, - viewSettings: { - freezeEnd: false, - endMessage: '', - }, }; diff --git a/apps/client/src/features/control/message/TimerPreview.tsx b/apps/client/src/features/control/message/TimerPreview.tsx index bbc26a236..8f65dce8b 100644 --- a/apps/client/src/features/control/message/TimerPreview.tsx +++ b/apps/client/src/features/control/message/TimerPreview.tsx @@ -25,7 +25,7 @@ export default function TimerPreview() { if (showTimerMessage) return 'Message'; if (timerType === TimerType.None) return timerPlaceholder; if (phase === TimerPhase.Pending) return 'Standby to start'; - if (phase === TimerPhase.Overtime && data.endMessage) return 'Custom end message'; + if (phase === TimerPhase.Overtime) return 'Timer Overtime'; if (timerType === TimerType.Clock) return 'Clock'; if (countToEnd) return 'Count to End'; return 'Timer'; diff --git a/apps/server/src/api-data/db/db.validation.ts b/apps/server/src/api-data/db/db.validation.ts index d563a3fe0..6ab75c7ef 100644 --- a/apps/server/src/api-data/db/db.validation.ts +++ b/apps/server/src/api-data/db/db.validation.ts @@ -30,10 +30,6 @@ export const validateQuickProject = [ body('settings.timeFormat').optional().isIn(['12', '24']), body('settings.language').optional().isString().trim(), - // ViewSettings fields - body('viewSettings.freezeEnd').optional().isBoolean(), - body('viewSettings.endMessage').optional().isString().trim(), - requestValidationFunction, ]; diff --git a/apps/server/src/api-data/view-settings/viewSettings.parser.ts b/apps/server/src/api-data/view-settings/viewSettings.parser.ts index a022e92de..558dfdb15 100644 --- a/apps/server/src/api-data/view-settings/viewSettings.parser.ts +++ b/apps/server/src/api-data/view-settings/viewSettings.parser.ts @@ -16,8 +16,6 @@ export function parseViewSettings(data: Partial, emitError?: Erro return { dangerColor: data.viewSettings.dangerColor ?? dbModel.viewSettings.dangerColor, - endMessage: data.viewSettings.endMessage ?? dbModel.viewSettings.endMessage, - freezeEnd: data.viewSettings.freezeEnd ?? dbModel.viewSettings.freezeEnd, normalColor: data.viewSettings.normalColor ?? dbModel.viewSettings.normalColor, overrideStyles: data.viewSettings.overrideStyles ?? dbModel.viewSettings.overrideStyles, warningColor: data.viewSettings.warningColor ?? dbModel.viewSettings.warningColor, diff --git a/apps/server/src/api-data/view-settings/viewSettings.router.ts b/apps/server/src/api-data/view-settings/viewSettings.router.ts index 1a0f4f55a..8d388a5e8 100644 --- a/apps/server/src/api-data/view-settings/viewSettings.router.ts +++ b/apps/server/src/api-data/view-settings/viewSettings.router.ts @@ -18,17 +18,17 @@ router.post('/', validateViewSettings, async (req: Request, res: Response { sendRefetch(RefetchKey.ViewSettings); }); + + res.status(200).send(newData); } catch (error) { const message = getErrorMessage(error); res.status(400).send({ message }); diff --git a/apps/server/src/api-data/view-settings/viewSettings.validation.ts b/apps/server/src/api-data/view-settings/viewSettings.validation.ts index 3c42b20d3..84027cd3f 100644 --- a/apps/server/src/api-data/view-settings/viewSettings.validation.ts +++ b/apps/server/src/api-data/view-settings/viewSettings.validation.ts @@ -6,8 +6,6 @@ import { requestValidationFunction } from '../validation-utils/validationFunctio */ export const validateViewSettings = [ body('dangerColor').isString().trim().withMessage('dangerColor value must be string'), - body('endMessage').isString().trim().withMessage('endMessage value must be string'), - body('freezeEnd').isBoolean().withMessage('freezeEnd value must be boolean'), body('normalColor').isString().trim().withMessage('normalColor value must be string'), body('overrideStyles').isBoolean().withMessage('overrideStyles value must be boolean'), body('warningColor').isString().trim().withMessage('warningColor value must be string'), diff --git a/apps/server/src/models/dataModel.ts b/apps/server/src/models/dataModel.ts index 566d0dab3..26f0cfb6d 100644 --- a/apps/server/src/models/dataModel.ts +++ b/apps/server/src/models/dataModel.ts @@ -35,8 +35,6 @@ export const dbModel: DatabaseModel = { normalColor: '#ffffffcc', warningColor: '#FFAB33', dangerColor: '#ED3333', - freezeEnd: false, - endMessage: '', }, urlPresets: [], customFields: {}, diff --git a/apps/server/src/models/demoProject.ts b/apps/server/src/models/demoProject.ts index a51e21362..024a777c7 100644 --- a/apps/server/src/models/demoProject.ts +++ b/apps/server/src/models/demoProject.ts @@ -519,8 +519,6 @@ export const demoDb: DatabaseModel = { }, viewSettings: { dangerColor: '#ED3333', - endMessage: '', - freezeEnd: false, normalColor: '#ffffffcc', overrideStyles: false, warningColor: '#FFAB33', diff --git a/apps/server/test-db/db.json b/apps/server/test-db/db.json index 964cda172..7205174cf 100644 --- a/apps/server/test-db/db.json +++ b/apps/server/test-db/db.json @@ -468,8 +468,6 @@ }, "viewSettings": { "dangerColor": "#ED3333", - "endMessage": "", - "freezeEnd": false, "normalColor": "#ffffffcc", "overrideStyles": false, "warningColor": "#FFAB33" diff --git a/e2e/tests/fixtures/e2e-test-db.json b/e2e/tests/fixtures/e2e-test-db.json index 328cda61a..bd4c03224 100644 --- a/e2e/tests/fixtures/e2e-test-db.json +++ b/e2e/tests/fixtures/e2e-test-db.json @@ -485,8 +485,6 @@ }, "viewSettings": { "dangerColor": "#ED3333", - "endMessage": "", - "freezeEnd": false, "normalColor": "#ffffffcc", "overrideStyles": false, "warningColor": "#FFAB33" diff --git a/packages/types/src/api/db/db.type.ts b/packages/types/src/api/db/db.type.ts index 321ecedea..cae4cbca6 100644 --- a/packages/types/src/api/db/db.type.ts +++ b/packages/types/src/api/db/db.type.ts @@ -3,5 +3,4 @@ import { type DatabaseModel } from '../../definitions/DataModel.type.js'; export interface QuickStartData { project: Pick; settings: Pick; - viewSettings: Pick; } diff --git a/packages/types/src/definitions/core/Views.type.ts b/packages/types/src/definitions/core/Views.type.ts index 98cffec0f..452439a15 100644 --- a/packages/types/src/definitions/core/Views.type.ts +++ b/packages/types/src/definitions/core/Views.type.ts @@ -1,7 +1,5 @@ export type ViewSettings = { dangerColor: string; - endMessage: string; - freezeEnd: boolean; normalColor: string; overrideStyles: boolean; warningColor: string;