Reduce code duplication

pull/130/head
Niels Andriesse 5 years ago
parent eebff42412
commit 3479fc4333

@ -165,8 +165,8 @@ final class DeviceLinkingModal : Modal, DeviceLinkingSessionDelegate {
let linkingAuthorizationMessage = DeviceLinkingUtilities.getLinkingAuthorizationMessage(for: deviceLink)
ThreadUtil.enqueue(linkingAuthorizationMessage)
SSKEnvironment.shared.messageSender.send(linkingAuthorizationMessage, success: {
let _ = [SSKEnvironment.shared.syncManager.syncAllContacts(),
SSKEnvironment.shared.syncManager.syncAllGroups()]
SSKEnvironment.shared.syncManager.syncAllContacts()
SSKEnvironment.shared.syncManager.syncAllGroups()
}) { _ in
print("[Loki] Failed to send device link authorization message.")
}

@ -173,9 +173,8 @@ final class NewClosedGroupVC : UIViewController, UITableViewDataSource, UITableV
storage.dbReadConnection.readWrite { transaction in
masterHexEncodedPublicKey = storage.getMasterHexEncodedPublicKey(for: userHexEncodedPublicKey, in: transaction) ?? userHexEncodedPublicKey
}
let members = [String](selectedContacts) + [ masterHexEncodedPublicKey ]
let members = selectedContacts + [ masterHexEncodedPublicKey ]
let admins = [ masterHexEncodedPublicKey ]
let groupID = LKGroupUtilities.getEncodedClosedGroupIDAsData(Randomness.generateRandomBytes(kGroupIdLength)!.toHexString())
let group = TSGroupModel(title: name, memberIds: members, image: nil, groupId: groupID, groupType: .closedGroup, adminIds: admins)
let thread = TSGroupThread.getOrCreateThread(with: group)

@ -330,9 +330,8 @@ NSString *const kSyncManagerLastContactSyncKey = @"kTSStorageManagerOWSSyncManag
NSMutableArray<AnyPromise *> *promises = @[].mutableCopy;
[TSGroupThread enumerateCollectionObjectsUsingBlock:^(id obj, BOOL *stop) {
if (![obj isKindOfClass:[TSGroupThread class]]) {
if (![obj isKindOfClass:[TSContactThread class]]) {
OWSLogWarn(@"Ignoring non group thread in thread collection: %@", obj);
if (![obj isKindOfClass:[TSContactThread class]]) { // FIXME: Isn't this redundant?
OWSLogWarn(@"Ignoring non-group thread in thread collection: %@.", obj);
}
return;
}
@ -355,11 +354,11 @@ NSString *const kSyncManagerLastContactSyncKey = @"kTSStorageManagerOWSSyncManag
AnyPromise *promise = [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) {
[self.messageSender sendMessage:syncGroupsMessage
success:^{
OWSLogInfo(@"Successfully sent groups sync message.");
OWSLogInfo(@"Successfully sent group sync message.");
resolve(@(1));
}
failure:^(NSError *error) {
OWSLogError(@"Failed to send groups sync message with error: %@.", error);
OWSLogError(@"Failed to send group sync message due to error: %@.", error);
resolve(error);
}];
}];

@ -39,7 +39,7 @@ extern NSString *const TSGroupThread_NotificationKey_UniqueId;
- (BOOL)isLocalUserInGroup;
- (BOOL)isLocalUserInGroupWithTransaction:(YapDatabaseReadTransaction *)transaction;
- (BOOL)isUserInGroup:(NSString *)hexEncodedPublicKey transaction:(YapDatabaseReadWriteTransaction *)transaction;
- (BOOL)isUserAdminForGroup:(NSString *)hexEncodedPublicKey transaction:(YapDatabaseReadWriteTransaction *)transaction;
- (BOOL)isUserAdminInGroup:(NSString *)hexEncodedPublicKey transaction:(YapDatabaseReadWriteTransaction *)transaction;
// all group threads containing recipient as a member
+ (NSArray<TSGroupThread *> *)groupThreadsWithRecipientId:(NSString *)recipientId

@ -211,7 +211,7 @@ NSString *const TSGroupThread_NotificationKey_UniqueId = @"TSGroupThread_Notific
return [linkedDeviceHexEncodedPublicKeys intersectsSet:[NSSet setWithArray:self.groupModel.groupMemberIds]];
}
- (BOOL)isUserAdminForGroup:(NSString *)hexEncodedPublicKey transaction:(YapDatabaseReadWriteTransaction *)transaction
- (BOOL)isUserAdminInGroup:(NSString *)hexEncodedPublicKey transaction:(YapDatabaseReadWriteTransaction *)transaction
{
if (hexEncodedPublicKey == nil) { return NO; }
NSSet<NSString *> *linkedDeviceHexEncodedPublicKeys = [LKDatabaseUtilities getLinkedDeviceHexEncodedPublicKeysFor:hexEncodedPublicKey in:transaction];
@ -241,13 +241,13 @@ NSString *const TSGroupThread_NotificationKey_UniqueId = @"TSGroupThread_Notific
- (void)leaveGroupWithTransaction:(YapDatabaseReadWriteTransaction *)transaction
{
NSMutableSet<NSString *> *newGroupMemberIds = [NSMutableSet setWithArray:self.groupModel.groupMemberIds];
NSMutableSet<NSString *> *newGroupMemberIDs = [NSMutableSet setWithArray:self.groupModel.groupMemberIds];
NSString *userHexEncodedPublicKey = TSAccountManager.localNumber;
if (userHexEncodedPublicKey != nil) {
NSSet<NSString *> *linkedDeviceHexEncodedPublicKeys = [LKDatabaseUtilities getLinkedDeviceHexEncodedPublicKeysFor:userHexEncodedPublicKey in:transaction];
[newGroupMemberIds minusSet:linkedDeviceHexEncodedPublicKeys];
[newGroupMemberIDs minusSet:linkedDeviceHexEncodedPublicKeys];
}
self.groupModel.groupMemberIds = newGroupMemberIds.allObjects;
self.groupModel.groupMemberIds = newGroupMemberIDs.allObjects;
[self saveWithTransaction:transaction];
}

@ -73,9 +73,11 @@ NS_ASSUME_NONNULL_BEGIN
[self writeUInt32:groupDataLength];
[self writeData:groupData];
// if (avatarPng) {
// [self writeData:avatarPng];
// }
/*
if (avatarPng) {
[self writeData:avatarPng];
}
*/
}
@end

@ -21,12 +21,8 @@
let protoAsData = data[index..<(index+sizeAsInt)]
guard let proto = try? SSKProtoGroupDetails.parseData(protoAsData) else { break }
index += sizeAsInt
var groupModel = TSGroupModel.init(title: proto.name,
memberIds: proto.members,
image: nil,
groupId: proto.id,
groupType: GroupType.closedGroup,
adminIds: proto.admins)
var groupModel = TSGroupModel(title: proto.name, memberIds: proto.members, image: nil,
groupId: proto.id, groupType: GroupType.closedGroup, adminIds: proto.admins)
result.append(groupModel)
}
return result

@ -70,7 +70,7 @@ NS_ASSUME_NONNULL_BEGIN
SSKProtoSyncMessageGroups *_Nullable groupsProto = [groupsBuilder buildAndReturnError:&error];
if (error || !groupsProto) {
OWSFailDebug(@"could not build protobuf: %@", error);
OWSFailDebug(@"Couldn't build protobuf due to error: %@.", error);
return nil;
}

@ -1077,7 +1077,7 @@ NS_ASSUME_NONNULL_BEGIN
[self.identityManager throws_processIncomingSyncMessage:syncMessage.verified transaction:transaction];
} else if (syncMessage.contacts != nil) {
if (wasSentByMasterDevice && syncMessage.contacts.data.length > 0) {
OWSLogInfo(@"[Loki] Received contact sync message.");
[LKLogger print:@"[Loki] Received contact sync message."];
NSData *data = syncMessage.contacts.data;
ContactParser *parser = [[ContactParser alloc] initWithData:data];
NSArray<NSString *> *hexEncodedPublicKeys = [parser parseHexEncodedPublicKeys];
@ -1088,7 +1088,8 @@ NS_ASSUME_NONNULL_BEGIN
switch (friendRequestStatus) {
case LKThreadFriendRequestStatusNone: {
OWSMessageSender *messageSender = SSKEnvironment.shared.messageSender;
LKFriendRequestMessage *automatedFriendRequestMessage = [messageSender getMultiDeviceFriendRequestMessageForHexEncodedPublicKey:hexEncodedPublicKey inThread:thread transaction:transaction];
LKFriendRequestMessage *automatedFriendRequestMessage = [messageSender getMultiDeviceFriendRequestMessageForHexEncodedPublicKey:hexEncodedPublicKey transaction:transaction];
[automatedFriendRequestMessage saveWithTransaction:transaction];
[self.messageSenderJobQueue addMessage:automatedFriendRequestMessage transaction:transaction];
break;
}
@ -1105,7 +1106,7 @@ NS_ASSUME_NONNULL_BEGIN
}
} else if (syncMessage.groups != nil) {
if (wasSentByMasterDevice && syncMessage.groups.data.length > 0) {
OWSLogInfo(@"[Loki] Received group sync message.");
[LKLogger print:@"[Loki] Received group sync message."];
NSData *data = syncMessage.groups.data;
GroupParser *parser = [[GroupParser alloc] initWithData:data];
NSArray<TSGroupModel *> *groupModels = [parser parseGroupModels];
@ -1454,7 +1455,7 @@ NS_ASSUME_NONNULL_BEGIN
switch (dataMessage.group.type) {
case SSKProtoGroupContextTypeUpdate: {
if (oldGroupThread && ![oldGroupThread isUserAdminForGroup:hexEncodedPublicKey transaction:transaction]) {
if (oldGroupThread && ![oldGroupThread isUserAdminInGroup:hexEncodedPublicKey transaction:transaction]) {
[LKLogger print:[NSString stringWithFormat:@"[Loki] Received a group update from a non-admin user for %@; ignoring.", [LKGroupUtilities getEncodedGroupID:groupId]]];
return nil;
}

@ -100,8 +100,8 @@ NS_SWIFT_NAME(MessageSender)
failure:(void (^)(NSError *error))failureHandler;
- (OWSMessageSend *)getSessionRestoreMessageForHexEncodedPublicKey:(NSString *)hexEncodedPublicKey;
- (LKFriendRequestMessage *)getMultiDeviceFriendRequestMessageForHexEncodedPublicKey:(NSString *)hexEncodedPublicKey inThread:(TSContactThread *)thread transaction:(YapDatabaseReadWriteTransaction *)transaction;
- (OWSMessageSend *)getMultiDeviceFriendRequestMessageForHexEncodedPublicKey:(NSString *)hexEncodedPublicKey;
- (LKFriendRequestMessage *)getMultiDeviceFriendRequestMessageForHexEncodedPublicKey:(NSString *)hexEncodedPublicKey transaction:(YapDatabaseReadWriteTransaction *)transaction;
- (void)sendMessage:(OWSMessageSend *)messageSend;
@end

@ -937,9 +937,9 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
return [[OWSMessageSend alloc] initWithMessage:message thread:thread recipient:recipient senderCertificate:senderCertificate udAccess:theirUDAccess localNumber:userHexEncodedPublicKey success:^{ } failure:^(NSError *error) { }];
}
- (LKFriendRequestMessage *)getMultiDeviceFriendRequestMessageForHexEncodedPublicKey:(NSString *)hexEncodedPublicKey inThread:(TSContactThread *)thread transaction:(YapDatabaseReadWriteTransaction *)transaction
- (LKFriendRequestMessage *)getMultiDeviceFriendRequestMessageForHexEncodedPublicKey:(NSString *)hexEncodedPublicKey transaction:(YapDatabaseReadWriteTransaction *)transaction
{
thread = [TSContactThread getOrCreateThreadWithContactId:hexEncodedPublicKey transaction:transaction];
TSContactThread *thread = [TSContactThread getOrCreateThreadWithContactId:hexEncodedPublicKey transaction:transaction];
// Force hide slave device thread
NSString *masterHexEncodedPublicKey = [LKDatabaseUtilities getMasterHexEncodedPublicKeyFor:hexEncodedPublicKey in:transaction];
thread.isForceHidden = masterHexEncodedPublicKey != nil && ![masterHexEncodedPublicKey isEqualToString:hexEncodedPublicKey];
@ -950,26 +950,17 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
LKFriendRequestMessage *message = [[LKFriendRequestMessage alloc] initOutgoingMessageWithTimestamp:NSDate.ows_millisecondTimeStamp inThread:thread messageBody:@"Please accept to enable messages to be synced across devices" attachmentIds:[NSMutableArray new]
expiresInSeconds:0 expireStartedAt:0 isVoiceMessage:NO groupMetaMessage:TSGroupMetaMessageUnspecified quotedMessage:nil contactShare:nil linkPreview:nil];
message.skipSave = YES;
[message saveWithTransaction:transaction];
return message;
}
- (OWSMessageSend *)getMultiDeviceFriendRequestMessageForHexEncodedPublicKey:(NSString *)hexEncodedPublicKey
{
__block TSContactThread *thread;
__block LKFriendRequestMessage *message;
[OWSPrimaryStorage.sharedManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
thread = [TSContactThread getOrCreateThreadWithContactId:hexEncodedPublicKey transaction:transaction];
// Force hide slave device thread
NSString *masterHexEncodedPublicKey = [LKDatabaseUtilities getMasterHexEncodedPublicKeyFor:hexEncodedPublicKey in:transaction];
thread.isForceHidden = masterHexEncodedPublicKey != nil && ![masterHexEncodedPublicKey isEqualToString:hexEncodedPublicKey];
if (thread.friendRequestStatus == LKThreadFriendRequestStatusNone || thread.friendRequestStatus == LKThreadFriendRequestStatusRequestExpired) {
[thread saveFriendRequestStatus:LKThreadFriendRequestStatusRequestSent withTransaction:transaction];
}
[thread saveWithTransaction:transaction];
message = [self getMultiDeviceFriendRequestMessageForHexEncodedPublicKey:hexEncodedPublicKey transaction:transaction];
}];
LKFriendRequestMessage *message = [[LKFriendRequestMessage alloc] initOutgoingMessageWithTimestamp:NSDate.ows_millisecondTimeStamp inThread:thread messageBody:@"Please accept to enable messages to be synced across devices" attachmentIds:[NSMutableArray new]
expiresInSeconds:0 expireStartedAt:0 isVoiceMessage:NO groupMetaMessage:TSGroupMetaMessageUnspecified quotedMessage:nil contactShare:nil linkPreview:nil];
message.skipSave = YES;
SignalRecipient *recipient = [[SignalRecipient alloc] initWithUniqueId:hexEncodedPublicKey];
NSString *userHexEncodedPublicKey = OWSIdentityManager.sharedManager.identityKeyPair.hexEncodedPublicKey;
SMKSenderCertificate *senderCertificate = [self.udManager getSenderCertificate];

Loading…
Cancel
Save