Skip to content

Commit 7ac138e

Browse files
committed
Merge branch 'master' into disappearing-messages
2 parents 9c90530 + bfc3329 commit 7ac138e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1406
-596
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ This is an unofficial Signal client for the Universal Windows Platform. It is (c
2020
- a prettier interface
2121

2222
## I want to try it out but I'm not a developer
23-
You can get Signal-Windows from the Windows store with [this invite link](http://go.microsoft.com/fwlink/?LinkId=532540&mstoken=HG7K4-6PXHC-YXYV4-VF3XG-2KM9Z).
23+
You can get Signal-Windows from the Windows store with [this invite link](https://redeem.microsoft.com/?mstoken=9Q92F-6V26X-M7R4C-42939-7779Z).
2424

2525
## Bug reports
2626
Found a bug? Great! Open a pull request or an issue.

Signal-Windows.Lib/Events/SignalMessageEventArgs.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@
77

88
namespace Signal_Windows.Lib.Events
99
{
10-
public enum SignalMessageType
10+
public enum SignalPipeMessageType
1111
{
1212
NormalMessage,
1313
PipeEmptyMessage
1414
}
1515
public class SignalMessageEventArgs : EventArgs
1616
{
1717
public SignalMessage Message { get; private set; }
18-
public SignalMessageType MessageType { get; private set; }
18+
public SignalPipeMessageType MessageType { get; private set; }
1919

20-
public SignalMessageEventArgs(SignalMessage message, SignalMessageType type)
20+
public SignalMessageEventArgs(SignalMessage message, SignalPipeMessageType type)
2121
{
2222
Message = message;
2323
MessageType = type;

Signal-Windows.Lib/GlobalSettingsManager.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public enum ShowNotificationTextSettings
2525
}
2626
private const string BlockScreenshots = "BlockScreenshots";
2727
private const string EnableReadReceipts = "EnableReadReceipts";
28+
private const string SpellCheck = "SpellCheck";
2829

2930
private static ApplicationDataContainer localSettings;
3031
private static IReadOnlyDictionary<string, ApplicationDataContainer> Containers
@@ -95,6 +96,18 @@ public static bool EnableReadReceiptsSetting
9596
}
9697
}
9798

99+
public static bool SpellCheckSetting
100+
{
101+
get
102+
{
103+
return GetSetting(Containers[ChatsAndMediaContainer], SpellCheck, true);
104+
}
105+
set
106+
{
107+
Containers[ChatsAndMediaContainer].Values[SpellCheck] = value;
108+
}
109+
}
110+
98111
private static T GetSetting<T>(ApplicationDataContainer container, string key, T defaultValue)
99112
{
100113
if (container.Values.ContainsKey(key))

Signal-Windows.Lib/IncomingMessages.cs

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -76,20 +76,24 @@ public async Task OnMessage(SignalServiceMessagePipeMessage message)
7676
await SignalLibHandle.Instance.DispatchMessageUpdate(update);
7777
}
7878
}
79-
else if (envelope.IsPreKeySignalMessage() || envelope.IsSignalMessage())
80-
{
81-
await HandleMessage(envelope);
82-
}
8379
else
8480
{
85-
Logger.LogWarning("OnMessage() could not handle unknown message type {0}", envelope.GetEnvelopeType());
81+
await HandleMessage(envelope);
8682
}
8783
}
8884
else if (message is SignalServiceMessagePipeEmptyMessage)
8985
{
9086
SignalLibHandle.Instance.DispatchPipeEmptyMessage();
9187
}
9288
}
89+
catch (Exception e)
90+
{
91+
Logger.LogError("OnMessage failed: {0}\n{1}", e.Message, e.StackTrace);
92+
if (e.InnerException != null)
93+
{
94+
Logger.LogError("InnerException: {0}\n{1}", e.InnerException.Message, e.InnerException.StackTrace);
95+
}
96+
}
9397
finally
9498
{
9599
SignalLibHandle.Instance.SemaphoreSlim.Release();
@@ -99,7 +103,7 @@ public async Task OnMessage(SignalServiceMessagePipeMessage message)
99103

100104
private async Task HandleMessage(SignalServiceEnvelope envelope)
101105
{
102-
var cipher = new SignalServiceCipher(new SignalServiceAddress(SignalLibHandle.Instance.Store.Username), new Store());
106+
var cipher = new SignalServiceCipher(new SignalServiceAddress(SignalLibHandle.Instance.Store.Username), new Store(), LibUtils.GetCertificateValidator());
103107
var content = cipher.Decrypt(envelope);
104108
long timestamp = Util.CurrentTimeMillis();
105109

@@ -276,8 +280,8 @@ private async Task HandleMessage(SignalServiceEnvelope envelope)
276280

277281
private async Task HandleSyncedReadMessage(ReadMessage readMessage)
278282
{
279-
var conv = await SignalDBContext.UpdateMessageRead(readMessage);
280-
await SignalLibHandle.Instance.DispatchMessageRead(conv.LastSeenMessageIndex, conv);
283+
var updatedConversation = SignalDBContext.UpdateMessageRead(readMessage.Timestamp);
284+
await SignalLibHandle.Instance.DispatchMessageRead(updatedConversation);
281285
}
282286

283287
private async Task HandleExpirationUpdateMessage(SignalServiceEnvelope envelope, SignalServiceContent content, SignalServiceDataMessage message, bool isSync, long timestamp)
@@ -310,7 +314,7 @@ private async Task HandleExpirationUpdateMessage(SignalServiceEnvelope envelope,
310314
{
311315
status = 0;
312316
type = SignalMessageDirection.Incoming;
313-
author = await SignalDBContext.GetOrCreateContactLocked(envelope.GetSource(), timestamp);
317+
author = await SignalDBContext.GetOrCreateContactLocked(content.Sender, timestamp);
314318
prefix = $"{author.ThreadDisplayName} has";
315319
composedTimestamp = envelope.GetTimestamp();
316320
if (message.Group != null)
@@ -319,7 +323,7 @@ private async Task HandleExpirationUpdateMessage(SignalServiceEnvelope envelope,
319323
}
320324
else
321325
{
322-
conversation = await SignalDBContext.GetOrCreateContactLocked(envelope.GetSource(), 0);
326+
conversation = await SignalDBContext.GetOrCreateContactLocked(content.Sender, 0);
323327
}
324328
}
325329
conversation.ExpiresInSeconds = (uint)message.ExpiresInSeconds;
@@ -348,7 +352,7 @@ private async Task HandleExpirationUpdateMessage(SignalServiceEnvelope envelope,
348352
ComposedTimestamp = composedTimestamp,
349353
ReceivedTimestamp = timestamp,
350354
};
351-
await SignalLibHandle.Instance.SaveAndDispatchSignalMessage(sm, conversation);
355+
await SignalLibHandle.Instance.SaveAndDispatchSignalMessage(sm, null, conversation);
352356
}
353357

354358
private async Task HandleSessionResetMessage(SignalServiceEnvelope envelope, SignalServiceContent content, SignalServiceDataMessage dataMessage, bool isSync, long timestamp)
@@ -375,10 +379,10 @@ private async Task HandleSessionResetMessage(SignalServiceEnvelope envelope, Sig
375379
{
376380
status = 0;
377381
type = SignalMessageDirection.Incoming;
378-
author = await SignalDBContext.GetOrCreateContactLocked(envelope.GetSource(), timestamp);
382+
author = await SignalDBContext.GetOrCreateContactLocked(content.Sender, timestamp);
379383
prefix = $"{author.ThreadDisplayName} has";
380384
composedTimestamp = envelope.GetTimestamp();
381-
conversationId = envelope.GetSource();
385+
conversationId = content.Sender;
382386
}
383387
LibsignalDBContext.DeleteAllSessions(conversationId);
384388
conversation = await SignalDBContext.GetOrCreateContactLocked(conversationId, 0);
@@ -396,7 +400,7 @@ private async Task HandleSessionResetMessage(SignalServiceEnvelope envelope, Sig
396400
ComposedTimestamp = composedTimestamp,
397401
ReceivedTimestamp = timestamp,
398402
};
399-
await SignalLibHandle.Instance.SaveAndDispatchSignalMessage(sm, conversation);
403+
await SignalLibHandle.Instance.SaveAndDispatchSignalMessage(sm, null, conversation);
400404
}
401405

402406
/// <summary>
@@ -440,7 +444,7 @@ private async Task HandleGroupLeaveMessage(SignalServiceEnvelope envelope, Signa
440444
SignalGroup group = await SignalDBContext.GetOrCreateGroupLocked(groupid, 0);
441445
if (isSync)
442446
{
443-
SignalContact author = await SignalDBContext.GetOrCreateContactLocked(envelope.GetSource(), 0);
447+
SignalContact author = await SignalDBContext.GetOrCreateContactLocked(content.Sender, 0);
444448
SignalMessage sm = new SignalMessage()
445449
{
446450
Direction = SignalMessageDirection.Incoming,
@@ -459,7 +463,7 @@ private async Task HandleGroupLeaveMessage(SignalServiceEnvelope envelope, Signa
459463
}
460464
else
461465
{
462-
SignalContact author = await SignalDBContext.GetOrCreateContactLocked(envelope.GetSource(), 0);
466+
SignalContact author = await SignalDBContext.GetOrCreateContactLocked(content.Sender, 0);
463467
SignalMessage sm = new SignalMessage()
464468
{
465469
Direction = SignalMessageDirection.Incoming,
@@ -496,7 +500,7 @@ private async Task HandleGroupUpdateMessage(SignalServiceEnvelope envelope, Sign
496500
{
497501
displayname = group.Name;
498502
}
499-
var dbgroup = SignalDBContext.InsertOrUpdateGroupLocked(groupid, displayname, avatarfile, true, 0, timestamp);
503+
var dbgroup = SignalDBContext.InsertOrUpdateGroupLocked(groupid, displayname, avatarfile, true, timestamp);
500504
if (group.Members != null)
501505
{
502506
foreach (var member in group.Members)
@@ -525,7 +529,7 @@ private async Task HandleGroupUpdateMessage(SignalServiceEnvelope envelope, Sign
525529
{
526530
status = 0;
527531
type = SignalMessageDirection.Incoming;
528-
author = await SignalDBContext.GetOrCreateContactLocked(envelope.GetSource(), timestamp);
532+
author = await SignalDBContext.GetOrCreateContactLocked(content.Sender, timestamp);
529533
prefix = $"{author.ThreadDisplayName} has";
530534
composedTimestamp = envelope.GetTimestamp();
531535
}
@@ -589,7 +593,7 @@ private async Task HandleSignalMessage(SignalServiceEnvelope envelope, SignalSer
589593
Group = group,
590594
Timestamp = Util.CurrentTimeMillis()
591595
};
592-
await SignalLibHandle.Instance.OutgoingMessages.SendMessage(envelope.GetSourceAddress(), requestInfoMessage);
596+
SignalLibHandle.Instance.OutgoingQueue.Add(new SignalServiceDataMessageSendable(requestInfoMessage, envelope.GetSourceAddress()));
593597
}
594598
composedTimestamp = envelope.GetTimestamp();
595599
}
@@ -603,7 +607,7 @@ private async Task HandleSignalMessage(SignalServiceEnvelope envelope, SignalSer
603607
}
604608
else
605609
{
606-
conversation = await SignalDBContext.GetOrCreateContactLocked(envelope.GetSource(), timestamp);
610+
conversation = await SignalDBContext.GetOrCreateContactLocked(content.Sender, timestamp);
607611
composedTimestamp = envelope.GetTimestamp();
608612
}
609613
}
@@ -618,7 +622,7 @@ private async Task HandleSignalMessage(SignalServiceEnvelope envelope, SignalSer
618622
{
619623
status = 0;
620624
type = SignalMessageDirection.Incoming;
621-
author = await SignalDBContext.GetOrCreateContactLocked(envelope.GetSource(), timestamp);
625+
author = await SignalDBContext.GetOrCreateContactLocked(content.Sender, timestamp);
622626
}
623627

624628
if (author != null && author.Blocked)
@@ -633,7 +637,7 @@ private async Task HandleSignalMessage(SignalServiceEnvelope envelope, SignalSer
633637
Direction = type,
634638
Status = status,
635639
Author = author,
636-
Content = new SignalMessageContent() { Content = body },
640+
Content = new SignalMessageContent() { Content = body.Truncate(2000) },
637641
ThreadId = conversation.ThreadId,
638642
DeviceId = (uint)envelope.GetSourceDevice(),
639643
Receipts = 0,
@@ -655,7 +659,7 @@ private async Task HandleSignalMessage(SignalServiceEnvelope envelope, SignalSer
655659
SentFileName = pointer.FileName,
656660
ContentType = receivedAttachment.ContentType,
657661
Key = pointer.Key,
658-
Relay = pointer.Relay,
662+
Relay = null,
659663
StorageId = pointer.Id,
660664
Size = (long)pointer.Size,
661665
Digest = pointer.Digest
@@ -666,7 +670,7 @@ private async Task HandleSignalMessage(SignalServiceEnvelope envelope, SignalSer
666670
// Make sure to update attachments count
667671
message.AttachmentsCount = (uint)attachments.Count;
668672
}
669-
await SignalLibHandle.Instance.SaveAndDispatchSignalMessage(message, conversation);
673+
await SignalLibHandle.Instance.SaveAndDispatchSignalMessage(message, null, conversation);
670674
}
671675
}
672676
}

Signal-Windows.Lib/Models/SignalAttachment.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public SignalServiceAttachmentPointer ToAttachmentPointer()
2929
return new SignalServiceAttachmentPointer(StorageId,
3030
ContentType,
3131
Key,
32-
Relay,
3332
(uint)Util.ToIntExact(Size),
3433
null,
3534
0,

0 commit comments

Comments
 (0)