Skip to content

Commit 6374e1f

Browse files
Michael RumlerTrolldemorted
authored andcommitted
new_conversation_fix
1 parent 2ffef18 commit 6374e1f

File tree

4 files changed

+29
-5
lines changed

4 files changed

+29
-5
lines changed

Signal-Windows.Lib/IncomingMessages.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,9 @@ private void HandleSignalMessage(SignalServiceEnvelope envelope, SignalServiceCo
377377
Group = group,
378378
Timestamp = Util.CurrentTimeMillis()
379379
};
380-
//MessageSender.sendMessage(envelope.getSourceAddress(), requestInfoMessage); TODO
380+
var list = new List<SignalServiceAddress>();
381+
list.Add(new SignalServiceAddress(envelope.getSource()));
382+
SignalLibHandle.Instance.OutgoingMessages.SendMessage(list, requestInfoMessage);
381383
}
382384
composedTimestamp = envelope.getTimestamp();
383385
}

Signal-Windows.Lib/OutgoingMessages.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ public OutgoingMessages(CancellationToken token, SignalServiceMessageSender send
3232
Handle = handle;
3333
}
3434

35+
public void SendMessage(List<SignalServiceAddress> recipients, SignalServiceDataMessage message)
36+
{
37+
lock (this)
38+
{
39+
MessageSender.sendMessage(recipients, message);
40+
}
41+
}
42+
3543
public void HandleOutgoingMessages()
3644
{
3745
Logger.LogDebug("HandleOutgoingMessages()");
@@ -74,7 +82,7 @@ public void HandleOutgoingMessages()
7482
};
7583
if (!Token.IsCancellationRequested)
7684
{
77-
MessageSender.sendMessage(recipients, message);
85+
SendMessage(recipients, message);
7886
outgoingSignalMessage.Status = SignalMessageStatus.Confirmed;
7987
}
8088
}

Signal-Windows.Lib/SignalLibHandle.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public class SignalLibHandle
4040
private Dictionary<CoreDispatcher, ISignalFrontend> Frames = new Dictionary<CoreDispatcher, ISignalFrontend>();
4141
private Task IncomingMessagesTask;
4242
private Task OutgoingMessagesTask;
43+
internal OutgoingMessages OutgoingMessages;
4344
private SignalServiceMessagePipe Pipe;
4445
private SignalServiceMessageSender MessageSender;
4546
private SignalServiceMessageReceiver MessageReceiver;
@@ -381,7 +382,8 @@ private void InitNetwork()
381382
Pipe = MessageReceiver.createMessagePipe();
382383
MessageSender = new SignalServiceMessageSender(CancelSource.Token, LibUtils.ServiceUrls, Store.Username, Store.Password, (int)Store.DeviceId, new Store(), Pipe, null, LibUtils.USER_AGENT);
383384
IncomingMessagesTask = Task.Factory.StartNew(() => new IncomingMessages(CancelSource.Token, Pipe, this).HandleIncomingMessages(), TaskCreationOptions.LongRunning);
384-
OutgoingMessagesTask = Task.Factory.StartNew(() => new OutgoingMessages(CancelSource.Token, MessageSender, this).HandleOutgoingMessages(), TaskCreationOptions.LongRunning);
385+
OutgoingMessages = new OutgoingMessages(CancelSource.Token, MessageSender, this);
386+
OutgoingMessagesTask = Task.Factory.StartNew(() => OutgoingMessages.HandleOutgoingMessages(), TaskCreationOptions.LongRunning);
385387
}
386388
#endregion
387389
}

Signal-Windows.Lib/Storage/DB.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -958,9 +958,10 @@ public static void UpdateExpiresInLocked(SignalConversation thread, uint exp)
958958

959959
#region Groups
960960

961-
public static SignalGroup GetOrCreateGroupLocked(string groupId, long timestamp)
961+
public static SignalGroup GetOrCreateGroupLocked(string groupId, long timestamp, bool notify = true)
962962
{
963963
SignalGroup dbgroup;
964+
bool createdNew = false;
964965
lock (DBLock)
965966
{
966967
using (var ctx = new SignalDBContext())
@@ -984,9 +985,14 @@ public static SignalGroup GetOrCreateGroupLocked(string groupId, long timestamp)
984985
};
985986
ctx.Add(dbgroup);
986987
ctx.SaveChanges();
988+
createdNew = true;
987989
}
988990
}
989991
}
992+
if (createdNew && notify)
993+
{
994+
SignalLibHandle.Instance.DispatchAddOrUpdateConversation(dbgroup, null);
995+
}
990996
return dbgroup;
991997
}
992998

@@ -1087,9 +1093,10 @@ public static List<SignalContact> GetAllContactsLocked()
10871093
}
10881094
}
10891095

1090-
public static SignalContact GetOrCreateContactLocked(string username, long timestamp)
1096+
public static SignalContact GetOrCreateContactLocked(string username, long timestamp, bool notify = true)
10911097
{
10921098
SignalContact contact;
1099+
bool createdNew = false;
10931100
lock (DBLock)
10941101
{
10951102
using (var ctx = new SignalDBContext())
@@ -1109,9 +1116,14 @@ public static SignalContact GetOrCreateContactLocked(string username, long times
11091116
};
11101117
ctx.Contacts.Add(contact);
11111118
ctx.SaveChanges();
1119+
createdNew = true;
11121120
}
11131121
}
11141122
}
1123+
if (createdNew && notify)
1124+
{
1125+
SignalLibHandle.Instance.DispatchAddOrUpdateConversation(contact, null);
1126+
}
11151127
return contact;
11161128
}
11171129

0 commit comments

Comments
 (0)