|
|
|
@ -321,6 +321,9 @@ static NSTimeInterval launchStartedAt;
|
|
|
|
|
|
|
|
|
|
// Loki - Observe messages received notifications
|
|
|
|
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNewMessagesReceived:) name:NSNotification.newMessagesReceived object:nil];
|
|
|
|
|
|
|
|
|
|
// Loki - Observe thread deletion notifications
|
|
|
|
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleThreadDeleted:) name:NSNotification.threadDeleted object:nil];
|
|
|
|
|
|
|
|
|
|
OWSLogInfo(@"application: didFinishLaunchingWithOptions completed.");
|
|
|
|
|
|
|
|
|
@ -1579,26 +1582,61 @@ static NSTimeInterval launchStartedAt;
|
|
|
|
|
|
|
|
|
|
- (void)createGroupChatPollersIfNeeded
|
|
|
|
|
{
|
|
|
|
|
if (self.lokiPublicChatPoller == nil) { self.lokiPublicChatPoller = [[LKGroupChatPoller alloc] initForGroup:self.lokiPublicChat]; }
|
|
|
|
|
// Make sure thread exists
|
|
|
|
|
__block TSGroupThread *thread;
|
|
|
|
|
[OWSPrimaryStorage.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
|
|
|
|
thread = [TSGroupThread threadWithGroupId:[self.lokiPublicChat.id dataUsingEncoding:NSUTF8StringEncoding] transaction:transaction];
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
if (thread != nil && self.lokiPublicChatPoller == nil) {
|
|
|
|
|
self.lokiPublicChatPoller = [[LKGroupChatPoller alloc] initForGroup:self.lokiPublicChat];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)createRSSFeedPollersIfNeeded
|
|
|
|
|
{
|
|
|
|
|
if (self.lokiNewsFeedPoller == nil) { self.lokiNewsFeedPoller = [[LKRSSFeedPoller alloc] initForFeed:self.lokiNewsFeed]; }
|
|
|
|
|
// Make sure thread exists
|
|
|
|
|
__block TSGroupThread *lokiNewsFeedThread;
|
|
|
|
|
[OWSPrimaryStorage.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
|
|
|
|
lokiNewsFeedThread = [TSGroupThread threadWithGroupId:[self.lokiNewsFeed.id dataUsingEncoding:NSUTF8StringEncoding] transaction:transaction];
|
|
|
|
|
}];
|
|
|
|
|
if (lokiNewsFeedThread != nil && self.lokiNewsFeedPoller == nil) {
|
|
|
|
|
self.lokiNewsFeedPoller = [[LKRSSFeedPoller alloc] initForFeed:self.lokiNewsFeed];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// We don't need to check thread for this as it's never deletable
|
|
|
|
|
if (self.lokiMessengerUpdatesFeedPoller == nil) { self.lokiMessengerUpdatesFeedPoller = [[LKRSSFeedPoller alloc] initForFeed:self.lokiMessengerUpdatesFeed]; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)startGroupChatPollersIfNeeded
|
|
|
|
|
{
|
|
|
|
|
[self createGroupChatPollersIfNeeded];
|
|
|
|
|
[self.lokiPublicChatPoller startIfNeeded];
|
|
|
|
|
if (self.lokiPublicChatPoller != nil) { [self.lokiPublicChatPoller startIfNeeded]; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)startRSSFeedPollersIfNeeded
|
|
|
|
|
{
|
|
|
|
|
[self createRSSFeedPollersIfNeeded];
|
|
|
|
|
[self.lokiNewsFeedPoller startIfNeeded];
|
|
|
|
|
[self.lokiMessengerUpdatesFeedPoller startIfNeeded];
|
|
|
|
|
if (self.lokiNewsFeedPoller != nil) { [self.lokiNewsFeedPoller startIfNeeded]; }
|
|
|
|
|
if (self.lokiMessengerUpdatesFeedPoller != nil) { [self.lokiMessengerUpdatesFeedPoller startIfNeeded]; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)handleThreadDeleted:(NSNotification *)notification {
|
|
|
|
|
NSDictionary *userInfo = notification.userInfo;
|
|
|
|
|
NSString *threadId = (NSString *)userInfo[@"threadId"];
|
|
|
|
|
if (threadId == nil) { return; }
|
|
|
|
|
|
|
|
|
|
// Check if public chat was deleted
|
|
|
|
|
if ([threadId isEqualToString:[TSGroupThread threadIdFromGroupId:[self.lokiPublicChat.id dataUsingEncoding:NSUTF8StringEncoding]]] && self.lokiPublicChatPoller != nil) {
|
|
|
|
|
[self.lokiPublicChatPoller stop];
|
|
|
|
|
self.lokiPublicChatPoller = nil;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Check if news feed was deleted
|
|
|
|
|
if ([threadId isEqualToString:[TSGroupThread threadIdFromGroupId:[self.lokiNewsFeed.id dataUsingEncoding:NSUTF8StringEncoding]]] && self.lokiNewsFeedPoller != nil) {
|
|
|
|
|
[self.lokiNewsFeedPoller stop];
|
|
|
|
|
self.lokiNewsFeedPoller = nil;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@end
|
|
|
|
|