diff --git a/client/src/components/Dialogs/Category/DeleteCategoryDialog.js b/client/src/components/Dialogs/Category/DeleteCategoryDialog.js index a50970f..66f26e3 100644 --- a/client/src/components/Dialogs/Category/DeleteCategoryDialog.js +++ b/client/src/components/Dialogs/Category/DeleteCategoryDialog.js @@ -6,6 +6,7 @@ import { useParams } from 'react-router-dom' import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@material-ui/core' import { useMutation } from '@apollo/react-hooks' +import GET_TODOS from '../../../apollo/queries/todos/todos' import GET_CATEGORIES from '../../../apollo/queries/categories/categories' import DELETE_CATEGORY from '../../../apollo/mutations/categories/deleteCategoty' @@ -21,6 +22,16 @@ const DeleteCategoryDialog = ({ isOpenDialog, handleCloseDialog }) => { query: GET_CATEGORIES, data: { categories: categories.filter(category => category.id !== deleteCategory.id) } }) + + try { + const { todos } = cache.readQuery({ query: GET_TODOS }) + cache.writeQuery({ + query: GET_TODOS, + data: { todos: todos.filter(todo => todo.category.id !== deleteCategory.id) } + }) + } catch { + return null + } } }) diff --git a/server/resolvers/categoryResolvers.js b/server/resolvers/categoryResolvers.js index 41a67a2..95d15b5 100644 --- a/server/resolvers/categoryResolvers.js +++ b/server/resolvers/categoryResolvers.js @@ -16,6 +16,8 @@ const categoryResolvers = { }, deleteCategory: async (_, { id }) => { const deletedCategory = await Category.findByIdAndRemove(id) + await Todo.deleteMany({ categoryId: id }) + return deletedCategory }, updateCategory: (_, { id, title }) => Category.findByIdAndUpdate(id, { $set: { title, updatedAt: new Date().toISOString() } }, { new: true })