From dabb29f0a58787ad68cd928fe4aebe262febcc2f Mon Sep 17 00:00:00 2001 From: Jonathan ARNAULT Date: Mon, 12 Aug 2024 15:12:04 +0200 Subject: [PATCH 1/2] Feat(tasks): Update contact last seen when creating a task --- src/tasks/AddTask.tsx | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/tasks/AddTask.tsx b/src/tasks/AddTask.tsx index b815214..6c01db8 100644 --- a/src/tasks/AddTask.tsx +++ b/src/tasks/AddTask.tsx @@ -10,7 +10,6 @@ import { Stack, Tooltip, } from '@mui/material'; -import * as React from 'react'; import { useState } from 'react'; import { AutocompleteInput, @@ -24,13 +23,15 @@ import { TextInput, Toolbar, required, + useDataProvider, useGetIdentity, + useNotify, useRecordContext, } from 'react-admin'; -import { useConfigurationContext } from '../root/ConfigurationContext'; -import { DialogCloseButton } from '../misc/DialogCloseButton'; -import { contactInputText, contactOptionText } from '../misc/ContactOption'; import { Link } from 'react-router-dom'; +import { contactInputText, contactOptionText } from '../misc/ContactOption'; +import { DialogCloseButton } from '../misc/DialogCloseButton'; +import { useConfigurationContext } from '../root/ConfigurationContext'; export const AddTask = ({ selectContact, @@ -40,6 +41,8 @@ export const AddTask = ({ display?: 'chip' | 'icon'; }) => { const { identity } = useGetIdentity(); + const dataProvider = useDataProvider(); + const notify = useNotify(); const { taskTypes } = useConfigurationContext(); const contact = useRecordContext(); const [open, setOpen] = useState(false); @@ -47,6 +50,21 @@ export const AddTask = ({ setOpen(true); }; + const handleSuccess = async (data: any) => { + setOpen(false); + const contact = await dataProvider.getOne('contacts', { + id: data.contact_id, + }); + if (!contact.data) return; + + dataProvider.update('contacts', { + id: contact.data.id, + data: { last_seen: new Date().toISOString() }, + previousData: contact.data, + }); + notify('Note added'); + }; + if (!identity) return null; return ( @@ -96,7 +114,7 @@ export const AddTask = ({ due_date: new Date(data.due_date).toISOString(), }; }} - mutationOptions={{ onSuccess: () => setOpen(false) }} + mutationOptions={{ onSuccess: handleSuccess }} > Date: Tue, 13 Aug 2024 08:35:22 +0200 Subject: [PATCH 2/2] Fix(tasks): wait for update before displaying notification --- src/tasks/AddTask.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/tasks/AddTask.tsx b/src/tasks/AddTask.tsx index 6c01db8..c789719 100644 --- a/src/tasks/AddTask.tsx +++ b/src/tasks/AddTask.tsx @@ -27,6 +27,7 @@ import { useGetIdentity, useNotify, useRecordContext, + useUpdate, } from 'react-admin'; import { Link } from 'react-router-dom'; import { contactInputText, contactOptionText } from '../misc/ContactOption'; @@ -42,6 +43,7 @@ export const AddTask = ({ }) => { const { identity } = useGetIdentity(); const dataProvider = useDataProvider(); + const [update] = useUpdate(); const notify = useNotify(); const { taskTypes } = useConfigurationContext(); const contact = useRecordContext(); @@ -57,11 +59,12 @@ export const AddTask = ({ }); if (!contact.data) return; - dataProvider.update('contacts', { + await update('contacts', { id: contact.data.id, data: { last_seen: new Date().toISOString() }, previousData: contact.data, }); + notify('Note added'); };