Skip to content

Commit a249a6c

Browse files
committed
Properly update UI on received group sync messages
fixes #158
1 parent 77f2e6e commit a249a6c

File tree

3 files changed

+16
-14
lines changed

3 files changed

+16
-14
lines changed

Signal-Windows.Lib/IncomingMessages.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,8 @@ private async Task HandleMessage(SignalServiceEnvelope envelope)
221221
};
222222
groupsList.Add((group, g.Members));
223223
}
224-
List<SignalConversation> newConversations = await SignalDBContext.InsertOrUpdateGroups(groupsList);
225-
await SignalLibHandle.Instance.DispatchAddOrUpdateConversations(newConversations);
224+
List<SignalConversation> dbGroups = await SignalDBContext.InsertOrUpdateGroups(groupsList);
225+
await SignalLibHandle.Instance.DispatchAddOrUpdateConversations(dbGroups);
226226
}
227227
}
228228
else if (content.SynchronizeMessage.Contacts != null && content.SynchronizeMessage.Contacts.Complete) //TODO incomplete updates
@@ -257,8 +257,8 @@ private async Task HandleMessage(SignalServiceEnvelope envelope)
257257
};
258258
contactsList.Add(contact);
259259
}
260-
var newConversations = SignalDBContext.InsertOrUpdateContacts(contactsList);
261-
await SignalLibHandle.Instance.DispatchAddOrUpdateConversations(newConversations);
260+
var dbContacts = SignalDBContext.InsertOrUpdateContacts(contactsList);
261+
await SignalLibHandle.Instance.DispatchAddOrUpdateConversations(dbContacts);
262262
}
263263
}
264264
}

Signal-Windows.Lib/SignalLibHandle.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,7 @@ await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
545545
}
546546
}
547547

548-
internal async Task DispatchAddOrUpdateConversations(List<SignalConversation> newConversations)
548+
internal async Task DispatchAddOrUpdateConversations(IList<SignalConversation> newConversations)
549549
{
550550
List<Task> operations = new List<Task>();
551551
foreach (var dispatcher in Frames.Keys)

Signal-Windows.Lib/Storage/DB.cs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1124,15 +1124,16 @@ internal static async Task<List<SignalConversation>> InsertOrUpdateGroups(IList<
11241124
dbGroup = group;
11251125
ctx.Groups.Add(dbGroup);
11261126
}
1127+
refreshedGroups.Add(dbGroup);
11271128
foreach (var member in members)
11281129
{
1129-
(var contact, var notify) = GetOrCreateContact(ctx, member, 0);
1130+
(var contact, var createdNew) = GetOrCreateContact(ctx, member, 0);
11301131
dbGroup.GroupMemberships.Add(new GroupMembership()
11311132
{
11321133
Contact = contact,
11331134
Group = dbGroup
11341135
});
1135-
if (notify)
1136+
if (createdNew)
11361137
{
11371138
newContacts.Add(contact);
11381139
}
@@ -1153,7 +1154,7 @@ internal static async Task<List<SignalConversation>> InsertOrUpdateGroups(IList<
11531154
return refreshedGroups;
11541155
}
11551156

1156-
internal static List<SignalConversation> InsertOrUpdateContacts(IList<SignalContact> contacts)
1157+
internal static IList<SignalConversation> InsertOrUpdateContacts(IList<SignalContact> contacts)
11571158
{
11581159
List<SignalConversation> refreshedContacts = new List<SignalConversation>();
11591160
lock (DBLock)
@@ -1351,24 +1352,25 @@ public static List<SignalContact> GetAllContactsLocked()
13511352
}
13521353
}
13531354

1354-
public static async Task<SignalContact> GetOrCreateContactLocked(string username, long timestamp, bool notify = true)
1355+
public static async Task<SignalContact> GetOrCreateContactLocked(string username, long timestamp)
13551356
{
13561357
SignalContact contact;
1358+
bool createdNew;
13571359
lock (DBLock)
13581360
{
13591361
using (var ctx = new SignalDBContext())
13601362
{
1361-
(contact, notify) = GetOrCreateContact(ctx, username, timestamp, notify);
1363+
(contact, createdNew) = GetOrCreateContact(ctx, username, timestamp);
13621364
}
13631365
}
1364-
if (notify)
1366+
if (createdNew)
13651367
{
13661368
await SignalLibHandle.Instance.DispatchAddOrUpdateConversation(contact, null);
13671369
}
13681370
return contact;
13691371
}
13701372

1371-
private static (SignalContact contact, bool notify) GetOrCreateContact(SignalDBContext ctx, string username, long timestamp, bool notify = true)
1373+
private static (SignalContact contact, bool createdNew) GetOrCreateContact(SignalDBContext ctx, string username, long timestamp)
13721374
{
13731375
bool createdNew = false;
13741376
SignalContact contact = contact = ctx.Contacts
@@ -1382,13 +1384,13 @@ private static (SignalContact contact, bool notify) GetOrCreateContact(SignalDBC
13821384
ThreadDisplayName = username,
13831385
CanReceive = true,
13841386
LastActiveTimestamp = timestamp,
1385-
Color = null //Utils.CalculateDefaultColor(username)
1387+
Color = null
13861388
};
13871389
ctx.Contacts.Add(contact);
13881390
ctx.SaveChanges();
13891391
createdNew = true;
13901392
}
1391-
return (contact, createdNew && notify);
1393+
return (contact, createdNew);
13921394
}
13931395

13941396
public static void InsertOrUpdateConversationLocked(SignalConversation conversation)

0 commit comments

Comments
 (0)