@@ -392,17 +392,24 @@ export class Channel {
392
392
throw Error ( `Reaction object is missing` ) ;
393
393
}
394
394
395
- const offlineDb = this . getClient ( ) . offlineDb ;
396
- if ( offlineDb ) {
397
- return ( await offlineDb . queueTask ( {
398
- task : {
399
- channelId : this . id as string ,
400
- channelType : this . type ,
401
- messageId : messageID ,
402
- payload : [ messageID , reaction , options ] ,
403
- type : 'send-reaction' ,
404
- } ,
405
- } ) ) as ReactionAPIResponse ;
395
+ try {
396
+ const offlineDb = this . getClient ( ) . offlineDb ;
397
+ if ( offlineDb ) {
398
+ return ( await offlineDb . queueTask ( {
399
+ task : {
400
+ channelId : this . id as string ,
401
+ channelType : this . type ,
402
+ messageId : messageID ,
403
+ payload : [ messageID , reaction , options ] ,
404
+ type : 'send-reaction' ,
405
+ } ,
406
+ } ) ) as ReactionAPIResponse ;
407
+ }
408
+ } catch ( error ) {
409
+ this . _client . logger ( 'error' , `offlineDb:send-reaction` , {
410
+ tags : [ 'channel' , 'offlineDb' ] ,
411
+ error,
412
+ } ) ;
406
413
}
407
414
408
415
return this . _sendReaction ( messageID , reaction , options ) ;
@@ -446,28 +453,35 @@ export class Channel {
446
453
) ;
447
454
}
448
455
449
- const offlineDb = this . getClient ( ) . offlineDb ;
450
- if ( offlineDb ) {
451
- const message = this . state . messages . find ( ( { id } ) => id === messageID ) ;
452
- const reaction = {
453
- created_at : '' ,
454
- updated_at : '' ,
455
- message_id : messageID ,
456
- type : reactionType ,
457
- user_id : ( this . getClient ( ) . userID as string ) ?? user_id ,
458
- } ;
459
- await offlineDb . deleteReaction ( {
460
- message,
461
- reaction,
462
- } ) ;
463
- return await offlineDb . queueTask ( {
464
- task : {
465
- channelId : this . id as string ,
466
- channelType : this . type ,
467
- messageId : messageID ,
468
- payload : [ messageID , reactionType ] ,
469
- type : 'delete-reaction' ,
470
- } ,
456
+ try {
457
+ const offlineDb = this . getClient ( ) . offlineDb ;
458
+ if ( offlineDb ) {
459
+ const message = this . state . messages . find ( ( { id } ) => id === messageID ) ;
460
+ const reaction = {
461
+ created_at : '' ,
462
+ updated_at : '' ,
463
+ message_id : messageID ,
464
+ type : reactionType ,
465
+ user_id : ( this . getClient ( ) . userID as string ) ?? user_id ,
466
+ } ;
467
+ await offlineDb . deleteReaction ( {
468
+ message,
469
+ reaction,
470
+ } ) ;
471
+ return await offlineDb . queueTask ( {
472
+ task : {
473
+ channelId : this . id as string ,
474
+ channelType : this . type ,
475
+ messageId : messageID ,
476
+ payload : [ messageID , reactionType ] ,
477
+ type : 'delete-reaction' ,
478
+ } ,
479
+ } ) ;
480
+ }
481
+ } catch ( error ) {
482
+ this . _client . logger ( 'error' , `offlineDb:delete-reaction` , {
483
+ tags : [ 'channel' , 'offlineDb' ] ,
484
+ error,
471
485
} ) ;
472
486
}
473
487
@@ -1449,10 +1463,14 @@ export class Channel {
1449
1463
isLatestMessageSet : messageSet . isLatest ,
1450
1464
} ,
1451
1465
} ) ;
1452
- this . getClient ( ) . offlineDb ?. upsertChannels ?.( {
1453
- channels : [ state ] ,
1454
- isLatestMessagesSet : messageSet . isLatest ,
1455
- } ) ;
1466
+ this . getClient ( ) . offlineDb ?. executeQuerySafely (
1467
+ ( db ) =>
1468
+ db . upsertChannels ?.( {
1469
+ channels : [ state ] ,
1470
+ isLatestMessagesSet : messageSet . isLatest ,
1471
+ } ) ,
1472
+ { method : 'upsertChannels' } ,
1473
+ ) ;
1456
1474
1457
1475
return state ;
1458
1476
}
@@ -1719,7 +1737,10 @@ export class Channel {
1719
1737
channelState . unreadCount = 0 ;
1720
1738
}
1721
1739
1722
- this . getClient ( ) . offlineDb ?. handleRead ( { event, unreadMessages : 0 } ) ;
1740
+ this . getClient ( ) . offlineDb ?. executeQuerySafely (
1741
+ ( db ) => db . handleRead ( { event, unreadMessages : 0 } ) ,
1742
+ { method : 'handleRead' } ,
1743
+ ) ;
1723
1744
}
1724
1745
break ;
1725
1746
case 'user.watching.start' :
@@ -1739,7 +1760,10 @@ export class Channel {
1739
1760
if ( event . hard_delete ) channelState . removeMessage ( event . message ) ;
1740
1761
else channelState . addMessageSorted ( event . message , false , false ) ;
1741
1762
1742
- this . getClient ( ) . offlineDb ?. handleDeleteMessage ( { event } ) ;
1763
+ this . getClient ( ) . offlineDb ?. executeQuerySafely (
1764
+ ( db ) => db . handleDeleteMessage ( { event } ) ,
1765
+ { method : 'handleDeleteMessage' } ,
1766
+ ) ;
1743
1767
1744
1768
channelState . removeQuotedMessageReferences ( event . message ) ;
1745
1769
@@ -1788,11 +1812,10 @@ export class Channel {
1788
1812
}
1789
1813
1790
1814
if ( ! isThreadMessage ) {
1791
- console . log ( 'DID STUFF AND NOW HANDLING EVENT !' ) ;
1792
- this . getClient ( )
1793
- . offlineDb ?. handleNewMessage ( { event } )
1794
- . then ( ( ) => console . log ( 'SUCCESS IN NEW MESSAGE !' ) )
1795
- . catch ( ( err ) => console . log ( 'ERROR: ' , err ) ) ;
1815
+ this . getClient ( ) . offlineDb ?. executeQuerySafely (
1816
+ ( db ) => db . handleNewMessage ( { event } ) ,
1817
+ { method : 'handleNewMessage' } ,
1818
+ ) ;
1796
1819
}
1797
1820
}
1798
1821
break ;
@@ -1807,7 +1830,10 @@ export class Channel {
1807
1830
} else {
1808
1831
channelState . removePinnedMessage ( event . message ) ;
1809
1832
}
1810
- this . getClient ( ) . offlineDb ?. handleMessageUpdatedEvent ( { event } ) ;
1833
+ this . getClient ( ) . offlineDb ?. executeQuerySafely (
1834
+ ( db ) => db . handleMessageUpdatedEvent ( { event } ) ,
1835
+ { method : 'handleMessageUpdatedEvent' } ,
1836
+ ) ;
1811
1837
}
1812
1838
break ;
1813
1839
case 'channel.truncated' :
@@ -1841,7 +1867,10 @@ export class Channel {
1841
1867
}
1842
1868
}
1843
1869
1844
- this . getClient ( ) . offlineDb ?. handleChannelTruncatedEvent ( { event } ) ;
1870
+ this . getClient ( ) . offlineDb ?. executeQuerySafely (
1871
+ ( db ) => db . handleChannelTruncatedEvent ( { event } ) ,
1872
+ { method : 'handleChannelTruncatedEvent' } ,
1873
+ ) ;
1845
1874
1846
1875
break ;
1847
1876
case 'member.added' :
@@ -1866,9 +1895,13 @@ export class Channel {
1866
1895
if ( channel . data ?. member_count && event . type === 'member.added' ) {
1867
1896
channel . data . member_count += 1 ;
1868
1897
}
1869
- this . getClient ( ) . offlineDb ?. handleMemberEvent ( {
1870
- event : { ...event , member : memberCopy } ,
1871
- } ) ;
1898
+ this . getClient ( ) . offlineDb ?. executeQuerySafely (
1899
+ ( db ) =>
1900
+ db . handleMemberEvent ( {
1901
+ event : { ...event , member : memberCopy } ,
1902
+ } ) ,
1903
+ { method : 'handleMemberEvent' } ,
1904
+ ) ;
1872
1905
}
1873
1906
1874
1907
const currentUserId = this . getClient ( ) . userID ;
@@ -1895,9 +1928,13 @@ export class Channel {
1895
1928
channel . data . member_count = Math . max ( channel . data . member_count - 1 , 0 ) ;
1896
1929
}
1897
1930
1898
- this . getClient ( ) . offlineDb ?. handleMemberEvent ( {
1899
- event,
1900
- } ) ;
1931
+ this . getClient ( ) . offlineDb ?. executeQuerySafely (
1932
+ ( db ) =>
1933
+ db . handleMemberEvent ( {
1934
+ event,
1935
+ } ) ,
1936
+ { method : 'handleMemberEvent' } ,
1937
+ ) ;
1901
1938
1902
1939
// TODO?: unset membership
1903
1940
}
@@ -1917,7 +1954,9 @@ export class Channel {
1917
1954
} ;
1918
1955
1919
1956
channelState . unreadCount = unreadCount ;
1920
- this . getClient ( ) . offlineDb ?. handleRead ( { event } ) ;
1957
+ this . getClient ( ) . offlineDb ?. executeQuerySafely ( ( db ) => db . handleRead ( { event } ) , {
1958
+ method : 'handleRead' ,
1959
+ } ) ;
1921
1960
break ;
1922
1961
}
1923
1962
case 'channel.updated' :
@@ -1935,54 +1974,76 @@ export class Channel {
1935
1974
event . channel ?. own_capabilities ?? channel . data ?. own_capabilities ,
1936
1975
} ;
1937
1976
channel . data = newChannelData ;
1938
- this . getClient ( ) . offlineDb ?. upsertChannelData ( { channel : newChannelData } ) ;
1977
+ this . getClient ( ) . offlineDb ?. executeQuerySafely (
1978
+ ( db ) => db . upsertChannelData ( { channel : newChannelData } ) ,
1979
+ { method : 'upsertChannelData' } ,
1980
+ ) ;
1939
1981
}
1940
1982
break ;
1941
1983
case 'reaction.new' :
1942
1984
if ( event . message && event . reaction ) {
1943
- event . message = channelState . addReaction (
1944
- event . reaction ,
1945
- event . message ,
1946
- ) as MessageResponse ;
1947
- this . getClient ( ) . offlineDb ?. insertReaction ( {
1948
- message : event . message ,
1949
- reaction : event . reaction ,
1950
- } ) ;
1985
+ const { message, reaction } = event ;
1986
+ event . message = channelState . addReaction ( reaction , message ) as MessageResponse ;
1987
+ this . getClient ( ) . offlineDb ?. executeQuerySafely (
1988
+ ( db ) =>
1989
+ db . insertReaction ( {
1990
+ message,
1991
+ reaction,
1992
+ } ) ,
1993
+ { method : 'insertReaction' } ,
1994
+ ) ;
1951
1995
}
1952
1996
break ;
1953
1997
case 'reaction.deleted' :
1954
1998
if ( event . message && event . reaction ) {
1955
- event . message = channelState . removeReaction ( event . reaction , event . message ) ;
1956
- this . getClient ( ) . offlineDb ?. deleteReaction ( {
1957
- message : event . message ,
1958
- reaction : event . reaction ,
1959
- } ) ;
1999
+ const { message, reaction } = event ;
2000
+ event . message = channelState . removeReaction ( reaction , message ) ;
2001
+ this . getClient ( ) . offlineDb ?. executeQuerySafely (
2002
+ ( db ) =>
2003
+ db . deleteReaction ( {
2004
+ message,
2005
+ reaction,
2006
+ } ) ,
2007
+ { method : 'deleteReaction' } ,
2008
+ ) ;
1960
2009
}
1961
2010
break ;
1962
2011
case 'reaction.updated' :
1963
- if ( event . reaction ) {
2012
+ if ( event . message && event . reaction ) {
2013
+ const { message, reaction } = event ;
1964
2014
// assuming reaction.updated is only called if enforce_unique is true
1965
2015
event . message = channelState . addReaction (
1966
- event . reaction ,
1967
- event . message ,
2016
+ reaction ,
2017
+ message ,
1968
2018
true ,
1969
2019
) as MessageResponse ;
1970
- this . getClient ( ) . offlineDb ?. updateReaction ( {
1971
- message : event . message ,
1972
- reaction : event . reaction ,
1973
- } ) ;
2020
+ this . getClient ( ) . offlineDb ?. executeQuerySafely (
2021
+ ( db ) =>
2022
+ db . updateReaction ( {
2023
+ message,
2024
+ reaction,
2025
+ } ) ,
2026
+ { method : 'updateReaction' } ,
2027
+ ) ;
1974
2028
}
1975
2029
break ;
1976
2030
case 'channel.hidden' :
1977
2031
channel . data = { ...channel . data , hidden : true } ;
1978
2032
if ( event . clear_history ) {
1979
2033
channelState . clearMessages ( ) ;
1980
2034
}
1981
- this . getClient ( ) . offlineDb ?. handleChannelVisibilityEvent ( { event } ) ;
2035
+ this . getClient ( ) . offlineDb ?. executeQuerySafely (
2036
+ ( db ) => db . handleChannelVisibilityEvent ( { event } ) ,
2037
+ { method : 'handleChannelVisibilityEvent' } ,
2038
+ ) ;
1982
2039
break ;
1983
2040
case 'channel.visible' :
1984
2041
channel . data = { ...channel . data , hidden : false } ;
1985
2042
this . getClient ( ) . offlineDb ?. handleChannelVisibilityEvent ( { event } ) ;
2043
+ this . getClient ( ) . offlineDb ?. executeQuerySafely (
2044
+ ( db ) => db . handleChannelVisibilityEvent ( { event } ) ,
2045
+ { method : 'handleChannelVisibilityEvent' } ,
2046
+ ) ;
1986
2047
break ;
1987
2048
case 'user.banned' :
1988
2049
if ( ! event . user ?. id ) break ;
0 commit comments