1- import { useFrappeUpdateDoc } from "frappe-react-sdk"
1+ import { useFrappeDeleteDoc , useFrappeUpdateDoc } from "frappe-react-sdk"
22import { useEffect } from "react"
33import { ErrorBanner } from "../../../../layout/AlertBanner/ErrorBanner"
44import { IconButton , Dialog , Flex , Text , VisuallyHidden } from "@radix-ui/themes"
@@ -15,12 +15,21 @@ interface EditMessageModalProps {
1515export const EditMessageModal = ( { onClose, message } : EditMessageModalProps ) => {
1616
1717 const { updateDoc, error, loading : updatingDoc , reset } = useFrappeUpdateDoc ( )
18+ const { deleteDoc, error : deleteError , loading : deletingDoc } = useFrappeDeleteDoc ( )
1819
1920 useEffect ( ( ) => {
2021 reset ( )
2122 } , [ reset ] )
2223
2324 const onSubmit = async ( html : string , json : any ) => {
25+
26+ // If the edited message is empty, delete the message
27+ if ( html . trim ( ) === '' && message . is_thread === 0 && message . message_type === "Text" ) {
28+ return deleteDoc ( 'Raven Message' , message . name ) . then ( ( d ) => {
29+ onClose ( true )
30+ toast . success ( "Message deleted" )
31+ } )
32+ }
2433 return updateDoc ( 'Raven Message' , message . name ,
2534 { text : html , json } ) . then ( ( d ) => {
2635 onClose ( true )
@@ -44,7 +53,8 @@ export const EditMessageModal = ({ onClose, message }: EditMessageModalProps) =>
4453
4554 < Flex gap = '2' direction = 'column' >
4655 < ErrorBanner error = { error } />
47- < Tiptap onMessageSend = { onSubmit } isEdit disableSessionStorage messageSending = { updatingDoc } defaultText = { message . text } />
56+ < ErrorBanner error = { deleteError } />
57+ < Tiptap onMessageSend = { onSubmit } isEdit disableSessionStorage messageSending = { updatingDoc || deletingDoc } defaultText = { message . text } />
4858 < Flex justify = 'end' className = "hidden sm:block" >
4959 < Text size = '1' color = 'gray' > Press < b > Enter</ b > to save</ Text >
5060 </ Flex >
0 commit comments