Skip to content

Commit 78df327

Browse files
committed
Don't add IKChange messages twice, always display them properly
1 parent 64d6ddf commit 78df327

File tree

5 files changed

+17
-13
lines changed

5 files changed

+17
-13
lines changed

Signal-Windows.Lib/SignalLibHandle.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -796,7 +796,6 @@ internal async Task HandleOutgoingKeyChangeLocked(string user, string identity)
796796
Logger.LogTrace("HandleOutgoingKeyChange() locked");
797797
var messages = LibsignalDBContext.InsertIdentityChangedMessagesLocked(user);
798798
await LibsignalDBContext.SaveIdentityLocked(new SignalProtocolAddress(user, 1), identity);
799-
await DispatchHandleIdentityKeyChange(messages);
800799
}
801800
catch (Exception e)
802801
{

Signal-Windows/Controls/Conversation.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ public void UpdateAttachment(SignalAttachment sa)
272272
}
273273
}
274274

275-
public AppendResult Append(Message sm)
275+
public AppendResult Append(IMessageView sm)
276276
{
277277
AppendResult result = new AppendResult(false);
278278
bool bottom = GetBottommostIndex() == Collection.Count - 2; // -2 because we already incremented Count

Signal-Windows/Controls/VirtualizedMessagesCollection.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -158,12 +158,8 @@ public int Add(object value, bool hideUnreadMarker)
158158
private void LoadPage(int pageIndex)
159159
{
160160
MessageStorage[pageIndex] = App.Handle.GetMessages(Conversation, pageIndex * PAGE_SIZE, PAGE_SIZE)
161-
.Select(m =>
162-
{
163-
if (m.Type == SignalMessageType.IdentityKeyChange)
164-
return new IdentityKeyChangeMessage(m) as IMessageView;
165-
return new Message(m) as IMessageView;
166-
}).ToList();
161+
.Select(m => Utils.CreateMessageView(m)).ToList();
162+
167163
foreach (var msg in MessageStorage[pageIndex])
168164
{
169165
AddMessageToMap(msg);

Signal-Windows/Utils.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using System;
1+
using Signal_Windows.Controls;
2+
using Signal_Windows.Models;
3+
using System;
24
using System.Collections.Generic;
35
using System.Collections.ObjectModel;
46
using System.Collections.Specialized;
@@ -130,6 +132,13 @@ public static string GetColorFromBrush(SolidColorBrush brush)
130132
else { return GREY; }
131133
}
132134

135+
public static IMessageView CreateMessageView(SignalMessage message)
136+
{
137+
if (message.Type == SignalMessageType.IdentityKeyChange)
138+
return new IdentityKeyChangeMessage(message) as IMessageView;
139+
return new Message(message) as IMessageView;
140+
}
141+
133142
public static void AddRange<T>(this ObservableCollection<T> observableCollection, IEnumerable<T> collection)
134143
{
135144
foreach (var item in collection)

Signal-Windows/ViewModels/MainPageViewModel.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,8 @@ public void AddOrUpdateConversation(SignalConversation conversation, SignalMessa
204204
{
205205
if (updateMessage != null)
206206
{
207-
var container = new Message(updateMessage);
208-
View.Thread.Append(container);
207+
var messageView = Utils.CreateMessageView(updateMessage);
208+
View.Thread.Append(messageView);
209209
View.Reload();
210210
}
211211
}
@@ -235,8 +235,8 @@ public AppendResult HandleMessage(SignalMessage message, SignalConversation conv
235235
localConversation.UpdateUI();
236236
if (SelectedThread != null && SelectedThread == localConversation)
237237
{
238-
var container = new Message(message);
239-
result = View.Thread.Append(container);
238+
var messageView = Utils.CreateMessageView(message);
239+
result = View.Thread.Append(messageView);
240240
}
241241
RepositionConversation(localConversation);
242242
return result;

0 commit comments

Comments
 (0)