mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-21 23:19:09 +00:00
feat: deletion
This commit is contained in:
@@ -88,6 +88,14 @@ export async function updateAliases(data: Partial<Alias>) {
|
||||
return axios.put(`${ontimeURL}/aliases`, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description HTTP request to delete alias
|
||||
* @return {Promise}
|
||||
*/
|
||||
export async function deleteAlias(alias: string) {
|
||||
return axios.delete(`${ontimeURL}/aliases/${alias}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description HTTP request to retrieve user fields
|
||||
* @return {Promise}
|
||||
|
||||
@@ -2,7 +2,7 @@ import { useCallback, useMemo, useState } from 'react';
|
||||
import { IconButton, Menu, MenuButton, MenuItem, MenuList, Switch } from '@chakra-ui/react';
|
||||
import { IoEllipsisHorizontal } from '@react-icons/all-files/io5/IoEllipsisHorizontal';
|
||||
|
||||
import { updateAliases } from '../../../../common/api/ontimeApi';
|
||||
import { deleteAlias, updateAliases } from '../../../../common/api/ontimeApi';
|
||||
|
||||
import UrlAliasForm, { UrlAliasFormValues } from './UrlAliasForm';
|
||||
|
||||
@@ -43,6 +43,11 @@ export default function UrlAliasListItem({ alias, enabled, pathAndParams, onRefe
|
||||
[onRefetch],
|
||||
);
|
||||
|
||||
const handleDelete = useCallback(async () => {
|
||||
await deleteAlias(alias);
|
||||
await onRefetch();
|
||||
}, [alias, onRefetch]);
|
||||
|
||||
const handleRenderAliases = useMemo(() => {
|
||||
if (!isEditing) {
|
||||
return (
|
||||
@@ -65,7 +70,7 @@ export default function UrlAliasListItem({ alias, enabled, pathAndParams, onRefe
|
||||
<Switch variant='ontime-on-light' isChecked={enabled} onChange={handleToggle} />
|
||||
</td>
|
||||
<td>
|
||||
<ActionMenu onChangeEditMode={handleToggleEditMode} />
|
||||
<ActionMenu onDelete={handleDelete} onChangeEditMode={handleToggleEditMode} />
|
||||
</td>
|
||||
</>
|
||||
);
|
||||
@@ -83,21 +88,16 @@ export default function UrlAliasListItem({ alias, enabled, pathAndParams, onRefe
|
||||
</td>
|
||||
);
|
||||
}
|
||||
}, [alias, enabled, handleSubmitUpdate, handleToggle, handleToggleEditMode, isEditing, pathAndParams]);
|
||||
}, [alias, enabled, handleDelete, handleSubmitUpdate, handleToggle, handleToggleEditMode, isEditing, pathAndParams]);
|
||||
|
||||
return <tr key={alias}>{handleRenderAliases}</tr>;
|
||||
}
|
||||
|
||||
function ActionMenu({ onChangeEditMode }: { onChangeEditMode: () => void }) {
|
||||
function ActionMenu({ onChangeEditMode, onDelete }: { onChangeEditMode: () => void; onDelete: () => Promise<void> }) {
|
||||
const handleEdit = () => {
|
||||
onChangeEditMode();
|
||||
};
|
||||
|
||||
const handleDelete = async () => {
|
||||
// await deleteProject();
|
||||
// await onRefetch();
|
||||
};
|
||||
|
||||
return (
|
||||
<Menu variant='ontime-on-dark' size='sm'>
|
||||
<MenuButton
|
||||
@@ -109,7 +109,7 @@ function ActionMenu({ onChangeEditMode }: { onChangeEditMode: () => void }) {
|
||||
/>
|
||||
<MenuList>
|
||||
<MenuItem onClick={handleEdit}>Edit</MenuItem>
|
||||
<MenuItem onClick={handleDelete}>Delete</MenuItem>
|
||||
<MenuItem onClick={onDelete}>Delete</MenuItem>
|
||||
</MenuList>
|
||||
</Menu>
|
||||
);
|
||||
|
||||
@@ -217,6 +217,30 @@ export const updateAliases = async (req: Request, res: Response) => {
|
||||
}
|
||||
};
|
||||
|
||||
// Delete controller for DELETE request to '/ontime/aliases/:alias'
|
||||
// Returns ACK message
|
||||
export const deleteAlias = async (req: Request, res: Response) => {
|
||||
try {
|
||||
const alias = req.params.alias;
|
||||
|
||||
const aliases = DataProvider.getAliases();
|
||||
|
||||
const index = aliases.findIndex((a) => a.alias === alias);
|
||||
|
||||
if (index === -1) {
|
||||
return res.status(404).send({ message: `Alias ${alias} not found` });
|
||||
}
|
||||
|
||||
aliases.splice(index, 1);
|
||||
|
||||
await DataProvider.setAliases(aliases);
|
||||
|
||||
res.status(200).send(aliases);
|
||||
} catch (error) {
|
||||
res.status(400).send({ message: String(error) });
|
||||
}
|
||||
};
|
||||
|
||||
// Create controller for GET request to '/ontime/userfields'
|
||||
// Returns -
|
||||
export const getUserFields = async (_req: Request, res: Response) => {
|
||||
|
||||
@@ -33,6 +33,7 @@ import {
|
||||
getAuthentication,
|
||||
getClientSecrect as getClientSecret,
|
||||
updateAliases,
|
||||
deleteAlias,
|
||||
} from '../controllers/ontimeController.js';
|
||||
|
||||
import {
|
||||
@@ -92,6 +93,9 @@ router.post('/aliases', validateAliases, postAliases);
|
||||
// create route between controller and /ontime/aliases' endpoint
|
||||
router.put('/aliases', validateUpdateAlises, updateAliases);
|
||||
|
||||
// create route between controller and '/ontime/aliases' endpoint
|
||||
router.delete('/aliases/:alias', deleteAlias);
|
||||
|
||||
// create route between controller and '/ontime/aliases' endpoint
|
||||
router.get('/userfields', getUserFields);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user