import { useApi } from './useApi'; import { useLoader } from '../context/loaders/useLoader'; import { useToast } from '../context/toasts/useToast'; export function useListMutations(boardId: number, onUpdate: () => void) { const { createList, updateList, deleteList } = useApi(); const { withLoader } = useLoader(); const { addNotification } = useToast(); const createNewList = async (name: string, pos: number) => { try { const data = await withLoader(() => createList(boardId, { name, pos }), 'Creating list...'); onUpdate(); addNotification({ type: 'success', title: 'List Created', message: `List "${data.name}" created successfully.`, duration: 3000, }); return data; } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Failed to create list'; addNotification({ type: 'error', title: 'Error Creating List', message: errorMessage, duration: 5000, }); throw err; } }; const updateExistingList = async (listId: number, data: { name: string; pos: number }) => { try { const updated = await withLoader( () => updateList(listId, { ...data, closed: false }), 'Updating list...' ); onUpdate(); // Refresh board data after update addNotification({ type: 'success', title: 'List Updated', message: `List "${updated.name}" updated successfully.`, duration: 3000, }); return updated; } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Failed to update list'; addNotification({ type: 'error', title: 'Error Updating List', message: errorMessage, duration: 5000, }); throw err; } }; const removeList = async (listId: number) => { try { await withLoader(() => deleteList(listId), 'Deleting list...'); addNotification({ type: 'success', title: 'List Deleted', message: 'List deleted successfully.', duration: 3000, }); onUpdate(); // Refresh board data after delete } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Failed to delete list'; addNotification({ type: 'error', title: 'Error Deleting List', message: errorMessage, duration: 5000, }); throw err; } }; return { createList: createNewList, updateList: updateExistingList, deleteList: removeList, }; }