Clean
This commit is contained in:
parent
0f0eba9325
commit
7762418ac1
|
@ -1618,7 +1618,7 @@ static NSTimeInterval launchStartedAt;
|
|||
if (!isChatSetUp || !chat.isDeletable) {
|
||||
[LKPublicChatManager.shared addChatWithServer:chat.server channel:chat.channel name:chat.displayName];
|
||||
[OWSPrimaryStorage.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
TSGroupThread *thread = [TSGroupThread threadWithGroupId:[LKGroupUtil getEncodedPublichChatGroupIdAsData:chat.id] transaction:transaction];
|
||||
TSGroupThread *thread = [TSGroupThread threadWithGroupId:[LKGroupUtilities getEncodedOpenGroupIDAsData:chat.id] transaction:transaction];
|
||||
if (thread != nil) { [OWSProfileManager.sharedManager addThreadToProfileWhitelist:thread]; }
|
||||
}];
|
||||
[NSUserDefaults.standardUserDefaults setBool:YES forKey:userDefaultsKey];
|
||||
|
@ -1634,7 +1634,7 @@ static NSTimeInterval launchStartedAt;
|
|||
NSString *userDefaultsKey = [@"isRSSFeedSetUp." stringByAppendingString:feed.id];
|
||||
BOOL isFeedSetUp = [NSUserDefaults.standardUserDefaults boolForKey:userDefaultsKey];
|
||||
if (!isFeedSetUp || !feed.isDeletable) {
|
||||
TSGroupModel *group = [[TSGroupModel alloc] initWithTitle:feed.displayName memberIds:@[ userHexEncodedPublicKey, feed.server ] image:nil groupId:[LKGroupUtil getEncodedRssFeedGroupIdAsData:feed.id] groupType:RSS_FEED adminIds:@[ userHexEncodedPublicKey, feed.server ]];
|
||||
TSGroupModel *group = [[TSGroupModel alloc] initWithTitle:feed.displayName memberIds:@[ userHexEncodedPublicKey, feed.server ] image:nil groupId:[LKGroupUtilities getEncodedRSSFeedIDAsData:feed.id] groupType:rssFeed adminIds:@[ userHexEncodedPublicKey, feed.server ]];
|
||||
__block TSGroupThread *thread;
|
||||
[OWSPrimaryStorage.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
thread = [TSGroupThread getOrCreateThreadWithGroupModel:group transaction:transaction];
|
||||
|
@ -1650,7 +1650,7 @@ static NSTimeInterval launchStartedAt;
|
|||
// Only create the RSS feed pollers if their threads aren't deleted
|
||||
__block TSGroupThread *lokiNewsFeedThread;
|
||||
[OWSPrimaryStorage.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
lokiNewsFeedThread = [TSGroupThread threadWithGroupId:[LKGroupUtil getEncodedRssFeedGroupIdAsData:self.lokiNewsFeed.id] transaction:transaction];
|
||||
lokiNewsFeedThread = [TSGroupThread threadWithGroupId:[LKGroupUtilities getEncodedRSSFeedIDAsData:self.lokiNewsFeed.id] transaction:transaction];
|
||||
}];
|
||||
if (lokiNewsFeedThread != nil && self.lokiNewsFeedPoller == nil) {
|
||||
self.lokiNewsFeedPoller = [[LKRSSFeedPoller alloc] initForFeed:self.lokiNewsFeed];
|
||||
|
@ -1672,7 +1672,7 @@ static NSTimeInterval launchStartedAt;
|
|||
NSDictionary *userInfo = notification.userInfo;
|
||||
NSString *threadID = (NSString *)userInfo[@"threadId"];
|
||||
if (threadID == nil) { return; }
|
||||
if ([threadID isEqualToString:[TSGroupThread threadIdFromGroupId:[LKGroupUtil getEncodedRssFeedGroupIdAsData:self.lokiNewsFeed.id]]] && self.lokiNewsFeedPoller != nil) {
|
||||
if ([threadID isEqualToString:[TSGroupThread threadIdFromGroupId:[LKGroupUtilities getEncodedRSSFeedIDAsData:self.lokiNewsFeed.id]]] && self.lokiNewsFeedPoller != nil) {
|
||||
[self.lokiNewsFeedPoller stop];
|
||||
self.lokiNewsFeedPoller = nil;
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ public final class LokiRSSFeedPoller : NSObject {
|
|||
guard let bodyAsData = bodyAsHTML.data(using: String.Encoding.unicode) else { return }
|
||||
let options = [ NSAttributedString.DocumentReadingOptionKey.documentType : NSAttributedString.DocumentType.html ]
|
||||
guard let body = try? NSAttributedString(data: bodyAsData, options: options, documentAttributes: nil).string else { return }
|
||||
let id = LKGroupUtil.getEncodedRssFeedGroupId(asData: feed.id)
|
||||
let id = LKGroupUtilities.getEncodedRSSFeedIDAsData(feed.id)
|
||||
let groupContext = SSKProtoGroupContext.builder(id: id, type: .deliver)
|
||||
groupContext.setName(feed.displayName)
|
||||
let dataMessage = SSKProtoDataMessage.builder()
|
||||
|
|
|
@ -252,8 +252,9 @@ final class HomeVC : UIViewController, UITableViewDataSource, UITableViewDelegat
|
|||
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(openSettings))
|
||||
profilePictureView.addGestureRecognizer(tapGestureRecognizer)
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: profilePictureView)
|
||||
// let createPrivateGroupChatButton = UIBarButtonItem(image: #imageLiteral(resourceName: "People"), style: .plain, target: self, action: #selector(createPrivateGroupChat))
|
||||
// createPrivateGroupChatButton.tintColor = Colors.text
|
||||
let newClosedGroupButton = UIBarButtonItem(image: #imageLiteral(resourceName: "btnGroup--white"), style: .plain, target: self, action: #selector(createClosedGroup))
|
||||
newClosedGroupButton.tintColor = Colors.text
|
||||
navigationItem.rightBarButtonItem = newClosedGroupButton
|
||||
let joinPublicChatButton = UIBarButtonItem(image: #imageLiteral(resourceName: "Globe"), style: .plain, target: self, action: #selector(joinPublicChat))
|
||||
joinPublicChatButton.tintColor = Colors.text
|
||||
navigationItem.rightBarButtonItems = [ /*createPrivateGroupChatButton,*/ joinPublicChatButton ]
|
||||
|
@ -362,8 +363,10 @@ final class HomeVC : UIViewController, UITableViewDataSource, UITableViewDelegat
|
|||
present(navigationController, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
@objc private func createPrivateGroupChat() {
|
||||
// TODO: Implement
|
||||
@objc private func createClosedGroup() {
|
||||
let newClosedGroupVC = NewGroupViewController()
|
||||
let navigationController = OWSNavigationController(rootViewController: newClosedGroupVC)
|
||||
present(navigationController, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
@objc func createPrivateChat() {
|
||||
|
|
|
@ -57,10 +57,6 @@ final class NewPrivateChatVC : UIViewController, UIPageViewControllerDataSource,
|
|||
let closeButton = UIBarButtonItem(image: #imageLiteral(resourceName: "X"), style: .plain, target: self, action: #selector(close))
|
||||
closeButton.tintColor = Colors.text
|
||||
navigationItem.leftBarButtonItem = closeButton
|
||||
|
||||
let newPrivateGroupButton = UIBarButtonItem(image: #imageLiteral(resourceName: "btnGroup--white"), style: .plain, target: self, action: #selector(showNewPrivateGroupVC))
|
||||
newPrivateGroupButton.tintColor = Colors.text
|
||||
navigationItem.rightBarButtonItem = newPrivateGroupButton
|
||||
// Customize title
|
||||
let titleLabel = UILabel()
|
||||
titleLabel.text = NSLocalizedString("New Session", comment: "")
|
||||
|
@ -137,12 +133,6 @@ final class NewPrivateChatVC : UIViewController, UIPageViewControllerDataSource,
|
|||
dismiss(animated: true, completion: nil)
|
||||
}
|
||||
|
||||
// Loki - Show the VC of creating new private group chat
|
||||
@objc private func showNewPrivateGroupVC() {
|
||||
let newPrivateGroupVC = NewGroupViewController()
|
||||
navigationController?.pushViewController(newPrivateGroupVC, animated: true)
|
||||
}
|
||||
|
||||
func controller(_ controller: OWSQRCodeScanningViewController, didDetectQRCodeWith string: String) {
|
||||
let hexEncodedPublicKey = string
|
||||
startNewPrivateChatIfPossible(with: hexEncodedPublicKey)
|
||||
|
|
|
@ -126,7 +126,7 @@
|
|||
#import <SignalServiceKit/TSPreKeyManager.h>
|
||||
#import <SignalServiceKit/TSSocketManager.h>
|
||||
#import <SignalServiceKit/TSThread.h>
|
||||
#import <SignalServiceKit/LKGroupUtil.h>
|
||||
#import <SignalServiceKit/LKGroupUtilities.h>
|
||||
#import <SignalServiceKit/UIImage+OWS.h>
|
||||
#import <WebRTC/RTCAudioSession.h>
|
||||
#import <WebRTC/RTCCameraPreviewView.h>
|
||||
|
|
|
@ -4555,7 +4555,6 @@ typedef enum : NSUInteger {
|
|||
quotedReplyModel:self.inputToolbar.quotedReply
|
||||
linkPreviewDraft:self.inputToolbar.linkPreviewDraft
|
||||
transaction:transaction];
|
||||
OWSLogInfo(@"message generated here %@ %@", message.body, message.recipientIds[0]);
|
||||
}];
|
||||
[self.conversationViewModel appendUnsavedOutgoingTextMessage:message];
|
||||
|
||||
|
|
|
@ -106,12 +106,11 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
NSMutableArray<NSString *> *recipientIds = [@[
|
||||
unregisteredRecipientId,
|
||||
validRecipientId,
|
||||
[TSAccountManager localNumber],
|
||||
TSAccountManager.localNumber,
|
||||
] mutableCopy];
|
||||
NSData *groupId = [Randomness generateRandomBytes:16];
|
||||
//TODO: Figure out if this is correct
|
||||
TSGroupModel *model =
|
||||
[[TSGroupModel alloc] initWithTitle:groupName memberIds:recipientIds image:nil groupId:groupId groupType:SIGNAL adminIds:@[ [TSAccountManager localNumber] ]];
|
||||
// TODO: Figure out if this is correct
|
||||
TSGroupModel *model = [[TSGroupModel alloc] initWithTitle:groupName memberIds:recipientIds image:nil groupId:groupId groupType:closedGroup adminIds:@[ TSAccountManager.localNumber ]];
|
||||
TSGroupThread *thread = [TSGroupThread getOrCreateThreadWithGroupModel:model];
|
||||
|
||||
[SignalApp.sharedApp presentConversationForThread:thread animated:YES];
|
||||
|
|
|
@ -3875,12 +3875,11 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
|
|||
NSString *groupName = [NSUUID UUID].UUIDString;
|
||||
NSMutableArray<NSString *> *recipientIds = [@[
|
||||
recipientId,
|
||||
[TSAccountManager localNumber],
|
||||
TSAccountManager.localNumber,
|
||||
] mutableCopy];
|
||||
NSData *groupId = [Randomness generateRandomBytes:kGroupIdLength];
|
||||
//TODO: Figure out if this is correct
|
||||
TSGroupModel *groupModel =
|
||||
[[TSGroupModel alloc] initWithTitle:groupName memberIds:recipientIds image:nil groupId:groupId groupType:SIGNAL adminIds:@[ [TSAccountManager localNumber] ]];
|
||||
// TODO: Figure out if this is correct
|
||||
TSGroupModel *groupModel = [[TSGroupModel alloc] initWithTitle:groupName memberIds:recipientIds image:nil groupId:groupId groupType:closedGroup adminIds:@[ TSAccountManager.localNumber ]];
|
||||
|
||||
__block TSGroupThread *thread;
|
||||
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
|
@ -4276,7 +4275,7 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
|
|||
@(now - 2 * (long long)kMonthInMs),
|
||||
];
|
||||
NSMutableArray<NSString *> *recipientIds = [thread.recipientIdentifiers mutableCopy];
|
||||
[recipientIds removeObject:[TSAccountManager localNumber]];
|
||||
[recipientIds removeObject:TSAccountManager.localNumber];
|
||||
NSString *recipientId = (recipientIds.count > 0 ? recipientIds.firstObject : @"+19174054215");
|
||||
|
||||
[OWSPrimaryStorage.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
|
@ -4382,12 +4381,12 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
|
|||
NSString *groupName = string;
|
||||
NSMutableArray<NSString *> *recipientIds = [@[
|
||||
recipientId,
|
||||
[TSAccountManager localNumber],
|
||||
TSAccountManager.localNumber,
|
||||
] mutableCopy];
|
||||
NSData *groupId = [Randomness generateRandomBytes:kGroupIdLength];
|
||||
//TODO: Figure out if this is correct
|
||||
// TODO: Figure out if this is correct
|
||||
TSGroupModel *groupModel =
|
||||
[[TSGroupModel alloc] initWithTitle:groupName memberIds:recipientIds image:nil groupId:groupId groupType:SIGNAL adminIds:@[ [TSAccountManager localNumber] ]];
|
||||
[[TSGroupModel alloc] initWithTitle:groupName memberIds:recipientIds image:nil groupId:groupId groupType:closedGroup adminIds:@[ TSAccountManager.localNumber ]];
|
||||
|
||||
TSGroupThread *groupThread =
|
||||
[TSGroupThread getOrCreateThreadWithGroupModel:groupModel transaction:transaction];
|
||||
|
@ -4424,12 +4423,12 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
|
|||
NSString *groupName = string;
|
||||
NSMutableArray<NSString *> *recipientIds = [@[
|
||||
recipientId,
|
||||
[TSAccountManager localNumber],
|
||||
TSAccountManager.localNumber,
|
||||
] mutableCopy];
|
||||
NSData *groupId = [Randomness generateRandomBytes:kGroupIdLength];
|
||||
//TODO: Figure out if this is correct
|
||||
// TODO: Figure out if this is correct
|
||||
TSGroupModel *groupModel =
|
||||
[[TSGroupModel alloc] initWithTitle:groupName memberIds:recipientIds image:nil groupId:groupId groupType:SIGNAL adminIds:@[ [TSAccountManager localNumber] ]];
|
||||
[[TSGroupModel alloc] initWithTitle:groupName memberIds:recipientIds image:nil groupId:groupId groupType:closedGroup adminIds:@[ TSAccountManager.localNumber ]];
|
||||
|
||||
TSGroupThread *groupThread =
|
||||
[TSGroupThread getOrCreateThreadWithGroupModel:groupModel transaction:transaction];
|
||||
|
@ -4464,12 +4463,12 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
|
|||
NSString *groupName = string;
|
||||
NSMutableArray<NSString *> *recipientIds = [@[
|
||||
recipientId,
|
||||
[TSAccountManager localNumber],
|
||||
TSAccountManager.localNumber,
|
||||
] mutableCopy];
|
||||
NSData *groupId = [Randomness generateRandomBytes:kGroupIdLength];
|
||||
//TODO: Figure out if this is correct
|
||||
// TODO: Figure out if this is correct
|
||||
TSGroupModel *groupModel =
|
||||
[[TSGroupModel alloc] initWithTitle:groupName memberIds:recipientIds image:nil groupId:groupId groupType:SIGNAL adminIds:@[ [TSAccountManager localNumber] ]];
|
||||
[[TSGroupModel alloc] initWithTitle:groupName memberIds:recipientIds image:nil groupId:groupId groupType:closedGroup adminIds:@[ TSAccountManager.localNumber ]];
|
||||
|
||||
TSGroupThread *groupThread =
|
||||
[TSGroupThread getOrCreateThreadWithGroupModel:groupModel transaction:transaction];
|
||||
|
|
|
@ -530,13 +530,13 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
__block TSGroupThread *thread;
|
||||
[OWSPrimaryStorage.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
//TODO: Figure out if this is correct
|
||||
// TODO: Figure out if this is correct
|
||||
TSGroupModel *groupModel =
|
||||
[[TSGroupModel alloc] initWithTitle:[groupThread.groupModel.groupName stringByAppendingString:@" Copy"]
|
||||
memberIds:groupThread.groupModel.groupMemberIds
|
||||
image:groupThread.groupModel.groupImage
|
||||
groupId:[Randomness generateRandomBytes:kGroupIdLength]
|
||||
groupType:SIGNAL
|
||||
groupType:closedGroup
|
||||
adminIds:groupThread.groupModel.groupAdminIds];
|
||||
thread = [TSGroupThread getOrCreateThreadWithGroupModel:groupModel transaction:transaction];
|
||||
}];
|
||||
|
@ -561,12 +561,12 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
__block TSGroupThread *thread;
|
||||
[OWSPrimaryStorage.dbReadWriteConnection readWriteWithBlock:^(
|
||||
YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
//TODO: Figure out if this is correct
|
||||
// TODO: Figure out if this is correct
|
||||
TSGroupModel *groupModel = [[TSGroupModel alloc] initWithTitle:NSUUID.UUID.UUIDString
|
||||
memberIds:recipientIds
|
||||
image:nil
|
||||
groupId:[Randomness generateRandomBytes:kGroupIdLength]
|
||||
groupType:SIGNAL adminIds:@[ self.tsAccountManager.localNumber ]];
|
||||
groupType:closedGroup adminIds:@[ self.tsAccountManager.localNumber ]];
|
||||
thread = [TSGroupThread getOrCreateThreadWithGroupModel:groupModel transaction:transaction];
|
||||
}];
|
||||
OWSAssertDebug(thread);
|
||||
|
|
|
@ -88,8 +88,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
- (void)commonInit
|
||||
{
|
||||
_groupId = [LKGroupUtil getEncodedSignalGroupIdAsData:[[Randomness generateRandomBytes:kGroupIdLength] hexadecimalString]];
|
||||
_groupType = SIGNAL;
|
||||
_groupId = [LKGroupUtilities getEncodedClosedGroupIDAsData:[[Randomness generateRandomBytes:kGroupIdLength] hexadecimalString]];
|
||||
_groupType = closedGroup;
|
||||
|
||||
_messageSender = SSKEnvironment.shared.messageSender;
|
||||
_contactsViewHelper = [[ContactsViewHelper alloc] initWithDelegate:self];
|
||||
|
|
|
@ -188,12 +188,10 @@ const CGFloat kIconViewLength = 24;
|
|||
-(BOOL)isPrivateGroupChat
|
||||
{
|
||||
if (self.isGroupThread) {
|
||||
TSGroupThread *thread = (TSGroupThread*)self.thread;
|
||||
if (thread.isRSSFeed || thread.isPublicChat) {
|
||||
return false;
|
||||
}
|
||||
TSGroupThread *thread = (TSGroupThread *)self.thread;
|
||||
return !thread.isRSSFeed && !thread.isPublicChat;
|
||||
}
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
- (void)configureWithThread:(TSThread *)thread uiDatabaseConnection:(YapDatabaseConnection *)uiDatabaseConnection
|
||||
|
@ -1085,7 +1083,6 @@ const CGFloat kIconViewLength = 24;
|
|||
|
||||
- (void)showGroupMembersView
|
||||
{
|
||||
OWSLogInfo(@"Setting show thread");
|
||||
TSGroupThread *groupThread = (TSGroupThread *)self.thread;
|
||||
ShowGroupMembersViewController *showGroupMembersViewController = [ShowGroupMembersViewController new];
|
||||
[showGroupMembersViewController configWithThread:groupThread];
|
||||
|
|
|
@ -92,8 +92,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
OWSAssertDebug(self.thread.groupModel.groupMemberIds);
|
||||
|
||||
self.memberRecipientIds = [NSSet setWithArray:self.thread.groupModel.groupMemberIds];
|
||||
|
||||
OWSLogInfo(@"Setting show thread %@", self.thread.groupModel.groupName);
|
||||
}
|
||||
|
||||
- (void)viewDidLoad
|
||||
|
@ -114,7 +112,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
- (void)updateTableContents
|
||||
{
|
||||
// OWSLogInfo(@"Setting show thread %@", self.thread.groupModel.groupName);
|
||||
OWSAssertDebug(self.thread);
|
||||
|
||||
OWSTableContents *contents = [OWSTableContents new];
|
||||
|
|
|
@ -527,7 +527,6 @@ NSString *const kSelectRecipientViewControllerCellIdentifier = @"kSelectRecipien
|
|||
NSArray<SignalAccount *> *signalAccounts = helper.signalAccounts;
|
||||
if (signalAccounts.count == 0) {
|
||||
// No Contacts
|
||||
OWSLogInfo(@"NO SIGNAL ACCOUNTS AT ALL");
|
||||
[contactsSection
|
||||
addItem:[OWSTableItem softCenterLabelItemWithText:
|
||||
NSLocalizedString(@"SETTINGS_BLOCK_LIST_NO_CONTACTS",
|
||||
|
|
|
@ -189,7 +189,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
// Don't fire delegate "change" events during initialization.
|
||||
if (self.shouldNotifyDelegateOfUpdatedContacts) {
|
||||
OWSLogInfo(@"Fire delegate update function");
|
||||
[self.delegate contactsViewHelperDidUpdateContacts];
|
||||
self.hasUpdatedContactsAtLeastOnce = YES;
|
||||
}
|
||||
|
|
|
@ -174,7 +174,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
{
|
||||
[OWSPrimaryStorage.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction * _Nonnull transaction) {
|
||||
for (LKPublicChat *chat in LKPublicChatAPI.defaultChats) {
|
||||
TSGroupThread *thread = [TSGroupThread threadWithGroupId:[LKGroupUtil getEncodedPublichChatGroupIdAsData:chat.id] transaction:transaction];
|
||||
TSGroupThread *thread = [TSGroupThread threadWithGroupId:[LKGroupUtilities getEncodedOpenGroupIDAsData:chat.id] transaction:transaction];
|
||||
if (thread != nil) {
|
||||
[LKDatabaseUtilities setPublicChat:chat threadID:thread.uniqueId transaction:transaction];
|
||||
}
|
||||
|
@ -183,8 +183,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
//If the thread is still using the old group id, it needs to be updated.
|
||||
thread = [TSGroupThread threadWithGroupId:chat.idAsData transaction:transaction];
|
||||
if (thread != nil) {
|
||||
thread.groupModel.groupType = PUBLIC_CHAT;
|
||||
[thread.groupModel updateGroupId:[LKGroupUtil getEncodedPublichChatGroupIdAsData:chat.id]];
|
||||
thread.groupModel.groupType = openGroup;
|
||||
[thread.groupModel updateGroupId:[LKGroupUtilities getEncodedOpenGroupIDAsData:chat.id]];
|
||||
[thread saveWithTransaction:transaction];
|
||||
[LKDatabaseUtilities setPublicChat:chat threadID:thread.uniqueId transaction:transaction];
|
||||
}
|
||||
|
@ -197,8 +197,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
for (LKRSSFeed *feed in feeds) {
|
||||
TSGroupThread *thread = [TSGroupThread threadWithGroupId:[feed.id dataUsingEncoding:NSUTF8StringEncoding] transaction:transaction];
|
||||
if (thread != nil) {
|
||||
thread.groupModel.groupType = RSS_FEED;
|
||||
[thread.groupModel updateGroupId:[LKGroupUtil getEncodedRssFeedGroupIdAsData:feed.id]];
|
||||
thread.groupModel.groupType = rssFeed;
|
||||
[thread.groupModel updateGroupId:[LKGroupUtilities getEncodedRSSFeedIDAsData:feed.id]];
|
||||
[thread saveWithTransaction:transaction];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,8 +72,6 @@ typedef NS_ENUM(NSInteger, LKThreadFriendRequestStatus) {
|
|||
* @return YES if is a group thread, NO otherwise.
|
||||
*/
|
||||
- (BOOL)isGroupThread;
|
||||
//- (BOOL)isPublicChat;
|
||||
//- (BOOL)isRSSFeed;
|
||||
|
||||
/**
|
||||
* Returns the name of the thread.
|
||||
|
|
|
@ -92,14 +92,13 @@ ConversationColorName const kConversationColorName_Default = ConversationColorNa
|
|||
} else {
|
||||
_conversationColorName = [self.class stableColorNameForNewConversationWithString:self.uniqueId];
|
||||
}
|
||||
|
||||
_friendRequestStatus = LKThreadFriendRequestStatusNone;
|
||||
|
||||
// Loki - Friend request logic doesn't apply to group chats, always treat them as friends
|
||||
// Loki: Friend request logic doesn't apply to group chats
|
||||
if (self.isGroupThread) {
|
||||
_friendRequestStatus = LKThreadFriendRequestStatusFriends;
|
||||
} else {
|
||||
_friendRequestStatus = LKThreadFriendRequestStatusNone;
|
||||
}
|
||||
// OWSLogInfo(@"FRIEND REQUEST STATUS %@", self.friendRequestStatusDescription);
|
||||
}
|
||||
|
||||
return self;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
#import "TSGroupModel.h"
|
||||
#import "TSThread.h"
|
||||
#import "LKGroupUtil.h"
|
||||
#import "LKGroupUtilities.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ NSString *const TSGroupThread_NotificationKey_UniqueId = @"TSGroupThread_Notific
|
|||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithGroupId:(NSData *)groupId groupType:(GroupType) groupType
|
||||
- (instancetype)initWithGroupId:(NSData *)groupId groupType:(GroupType)groupType
|
||||
{
|
||||
OWSAssertDebug(groupId.length > 0);
|
||||
|
||||
|
@ -124,7 +124,7 @@ NSString *const TSGroupThread_NotificationKey_UniqueId = @"TSGroupThread_Notific
|
|||
+ (NSString *)threadIdFromGroupId:(NSData *)groupId
|
||||
{
|
||||
OWSAssertDebug(groupId.length > 0);
|
||||
return [TSGroupThreadPrefix stringByAppendingString:[[LKGroupUtil getDecodedGroupIdAsData:groupId] base64EncodedString]];
|
||||
return [TSGroupThreadPrefix stringByAppendingString:[[LKGroupUtilities getDecodedGroupIDAsData:groupId] base64EncodedString]];
|
||||
}
|
||||
|
||||
+ (NSData *)groupIdFromThreadId:(NSString *)threadId
|
||||
|
@ -132,7 +132,6 @@ NSString *const TSGroupThread_NotificationKey_UniqueId = @"TSGroupThread_Notific
|
|||
OWSAssertDebug(threadId.length > 0);
|
||||
|
||||
return [NSData dataFromBase64String:[threadId substringWithRange:NSMakeRange(1, threadId.length - 1)]];
|
||||
// return [NSData dataFromBase64String:[threadId componentsSeparatedByString:@"!"][1]];
|
||||
}
|
||||
|
||||
- (NSArray<NSString *> *)recipientIdentifiers
|
||||
|
@ -178,18 +177,12 @@ NSString *const TSGroupThread_NotificationKey_UniqueId = @"TSGroupThread_Notific
|
|||
|
||||
- (BOOL)isPublicChat
|
||||
{
|
||||
if (self.groupModel.groupType == PUBLIC_CHAT) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return (self.groupModel.groupType == openGroup);
|
||||
}
|
||||
|
||||
- (BOOL)isRSSFeed
|
||||
{
|
||||
if (self.groupModel.groupType == RSS_FEED) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return (self.groupModel.groupType == rssFeed);
|
||||
}
|
||||
|
||||
- (BOOL)isLocalUserInGroup
|
||||
|
@ -285,12 +278,6 @@ NSString *const TSGroupThread_NotificationKey_UniqueId = @"TSGroupThread_Notific
|
|||
return [self.class stableColorNameForNewConversationWithString:[self threadIdFromGroupId:groupId]];
|
||||
}
|
||||
|
||||
//- (BOOL)isRSSFeed
|
||||
//{
|
||||
// NSString *groupID = [[NSString alloc] initWithData:self.groupModel.groupId encoding:NSUTF8StringEncoding];
|
||||
// return groupID != nil && [groupID hasPrefix:@"rss://"];
|
||||
//}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
|
@ -66,7 +66,7 @@ public final class LokiPublicChatManager : NSObject {
|
|||
@objc(addChatWithServer:channel:name:)
|
||||
public func addChat(server: String, channel: UInt64, name: String) -> LokiPublicChat? {
|
||||
guard let chat = LokiPublicChat(channel: channel, server: server, displayName: name, isDeletable: true) else { return nil }
|
||||
let model = TSGroupModel(title: chat.displayName, memberIds: [userHexEncodedPublicKey!, chat.server], image: nil, groupId: LKGroupUtil .getEncodedPublichChatGroupId(asData: chat.id), groupType: .PUBLIC_CHAT, adminIds: [])
|
||||
let model = TSGroupModel(title: chat.displayName, memberIds: [userHexEncodedPublicKey!, chat.server], image: nil, groupId: LKGroupUtilities.getEncodedOpenGroupIDAsData(chat.id), groupType: .openGroup, adminIds: [])
|
||||
|
||||
// Store the group chat mapping
|
||||
self.storage.dbReadWriteConnection.readWrite { transaction in
|
||||
|
|
|
@ -90,7 +90,7 @@ public final class LokiPublicChatPoller : NSObject {
|
|||
} else {
|
||||
senderDisplayName = generateDisplayName(from: message.displayName)
|
||||
}
|
||||
let id = LKGroupUtil .getEncodedPublichChatGroupId(asData: publicChat.id)
|
||||
let id = LKGroupUtilities.getEncodedOpenGroupIDAsData(publicChat.id)
|
||||
let groupContext = SSKProtoGroupContext.builder(id: id, type: .deliver)
|
||||
groupContext.setName(publicChat.displayName)
|
||||
let dataMessage = SSKProtoDataMessage.builder()
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface LKGroupUtil : NSObject
|
||||
|
||||
+(NSString *)getEncodedPublichChatGroupId:(NSString *)groupId;
|
||||
+(NSData *)getEncodedPublichChatGroupIdAsData:(NSString *)groupId;
|
||||
|
||||
+(NSString *)getEncodedRssFeedGroupId:(NSString *)groupId;
|
||||
+(NSData *)getEncodedRssFeedGroupIdAsData:(NSString *)groupId;
|
||||
|
||||
+(NSString *)getEncodedSignalGroupId:(NSString *)groupId;
|
||||
+(NSData *)getEncodedSignalGroupIdAsData:(NSString *)groupId;
|
||||
|
||||
+(NSString *)getEncodedMmsGroupId:(NSString *)groupId;
|
||||
+(NSData *)getEncodedMmsGroupIdAsData:(NSString *)groupId;
|
||||
|
||||
+(NSString *)getEncodedGroupId:(NSData *)groupId;
|
||||
|
||||
+(NSString *)getDecodedGroupId:(NSData *)groupId;
|
||||
+(NSData *)getDecodedGroupIdAsData:(NSData *)groupId;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
|
@ -1,80 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import "LKGroupUtil.h"
|
||||
|
||||
@implementation LKGroupUtil
|
||||
|
||||
#define SignalGroupPrefix @"__textsecure_group__!"
|
||||
#define MmsGroupPrefix @"__signal_mms_group__!"
|
||||
#define PublicChatGroupPrefix @"__loki_public_chat_group__!"
|
||||
#define RssFeedGroupPrefix @"__loki_rss_feed_group__!"
|
||||
|
||||
+(NSString *)getEncodedPublichChatGroupId:(NSString *)groupId
|
||||
{
|
||||
return [PublicChatGroupPrefix stringByAppendingString:groupId];
|
||||
}
|
||||
|
||||
+(NSData *)getEncodedPublichChatGroupIdAsData:(NSString *)groupId
|
||||
{
|
||||
return [[PublicChatGroupPrefix stringByAppendingString:groupId] dataUsingEncoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
+(NSString *)getEncodedRssFeedGroupId:(NSString *)groupId
|
||||
{
|
||||
return [RssFeedGroupPrefix stringByAppendingString:groupId];
|
||||
}
|
||||
|
||||
+(NSData *)getEncodedRssFeedGroupIdAsData:(NSString *)groupId
|
||||
{
|
||||
return [[RssFeedGroupPrefix stringByAppendingString:groupId] dataUsingEncoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
+(NSString *)getEncodedSignalGroupId:(NSString *)groupId
|
||||
{
|
||||
return [SignalGroupPrefix stringByAppendingString:groupId];
|
||||
}
|
||||
|
||||
+(NSData *)getEncodedSignalGroupIdAsData:(NSString *)groupId
|
||||
{
|
||||
return [[SignalGroupPrefix stringByAppendingString:groupId] dataUsingEncoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
+(NSString *)getEncodedMmsGroupId:(NSString *)groupId
|
||||
{
|
||||
return [MmsGroupPrefix stringByAppendingString:groupId];
|
||||
}
|
||||
|
||||
+(NSData *)getEncodedMmsGroupIdAsData:(NSString *)groupId
|
||||
{
|
||||
return [[MmsGroupPrefix stringByAppendingString:groupId] dataUsingEncoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
+(NSString *)getEncodedGroupId: (NSData *)groupId
|
||||
{
|
||||
return [[NSString alloc]initWithData:groupId encoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
+(NSString *)getDecodedGroupId:(NSData *)groupId
|
||||
{
|
||||
OWSAssertDebug(groupId.length > 0);
|
||||
NSString *encodedGroupId = [[NSString alloc]initWithData:groupId encoding:NSUTF8StringEncoding];
|
||||
if ([encodedGroupId componentsSeparatedByString:@"1"].count > 1) {
|
||||
return [encodedGroupId componentsSeparatedByString:@"!"][1];
|
||||
}
|
||||
return [encodedGroupId componentsSeparatedByString:@"!"][0];
|
||||
}
|
||||
|
||||
+(NSData *)getDecodedGroupIdAsData:(NSData *)groupId
|
||||
{
|
||||
OWSAssertDebug(groupId.length > 0);
|
||||
NSString *encodedGroupId = [[NSString alloc]initWithData:groupId encoding:NSUTF8StringEncoding];
|
||||
NSString *decodedGroupId = [encodedGroupId componentsSeparatedByString:@"!"][0];
|
||||
if ([encodedGroupId componentsSeparatedByString:@"!"].count > 1) {
|
||||
decodedGroupId =[encodedGroupId componentsSeparatedByString:@"!"][1];
|
||||
}
|
||||
return [decodedGroupId dataUsingEncoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
@end
|
|
@ -1,7 +1,3 @@
|
|||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import "LKFriendRequestMessage.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import "LKSessionRequestMessage.h"
|
||||
#import <SignalCoreKit/NSDate+OWS.h>
|
||||
#import <SignalServiceKit/SignalServiceKit-Swift.h>
|
||||
|
||||
@implementation LKSessionRequestMessage
|
||||
|
||||
#pragma mark Initialization
|
||||
- (instancetype)initWithThread:(TSThread *)thread {
|
||||
return [self initOutgoingMessageWithTimestamp:NSDate.ows_millisecondTimeStamp inThread:thread messageBody:@"" attachmentIds:[NSMutableArray<NSString *> new]
|
||||
expiresInSeconds:0 expireStartedAt:0 isVoiceMessage:NO groupMetaMessage:TSGroupMetaMessageUnspecified quotedMessage:nil contactShare:nil linkPreview:nil];
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface LKGroupUtilities : NSObject
|
||||
|
||||
+(NSString *)getEncodedOpenGroupID:(NSString *)groupID;
|
||||
+(NSData *)getEncodedOpenGroupIDAsData:(NSString *)groupID;
|
||||
|
||||
+(NSString *)getEncodedRSSFeedID:(NSString *)groupID;
|
||||
+(NSData *)getEncodedRSSFeedIDAsData:(NSString *)groupID;
|
||||
|
||||
+(NSString *)getEncodedClosedGroupID:(NSString *)groupID;
|
||||
+(NSData *)getEncodedClosedGroupIDAsData:(NSString *)groupID;
|
||||
|
||||
+(NSString *)getEncodedMMSGroupID:(NSString *)groupID;
|
||||
+(NSData *)getEncodedMMSGroupIDAsData:(NSString *)groupID;
|
||||
|
||||
+(NSString *)getEncodedGroupID:(NSData *)groupID;
|
||||
|
||||
+(NSString *)getDecodedGroupID:(NSData *)groupID;
|
||||
+(NSData *)getDecodedGroupIDAsData:(NSData *)groupID;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
|
@ -0,0 +1,76 @@
|
|||
#import "LKGroupUtilities.h"
|
||||
|
||||
@implementation LKGroupUtilities
|
||||
|
||||
#define ClosedGroupPrefix @"__textsecure_group__!" // a.k.a. private group chat
|
||||
#define MMSGroupPrefix @"__signal_mms_group__!"
|
||||
#define OpenGroupPrefix @"__loki_public_chat_group__!" // a.k.a. public group chat
|
||||
#define RSSFeedPrefix @"__loki_rss_feed_group__!"
|
||||
|
||||
+(NSString *)getEncodedOpenGroupID:(NSString *)groupID
|
||||
{
|
||||
return [OpenGroupPrefix stringByAppendingString:groupID];
|
||||
}
|
||||
|
||||
+(NSData *)getEncodedOpenGroupIDAsData:(NSString *)groupID
|
||||
{
|
||||
return [[OpenGroupPrefix stringByAppendingString:groupID] dataUsingEncoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
+(NSString *)getEncodedRSSFeedID:(NSString *)groupID
|
||||
{
|
||||
return [RSSFeedPrefix stringByAppendingString:groupID];
|
||||
}
|
||||
|
||||
+(NSData *)getEncodedRSSFeedIDAsData:(NSString *)groupID
|
||||
{
|
||||
return [[RSSFeedPrefix stringByAppendingString:groupID] dataUsingEncoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
+(NSString *)getEncodedClosedGroupID:(NSString *)groupID
|
||||
{
|
||||
return [ClosedGroupPrefix stringByAppendingString:groupID];
|
||||
}
|
||||
|
||||
+(NSData *)getEncodedClosedGroupIDAsData:(NSString *)groupID
|
||||
{
|
||||
return [[ClosedGroupPrefix stringByAppendingString:groupID] dataUsingEncoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
+(NSString *)getEncodedMMSGroupID:(NSString *)groupID
|
||||
{
|
||||
return [MMSGroupPrefix stringByAppendingString:groupID];
|
||||
}
|
||||
|
||||
+(NSData *)getEncodedMMSGroupIDAsData:(NSString *)groupID
|
||||
{
|
||||
return [[MMSGroupPrefix stringByAppendingString:groupID] dataUsingEncoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
+(NSString *)getEncodedGroupID: (NSData *)groupID
|
||||
{
|
||||
return [[NSString alloc]initWithData:groupID encoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
+(NSString *)getDecodedGroupID:(NSData *)groupID
|
||||
{
|
||||
OWSAssertDebug(groupID.length > 0);
|
||||
NSString *encodedGroupID = [[NSString alloc] initWithData:groupID encoding:NSUTF8StringEncoding];
|
||||
if ([encodedGroupID componentsSeparatedByString:@"1"].count > 1) {
|
||||
return [encodedGroupID componentsSeparatedByString:@"!"][1];
|
||||
}
|
||||
return [encodedGroupID componentsSeparatedByString:@"!"][0];
|
||||
}
|
||||
|
||||
+(NSData *)getDecodedGroupIDAsData:(NSData *)groupID
|
||||
{
|
||||
OWSAssertDebug(groupID.length > 0);
|
||||
NSString *encodedGroupID = [[NSString alloc]initWithData:groupID encoding:NSUTF8StringEncoding];
|
||||
NSString *decodedGroupID = [encodedGroupID componentsSeparatedByString:@"!"][0];
|
||||
if ([encodedGroupID componentsSeparatedByString:@"!"].count > 1) {
|
||||
decodedGroupID = [encodedGroupID componentsSeparatedByString:@"!"][1];
|
||||
}
|
||||
return [decodedGroupID dataUsingEncoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
@end
|
|
@ -48,8 +48,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
// Skip the other processing for recipient updates.
|
||||
} else {
|
||||
if (self.dataMessage.group) {
|
||||
//TODO: Figure out if this is correct
|
||||
_thread = [TSGroupThread getOrCreateThreadWithGroupId:_dataMessage.group.id groupType:SIGNAL transaction:transaction];
|
||||
// TODO: Figure out if this is correct
|
||||
_thread = [TSGroupThread getOrCreateThreadWithGroupId:_dataMessage.group.id groupType:closedGroup transaction:transaction];
|
||||
} else {
|
||||
_thread = [TSContactThread getOrCreateThreadWithContactId:_recipientId transaction:transaction];
|
||||
}
|
||||
|
|
|
@ -1402,7 +1402,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
switch (dataMessage.group.type) {
|
||||
case SSKProtoGroupContextTypeUpdate: {
|
||||
if (oldGroupThread && ![oldGroupThread.groupModel.groupAdminIds containsObject:envelope.source]) {
|
||||
OWSLogWarn(@"Loki - Received a group update message from a non-admin user for %@ %@", [LKGroupUtil getEncodedGroupId:groupId], @". Ignoring.");
|
||||
OWSLogWarn(@"Loki - Received a group update message from a non-admin user for %@ %@", [LKGroupUtilities getEncodedGroupID:groupId], @". Ignoring.");
|
||||
return nil;
|
||||
}
|
||||
// Ensures that the thread exists but doesn't update it.
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef NS_ENUM(NSInteger, GroupType) {
|
||||
SIGNAL = 0,
|
||||
PUBLIC_CHAT = 1,
|
||||
RSS_FEED = 2
|
||||
closedGroup = 0, // a.k.a. private group chat
|
||||
openGroup = 1, // a.k.a. public group chat
|
||||
rssFeed = 2
|
||||
};
|
||||
|
||||
extern const int32_t kGroupIdLength;
|
||||
|
|
|
@ -12,4 +12,4 @@
|
|||
#import <SignalServiceKit/SSKJobRecord.h>
|
||||
#import <SignalServiceKit/TSOutgoingMessage.h>
|
||||
#import <SignalServiceKit/TSYapDatabaseObject.h>
|
||||
#import <SignalServiceKit/LKGroupUtil.h>
|
||||
#import <SignalServiceKit/LKGroupUtilities.h>
|
||||
|
|
|
@ -372,8 +372,8 @@ class GroupThreadFactory: NSObject, Factory {
|
|||
memberIds: groupThreadFactory.memberIdsBuilder(),
|
||||
image: groupThreadFactory.imageBuilder(),
|
||||
groupId: groupThreadFactory.groupIdBuilder(),
|
||||
groupType: .SIGNAL,
|
||||
adminIds: [])
|
||||
groupType: .closedGroup,
|
||||
adminIds: [])
|
||||
}
|
||||
|
||||
@objc
|
||||
|
|
Loading…
Reference in New Issue