@@ -1450,6 +1450,7 @@ const ChannelWithContext = (props: PropsWithChildren<ChannelPropsWithContext>) =
14501450 */
14511451 const removeMessage : MessagesContextValue [ 'removeMessage' ] = async ( message ) => {
14521452 if ( channel ) {
1453+ // TODO: See if it's easy to refactor this to be able to accept DB queries
14531454 channel . state . removeMessage ( message ) ;
14541455 copyMessagesStateFromChannel ( channel ) ;
14551456
@@ -1458,10 +1459,14 @@ const ChannelWithContext = (props: PropsWithChildren<ChannelPropsWithContext>) =
14581459 }
14591460 }
14601461
1461- if ( enableOfflineSupport ) {
1462- await dbApi . deleteMessage ( {
1463- id : message . id ,
1464- } ) ;
1462+ if ( client . offlineDb ) {
1463+ // FIXME: Batch these maybe ?.
1464+ await Promise . all ( [
1465+ client . offlineDb . dropPendingTasks ( { messageId : message . id } ) ,
1466+ client . offlineDb . hardDeleteMessage ( {
1467+ id : message . id ,
1468+ } ) ,
1469+ ] ) ;
14651470 }
14661471 } ;
14671472
@@ -1497,47 +1502,32 @@ const ChannelWithContext = (props: PropsWithChildren<ChannelPropsWithContext>) =
14971502 }
14981503 } ;
14991504
1500- const deleteMessage : MessagesContextValue [ 'deleteMessage' ] = async ( message ) => {
1505+ const deleteMessage : MessagesContextValue [ 'deleteMessage' ] = async (
1506+ message ,
1507+ hardDelete = false ,
1508+ ) => {
15011509 if ( ! channel . id ) {
15021510 throw new Error ( 'Channel has not been initialized yet' ) ;
15031511 }
15041512
1505- if ( ! enableOfflineSupport ) {
1506- if ( message . status === MessageStatusTypes . FAILED ) {
1507- await removeMessage ( message ) ;
1508- return ;
1509- }
1510- await client . deleteMessage ( message . id ) ;
1511- return ;
1512- }
1513-
15141513 if ( message . status === MessageStatusTypes . FAILED ) {
1515- await client . offlineDb ?. syncManager . dropPendingTasks ( { messageId : message . id } ) ;
15161514 await removeMessage ( message ) ;
1517- } else {
1518- const updatedMessage = {
1519- ...message ,
1520- cid : channel . cid ,
1521- deleted_at : new Date ( ) . toISOString ( ) ,
1522- type : 'deleted' as MessageLabel ,
1523- } ;
1524- updateMessage ( updatedMessage ) ;
1515+ return ;
1516+ }
1517+ const updatedMessage = {
1518+ ...message ,
1519+ cid : channel . cid ,
1520+ deleted_at : new Date ( ) . toISOString ( ) ,
1521+ type : 'deleted' as MessageLabel ,
1522+ } ;
1523+ updateMessage ( updatedMessage ) ;
15251524
1526- threadInstance ?. upsertReplyLocally ( { message : updatedMessage } ) ;
1525+ threadInstance ?. upsertReplyLocally ( { message : updatedMessage } ) ;
15271526
1528- const data = await client . offlineDb ?. syncManager . queueTask ( {
1529- task : {
1530- channelId : channel . id ,
1531- channelType : channel . type ,
1532- messageId : message . id ,
1533- payload : [ message . id ] ,
1534- type : 'delete-message' ,
1535- } ,
1536- } ) ;
1527+ const data = await client . deleteMessage ( message . id , hardDelete ) ;
15371528
1538- if ( data ?. message ) {
1539- updateMessage ( { ...data . message } ) ;
1540- }
1529+ if ( data ?. message ) {
1530+ updateMessage ( { ...data . message } ) ;
15411531 }
15421532 } ;
15431533
0 commit comments