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