@@ -26,12 +26,46 @@ public interface ISignalFrontend
2626 void HandleMessageUpdate ( SignalMessage updatedMessage ) ;
2727 void ReplaceConversationList ( List < SignalConversation > conversations ) ;
2828 void HandleAuthFailure ( ) ;
29+ void HandleAttachmentStatusChanged ( SignalAttachment sa , SignalAttachmentStatus newStatus ) ;
2930 }
3031
31- public class SignalLibHandle
32+ public interface ISignalLibHandle
3233 {
33- public static SignalLibHandle Instance ;
34- public SignalStore Store ;
34+ //Frontend API
35+ SignalStore Store { get ; set ; }
36+ Task SendMessage ( SignalMessage message , SignalConversation conversation ) ;
37+ void ResendMessage ( SignalMessage message ) ;
38+ List < SignalMessageContainer > GetMessages ( SignalConversation thread , int startIndex , int count ) ;
39+ void SaveAndDispatchSignalConversation ( SignalConversation updatedConversation , SignalMessage updateMessage ) ;
40+ void PurgeAccountData ( ) ;
41+ Task Acquire ( CoreDispatcher d , ISignalFrontend w ) ;
42+ Task Reacquire ( ) ;
43+ void Release ( ) ;
44+ void AddFrontend ( CoreDispatcher d , ISignalFrontend w ) ;
45+ void RemoveFrontend ( CoreDispatcher d ) ;
46+
47+ // Background API
48+ event EventHandler < SignalMessageEventArgs > SignalMessageEvent ;
49+ void BackgroundAcquire ( ) ;
50+ void BackgroundRelease ( ) ;
51+
52+ // Attachment API
53+ void StartAttachmentDownload ( SignalAttachment sa ) ;
54+ //void AbortAttachmentDownload(SignalAttachment sa); TODO
55+ }
56+
57+ public static class SignalHelper
58+ {
59+ public static ISignalLibHandle CreateSignalLibHandle ( bool headless )
60+ {
61+ return new SignalLibHandle ( headless ) ;
62+ }
63+ }
64+
65+ internal class SignalLibHandle : ISignalLibHandle
66+ {
67+ internal static SignalLibHandle Instance ;
68+ public SignalStore Store { get ; set ; }
3569 private readonly ILogger Logger = LibsignalLogging . CreateLogger < SignalLibHandle > ( ) ;
3670 public SemaphoreSlim SemaphoreSlim = new SemaphoreSlim ( 1 , 1 ) ;
3771 private bool Headless ;
@@ -214,6 +248,11 @@ await Task.Run(async () =>
214248 } ) ;
215249 }
216250
251+ public void ResendMessage ( SignalMessage message )
252+ {
253+ OutgoingQueue . Add ( message ) ;
254+ }
255+
217256 public List < SignalMessageContainer > GetMessages ( SignalConversation thread , int startIndex , int count )
218257 {
219258 return SignalDBContext . GetMessagesLocked ( thread , startIndex , count ) ;
@@ -230,7 +269,14 @@ public void SaveAndDispatchSignalConversation(SignalConversation updatedConversa
230269 }
231270 #endregion
232271
233- #region backend api
272+ #region attachment api
273+ public void StartAttachmentDownload ( SignalAttachment sa )
274+ {
275+ //TODO lock, check if already downloading, start a new download if not exists
276+ }
277+ #endregion
278+
279+ #region internal api
234280 internal void SaveAndDispatchSignalMessage ( SignalMessage message , SignalConversation conversation )
235281 {
236282 conversation . MessagesCount += 1 ;
0 commit comments