Remove dependency on hard coded public chat values.
This commit is contained in:
parent
3c7369f465
commit
683a5c1edc
|
@ -7,6 +7,7 @@
|
|||
#import "OWSMessageBubbleView.h"
|
||||
#import "OWSMessageHeaderView.h"
|
||||
#import "Session-Swift.h"
|
||||
#import <SignalServiceKit/SignalServiceKit-Swift.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
|
@ -298,10 +299,17 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[self.contentView addSubview:self.avatarView];
|
||||
|
||||
if (self.viewItem.isGroupThread && !self.viewItem.isRSSFeed) {
|
||||
BOOL isModerator = [LKGroupChatAPI isUserModerator:incomingMessage.authorId forGroup:LKGroupChatAPI.publicChatServerID onServer:LKGroupChatAPI.publicChatServer];
|
||||
UIImage *moderatorIcon = [UIImage imageNamed:@"Crown"];
|
||||
self.moderatorIconImageView.image = moderatorIcon;
|
||||
self.moderatorIconImageView.hidden = !isModerator;
|
||||
__block LKGroupChat *groupChat;
|
||||
[OWSPrimaryStorage.sharedManager.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
groupChat = [LKDatabaseUtilities getGroupChatForThreadID:self.viewItem.interaction.uniqueThreadId transaction: transaction];
|
||||
}];
|
||||
|
||||
if (groupChat != nil) {
|
||||
BOOL isModerator = [LKGroupChatAPI isUserModerator:incomingMessage.authorId forGroup:groupChat.channel onServer:groupChat.server];
|
||||
UIImage *moderatorIcon = [UIImage imageNamed:@"Crown"];
|
||||
self.moderatorIconImageView.image = moderatorIcon;
|
||||
self.moderatorIconImageView.hidden = !isModerator;
|
||||
}
|
||||
}
|
||||
|
||||
[self.contentView addSubview:self.moderatorIconImageView];
|
||||
|
|
|
@ -553,6 +553,7 @@ const CGFloat kRemotelySourcedContentRowSpacing = 3;
|
|||
|
||||
if (quotedAuthor == self.quotedMessage.authorId) {
|
||||
[OWSPrimaryStorage.sharedManager.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
// TODO: Fix this to use dynamic LKGroup variables!
|
||||
NSString *collection = [NSString stringWithFormat:@"%@.%@", LKGroupChatAPI.publicChatServer, @(LKGroupChatAPI.publicChatServerID)];
|
||||
NSString *displayName = [transaction stringForKey:self.quotedMessage.authorId inCollection:collection];
|
||||
if (displayName != nil) { quotedAuthor = displayName; }
|
||||
|
|
|
@ -1187,9 +1187,15 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType)
|
|||
TSMessage *message = (TSMessage *)self.interaction;
|
||||
if (!message.isGroupChatMessage) return;
|
||||
|
||||
__block LKGroupChat *groupChat;
|
||||
[self.primaryStorage.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
groupChat = [LKDatabaseUtilities getGroupChatForThreadID:groupThread.uniqueId transaction: transaction];
|
||||
}];
|
||||
if (groupChat == nil) return;
|
||||
|
||||
// Delete the message
|
||||
BOOL isSentByUser = (interationType == OWSInteractionType_OutgoingMessage);
|
||||
[[LKGroupChatAPI deleteMessageWithID:message.groupChatServerID forGroup:LKGroupChatAPI.publicChatServerID onServer:LKGroupChatAPI.publicChatServer isSentByUser:isSentByUser].catch(^(NSError *error) {
|
||||
[[LKGroupChatAPI deleteMessageWithID:message.groupChatServerID forGroup:groupChat.channel onServer:groupChat.server isSentByUser:isSentByUser].catch(^(NSError *error) {
|
||||
// Roll back
|
||||
[self.interaction save];
|
||||
}) retainUntilComplete];
|
||||
|
@ -1256,9 +1262,16 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType)
|
|||
TSMessage *message = (TSMessage *)self.interaction;
|
||||
if (!message.isGroupChatMessage) return false;
|
||||
|
||||
// Make sure we have the details to contact the server
|
||||
__block LKGroupChat *groupChat;
|
||||
[self.primaryStorage.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
groupChat = [LKDatabaseUtilities getGroupChatForThreadID:groupThread.uniqueId transaction: transaction];
|
||||
}];
|
||||
if (groupChat == nil) return false;
|
||||
|
||||
// Only allow deletion on incoming messages if the user has moderation permission
|
||||
if (interationType == OWSInteractionType_IncomingMessage) {
|
||||
BOOL isModerator = [LKGroupChatAPI isUserModerator:self.userHexEncodedPublicKey forGroup:LKGroupChatAPI.publicChatServerID onServer: LKGroupChatAPI.publicChatServer];
|
||||
BOOL isModerator = [LKGroupChatAPI isUserModerator:self.userHexEncodedPublicKey forGroup:groupChat.channel onServer:groupChat.server];
|
||||
if (!isModerator) return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -535,6 +535,7 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error);
|
|||
OWSAssertDebug(successBlock);
|
||||
OWSAssertDebug(failureBlock);
|
||||
|
||||
// TODO: Fix this to set display name on all servers
|
||||
[[LKGroupChatAPI setDisplayName:localProfileName on:LKGroupChatAPI.publicChatServer]
|
||||
.thenOn(dispatch_get_main_queue(), ^() {
|
||||
successBlock();
|
||||
|
|
|
@ -1185,7 +1185,13 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
|
|||
[self messageSendDidFail:messageSend deviceMessages:deviceMessages statusCode:statusCode error:error responseData:responseData];
|
||||
};
|
||||
|
||||
if ([recipient.recipientId isEqualToString:LKGroupChatAPI.publicChatServer]) {
|
||||
// Get the group chat info if we have it
|
||||
__block LKGroupChat *groupChat;
|
||||
[OWSPrimaryStorage.sharedManager.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
groupChat = [LKDatabaseUtilities getGroupChatForThreadID:message.uniqueThreadId transaction: transaction];
|
||||
}];
|
||||
|
||||
if (groupChat != nil) {
|
||||
NSString *userHexEncodedPublicKey = OWSIdentityManager.sharedManager.identityKeyPair.hexEncodedPublicKey;
|
||||
NSString *displayName = SSKEnvironment.shared.profileManager.localProfileName;
|
||||
if (displayName == nil) { displayName = @"Anonymous"; }
|
||||
|
@ -1200,7 +1206,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
|
|||
}
|
||||
LKGroupMessage *groupMessage = [[LKGroupMessage alloc] initWithHexEncodedPublicKey:userHexEncodedPublicKey displayName:displayName body:message.body type:LKGroupChatAPI.publicChatMessageType
|
||||
timestamp:message.timestamp quotedMessageTimestamp:quoteID quoteeHexEncodedPublicKey:quoteeHexEncodedPublicKey quotedMessageBody:quote.body quotedMessageServerID:quotedMessageServerID signatureData:nil signatureVersion:0];
|
||||
[[LKGroupChatAPI sendMessage:groupMessage toGroup:LKGroupChatAPI.publicChatServerID onServer:LKGroupChatAPI.publicChatServer]
|
||||
[[LKGroupChatAPI sendMessage:groupMessage toGroup:groupChat.channel onServer:groupChat.server]
|
||||
.thenOn(OWSDispatch.sendingQueue, ^(LKGroupMessage *groupMessage) {
|
||||
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
[message saveGroupChatServerID:groupMessage.serverID in:transaction];
|
||||
|
|
Loading…
Reference in New Issue