From 7acfa409153069915c6d9b52448968bd3e246e14 Mon Sep 17 00:00:00 2001 From: Mikunj <mikunj@live.com.au> Date: Wed, 28 Aug 2019 15:49:16 +1000 Subject: [PATCH] Don't allow input on rss groups. --- .../ConversationView/ConversationViewController.m | 12 +++++++++++- .../src/Contacts/Threads/TSGroupThread.h | 1 + .../src/Contacts/Threads/TSGroupThread.m | 6 ++++++ SignalServiceKit/src/Loki/API/LokiRSSFeed.swift | 2 +- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index 8947a9239..58eb2626c 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -564,6 +564,16 @@ typedef enum : NSUInteger { return !groupThread.isLocalUserInGroup; } +- (BOOL)isRSSGroup +{ + if (![_thread isKindOfClass:[TSGroupThread class]]) { + return NO; + } + + TSGroupThread *groupThread = (TSGroupThread *)self.thread; + return groupThread.isRSS; +} + - (void)hideInputIfNeeded { if (_peek) { @@ -572,7 +582,7 @@ typedef enum : NSUInteger { return; } - if (self.userLeftGroup) { + if (self.userLeftGroup || self.isRSSGroup) { self.inputToolbar.hidden = YES; // user has requested they leave the group. further sends disallowed [self dismissKeyBoard]; } else { diff --git a/SignalServiceKit/src/Contacts/Threads/TSGroupThread.h b/SignalServiceKit/src/Contacts/Threads/TSGroupThread.h index bc214f93b..8fb376da2 100644 --- a/SignalServiceKit/src/Contacts/Threads/TSGroupThread.h +++ b/SignalServiceKit/src/Contacts/Threads/TSGroupThread.h @@ -16,6 +16,7 @@ extern NSString *const TSGroupThread_NotificationKey_UniqueId; @interface TSGroupThread : TSThread @property (nonatomic, strong) TSGroupModel *groupModel; +@property (nonatomic, readonly) BOOL isRSS; + (instancetype)getOrCreateThreadWithGroupModel:(TSGroupModel *)groupModel; + (instancetype)getOrCreateThreadWithGroupModel:(TSGroupModel *)groupModel diff --git a/SignalServiceKit/src/Contacts/Threads/TSGroupThread.m b/SignalServiceKit/src/Contacts/Threads/TSGroupThread.m index af20285bb..7110d7921 100644 --- a/SignalServiceKit/src/Contacts/Threads/TSGroupThread.m +++ b/SignalServiceKit/src/Contacts/Threads/TSGroupThread.m @@ -266,6 +266,12 @@ NSString *const TSGroupThread_NotificationKey_UniqueId = @"TSGroupThread_Notific return [self.class stableColorNameForNewConversationWithString:[self threadIdFromGroupId:groupId]]; } +- (BOOL)isRSS +{ + NSString *groupID = [[NSString alloc] initWithData:self.groupModel.groupId encoding:NSUTF8StringEncoding]; + return groupID != nil && [groupID containsString:@"rss:"]; +} + @end NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Loki/API/LokiRSSFeed.swift b/SignalServiceKit/src/Loki/API/LokiRSSFeed.swift index 44a4807a8..96daef891 100644 --- a/SignalServiceKit/src/Loki/API/LokiRSSFeed.swift +++ b/SignalServiceKit/src/Loki/API/LokiRSSFeed.swift @@ -7,7 +7,7 @@ public final class LokiRSSFeed : NSObject { @objc public let isDeletable: Bool @objc public init(id: String, server: String, displayName: String, isDeletable: Bool) { - self.id = id + self.id = "rss://\(id)" self.server = server self.displayName = displayName self.isDeletable = isDeletable