From 257f2259e050d20694e67a68a90cda7f0019bc3d Mon Sep 17 00:00:00 2001 From: Ary Date: Sun, 25 Feb 2024 11:25:06 -0700 Subject: [PATCH] feat: starting to cleanup --- apps/client/src/common/api/ontimeApi.ts | 8 - .../modals/settings-modal/AliasesForm.tsx | 180 ------------------ .../modals/settings-modal/SettingsModal.tsx | 4 - .../src/classes/data-provider/DataProvider.ts | 1 + .../src/controllers/ontimeController.ts | 25 +-- apps/server/src/routes/ontimeRouter.ts | 3 - 6 files changed, 2 insertions(+), 219 deletions(-) delete mode 100644 apps/client/src/features/modals/settings-modal/AliasesForm.tsx diff --git a/apps/client/src/common/api/ontimeApi.ts b/apps/client/src/common/api/ontimeApi.ts index f430b076e..1cb1dbfd8 100644 --- a/apps/client/src/common/api/ontimeApi.ts +++ b/apps/client/src/common/api/ontimeApi.ts @@ -72,14 +72,6 @@ export async function getAliases(): Promise { return res.data; } -/** - * @description HTTP request to mutate aliases - * @return {Promise} - */ -export async function postAliases(data: Alias[]) { - return axios.post(`${ontimeURL}/aliases`, data); -} - /** * @description HTTP request to create an alias * @return {Promise} diff --git a/apps/client/src/features/modals/settings-modal/AliasesForm.tsx b/apps/client/src/features/modals/settings-modal/AliasesForm.tsx deleted file mode 100644 index ab5b92def..000000000 --- a/apps/client/src/features/modals/settings-modal/AliasesForm.tsx +++ /dev/null @@ -1,180 +0,0 @@ -import { useEffect } from 'react'; -import { useFieldArray, useForm } from 'react-hook-form'; -import { Alert, AlertDescription, AlertIcon, AlertTitle, Button, IconButton, Input, Switch } from '@chakra-ui/react'; -import { IoOpenOutline } from '@react-icons/all-files/io5/IoOpenOutline'; -import { IoRemove } from '@react-icons/all-files/io5/IoRemove'; -import { Alias } from 'ontime-types'; - -import { logAxiosError } from '../../../common/api/apiUtils'; -import { postAliases } from '../../../common/api/ontimeApi'; -import TooltipActionBtn from '../../../common/components/buttons/TooltipActionBtn'; -import useAliases from '../../../common/hooks-query/useAliases'; -import { useEmitLog } from '../../../common/stores/logger'; -import { handleLinks } from '../../../common/utils/linkUtils'; -import ModalLoader from '../modal-loader/ModalLoader'; -import { inputProps } from '../modalHelper'; -import ModalLink from '../ModalLink'; -import OntimeModalFooter from '../OntimeModalFooter'; - -import style from './SettingsModal.module.scss'; - -const aliasesDocsUrl = 'https://ontime.gitbook.io/v2/features/url-aliases'; - -// we wrap the array in an object to be simplify react-hook-form -type Aliases = { - aliases: Alias[]; -}; - -export default function AliasesForm() { - const { data, status, isFetching, refetch } = useAliases(); - const { emitError } = useEmitLog(); - const { - control, - handleSubmit, - register, - reset, - formState: { isSubmitting, isDirty, isValid }, - } = useForm({ - defaultValues: { aliases: data }, - values: { aliases: data || [] }, - resetOptions: { - keepDirtyValues: true, - }, - }); - const { fields, append, remove } = useFieldArray({ - name: 'aliases', - control, - }); - - useEffect(() => { - if (data) { - reset({ aliases: data }); - } - }, [data, reset]); - - const onSubmit = async (formData: Aliases) => { - try { - await postAliases(formData.aliases); - } catch (error) { - logAxiosError('Error saving aliases', error); - } finally { - await refetch(); - } - }; - - const onReset = () => { - reset({ aliases: data }); - }; - - const addNew = () => { - if (fields.length > 20) { - emitError('Maximum amount of aliases reached (20)'); - return; - } - append({ - enabled: false, - alias: '', - pathAndParams: '', - }); - }; - - const disableInputs = status === 'pending'; - const hasTooManyOptions = fields.length >= 20; - - if (isFetching) { - return ; - } - - console.log({ fields }); - - return ( -
-
- - -
- URL Aliases - - Custom aliases allow providing a short name for any ontime URL.
- It serves two primary purposes:
- - Providing dynamic URLs for automation or unattended screens
- Simplifying complex URLs - For more information, see the docs -
-
-
-
-
    - {fields.map((alias, index) => { - return ( -
  • - remove(index)} - aria-label='delete' - size='xs' - icon={} - colorScheme='red' - isDisabled={disableInputs} - data-testid={`field__delete_${index}`} - /> - - - handleLinks(event, alias.alias)} - tooltip='Test alias' - aria-label='Test alias' - size='xs' - variant='ontime-ghost-on-light' - icon={} - colorScheme='red' - isDisabled={disableInputs} - data-testid={`field__test_${index}`} - /> - -
  • - ); - })} -
- - - - ); -} diff --git a/apps/client/src/features/modals/settings-modal/SettingsModal.tsx b/apps/client/src/features/modals/settings-modal/SettingsModal.tsx index 7f0521473..f89ae9d2e 100644 --- a/apps/client/src/features/modals/settings-modal/SettingsModal.tsx +++ b/apps/client/src/features/modals/settings-modal/SettingsModal.tsx @@ -2,7 +2,6 @@ import { ModalBody, Tab, TabList, TabPanel, TabPanels, Tabs } from '@chakra-ui/r import ModalWrapper from '../ModalWrapper'; -import AliasesForm from './AliasesForm'; import AppSettingsModal from './AppSettings'; import CuesheetSettingsForm from './CuesheetSettingsForm'; import EditorSettings from './EditorSettings'; @@ -44,9 +43,6 @@ export default function SettingsModal(props: ModalManagerProps) { - - - diff --git a/apps/server/src/classes/data-provider/DataProvider.ts b/apps/server/src/classes/data-provider/DataProvider.ts index 55f67fabe..41a5052f6 100644 --- a/apps/server/src/classes/data-provider/DataProvider.ts +++ b/apps/server/src/classes/data-provider/DataProvider.ts @@ -71,6 +71,7 @@ export class DataProvider { return data.aliases; } + // TODO: Remove this when I change the data model static async setAliases(newData: Alias[]) { data.aliases = newData; await this.persist(); diff --git a/apps/server/src/controllers/ontimeController.ts b/apps/server/src/controllers/ontimeController.ts index 547e3ef70..01fe9c1f2 100644 --- a/apps/server/src/controllers/ontimeController.ts +++ b/apps/server/src/controllers/ontimeController.ts @@ -1,6 +1,5 @@ import { LogOrigin } from 'ontime-types'; import type { - Alias, DatabaseModel, GetInfo, HttpSettings, @@ -19,7 +18,7 @@ import { copyFile, rename, writeFile } from 'fs/promises'; import { fileHandler } from '../utils/parser.js'; import { DataProvider } from '../classes/data-provider/DataProvider.js'; -import { failEmptyObjects, failIsNotArray } from '../utils/routerUtils.js'; +import { failEmptyObjects } from '../utils/routerUtils.js'; import { runtimeService } from '../services/runtime-service/RuntimeService.js'; import { eventStore } from '../stores/EventStore.js'; import { @@ -167,28 +166,6 @@ export const getAliases = async (_req: Request, res: Response) => { res.status(200).send(aliases); }; -// Create controller for POST request to '/ontime/aliases' -// Returns ACK message -export const postAliases = async (req: Request, res: Response) => { - if (failIsNotArray(req.body, res)) { - return; - } - try { - const newAliases: Alias[] = []; - req.body.forEach((a) => { - newAliases.push({ - enabled: a.enabled, - alias: a.alias, - pathAndParams: a.pathAndParams, - }); - }); - await DataProvider.setAliases(newAliases); - res.status(200).send(newAliases); - } catch (error) { - res.status(400).send({ message: String(error) }); - } -}; - // Create controller for POST request to '/ontime/aliases' // Returns ACK message export const postAlias = async (req: Request, res: Response) => { diff --git a/apps/server/src/routes/ontimeRouter.ts b/apps/server/src/routes/ontimeRouter.ts index cc3a7e58b..a76197e7d 100644 --- a/apps/server/src/routes/ontimeRouter.ts +++ b/apps/server/src/routes/ontimeRouter.ts @@ -87,9 +87,6 @@ router.post('/views', viewValidator, postViewSettings); // create route between controller and '/ontime/aliases' endpoint router.get('/aliases', getAliases); -// // create route between controller and '/ontime/aliases' endpoint -// router.post('/aliases', validateAliases, postAliases); - // create route between controller and '/ontime/aliases' endpoint router.post('/aliases', validateCreateAlias, postAlias);