pull/63/head
Niels Andriesse 6 years ago
parent a7ae93bdd7
commit cc73937856

@ -148,6 +148,7 @@ final class DeviceLinkingModal : Modal, DeviceLinkingSessionDelegate {
LokiStorageAPI.addDeviceLink(signedDeviceLink).catch { error in
print("[Loki] Failed to add device link due to error: \(error).")
}
let _ = SSKEnvironment.shared.syncManager.syncAllContacts()
}
func handleDeviceLinkAuthorized(_ deviceLink: DeviceLink) {

@ -21,6 +21,7 @@
#import <SignalServiceKit/SignalServiceKit-Swift.h>
#import <SignalServiceKit/TSAccountManager.h>
#import <SignalServiceKit/YapDatabaseConnection+OWS.h>
#import <SignalServiceKit/TSContactThread.h>
NS_ASSUME_NONNULL_BEGIN
@ -265,32 +266,27 @@ NSString *const kSyncManagerLastContactSyncKey = @"kTSStorageManagerOWSSyncManag
- (AnyPromise *)syncAllContacts
{
return [self syncContactsForSignalAccounts:self.contactsManager.signalAccounts];
NSMutableArray<SignalAccount *> *friends = @[].mutableCopy;
[TSContactThread enumerateCollectionObjectsUsingBlock:^(TSContactThread *thread, BOOL *stop) {
NSString *hexEncodedPublicKey = thread.contactIdentifier;
if (hexEncodedPublicKey != nil) {
[friends addObject:[[SignalAccount alloc] initWithRecipientId:hexEncodedPublicKey]];
}
}];
return [self syncContactsForSignalAccounts:friends];
}
- (AnyPromise *)syncContactsForSignalAccounts:(NSArray<SignalAccount *> *)signalAccounts
{
OWSSyncContactsMessage *syncContactsMessage =
[[OWSSyncContactsMessage alloc] initWithSignalAccounts:signalAccounts
identityManager:self.identityManager
profileManager:self.profileManager];
__block DataSource *dataSource;
[self.readDatabaseConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
dataSource = [DataSourceValue
dataSourceWithSyncMessageData:[syncContactsMessage
buildPlainTextAttachmentDataWithTransaction:transaction]];
}];
OWSSyncContactsMessage *syncContactsMessage = [[OWSSyncContactsMessage alloc] initWithSignalAccounts:signalAccounts identityManager:self.identityManager profileManager:self.profileManager];
AnyPromise *promise = [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) {
[self.messageSender sendTemporaryAttachment:dataSource
contentType:OWSMimeTypeApplicationOctetStream
inMessage:syncContactsMessage
[self.messageSender sendMessage:syncContactsMessage
success:^{
OWSLogInfo(@"Successfully sent contacts sync message.");
resolve(@(1));
}
failure:^(NSError *error) {
OWSLogError(@"Failed to send contacts sync message with error: %@", error);
OWSLogError(@"Failed to send contacts sync message with error: %@.", error);
resolve(error);
}];
}];

@ -28,12 +28,11 @@ NS_ASSUME_NONNULL_BEGIN
disappearingMessagesConfiguration:(nullable OWSDisappearingMessagesConfiguration *)disappearingMessagesConfiguration
{
OWSAssertDebug(signalAccount);
OWSAssertDebug(signalAccount.contact);
OWSAssertDebug(contactsManager);
SSKProtoContactDetailsBuilder *contactBuilder =
[SSKProtoContactDetails builderWithNumber:signalAccount.recipientId];
[contactBuilder setName:signalAccount.contact.fullName];
[contactBuilder setName:[LKDisplayNameUtilities getPrivateChatDisplayNameFor:signalAccount.recipientId] ?: signalAccount.recipientId];
[contactBuilder setColor:conversationColorName];
if (recipientIdentity != nil) {
@ -48,6 +47,7 @@ disappearingMessagesConfiguration:(nullable OWSDisappearingMessagesConfiguration
contactBuilder.verified = verified;
}
/*
UIImage *_Nullable rawAvatar = [contactsManager avatarImageForCNContactId:signalAccount.contact.cnContactId];
NSData *_Nullable avatarPng;
if (rawAvatar) {
@ -66,6 +66,7 @@ disappearingMessagesConfiguration:(nullable OWSDisappearingMessagesConfiguration
[contactBuilder setAvatar:avatar];
}
}
*/
if (profileKeyData) {
OWSAssertDebug(profileKeyData.length == kAES256_KeyByteLength);
@ -96,9 +97,11 @@ disappearingMessagesConfiguration:(nullable OWSDisappearingMessagesConfiguration
[self writeVariableLengthUInt32:contactDataLength];
[self writeData:contactData];
/*
if (avatarPng) {
[self writeData:avatarPng];
}
*/
}
@end

@ -16,6 +16,7 @@
#import "TSContactThread.h"
#import <SignalCoreKit/NSDate+OWS.h>
#import <SignalServiceKit/SignalServiceKit-Swift.h>
#import "OWSPrimaryStorage.h"
@import Contacts;
@ -66,25 +67,33 @@ NS_ASSUME_NONNULL_BEGIN
- (nullable SSKProtoSyncMessageBuilder *)syncMessageBuilder
{
if (self.attachmentIds.count != 1) {
OWSLogError(@"expected sync contact message to have exactly one attachment, but found %lu",
(unsigned long)self.attachmentIds.count);
if (self.attachmentIds.count > 1) {
OWSLogError(@"Expected sync contact message to have one or zero attachments, but found %lu.", (unsigned long)self.attachmentIds.count);
}
SSKProtoAttachmentPointer *_Nullable attachmentProto =
[TSAttachmentStream buildProtoForAttachmentId:self.attachmentIds.firstObject];
if (!attachmentProto) {
OWSFailDebug(@"could not build protobuf.");
return nil;
SSKProtoSyncMessageContactsBuilder *contactsBuilder;
if (self.attachmentIds.count == 0) {
SSKProtoAttachmentPointer *attachmentProto = [SSKProtoAttachmentPointer builderWithId:0];
contactsBuilder = [SSKProtoSyncMessageContacts builderWithBlob:attachmentProto];
__block NSData *data;
[OWSPrimaryStorage.sharedManager.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
data = [self buildPlainTextAttachmentDataWithTransaction:transaction];
}];
[contactsBuilder setData:data];
} else {
SSKProtoAttachmentPointer *attachmentProto = [TSAttachmentStream buildProtoForAttachmentId:self.attachmentIds.firstObject];
if (attachmentProto == nil) {
OWSFailDebug(@"Couldn't build protobuf.");
return nil;
}
contactsBuilder = [SSKProtoSyncMessageContacts builderWithBlob:attachmentProto];
}
SSKProtoSyncMessageContactsBuilder *contactsBuilder = [SSKProtoSyncMessageContacts builderWithBlob:attachmentProto];
[contactsBuilder setIsComplete:YES];
NSError *error;
SSKProtoSyncMessageContacts *_Nullable contactsProto = [contactsBuilder buildAndReturnError:&error];
if (error || !contactsProto) {
OWSFailDebug(@"could not build protobuf: %@", error);
SSKProtoSyncMessageContacts *contactsProto = [contactsBuilder buildAndReturnError:&error];
if (error || contactsProto == nil) {
OWSFailDebug(@"Couldn't build protobuf due to error: %@.", error);
return nil;
}
SSKProtoSyncMessageBuilder *syncMessageBuilder = [SSKProtoSyncMessage builder];

Loading…
Cancel
Save