pull/41/head
Niels Andriesse 6 years ago
parent 738d4f05f5
commit a943be6c97

@ -73,6 +73,7 @@ target 'Signal' do
# Loki # Loki
pod 'GCDWebServer', '~> 3.0' pod 'GCDWebServer', '~> 3.0'
pod 'FeedKit', '~> 8.1'
target 'SignalTests' do target 'SignalTests' do
inherit! :search_paths inherit! :search_paths

@ -1 +1 @@
Subproject commit 98077061d67643bda2dc906dd37d571eccbcd164 Subproject commit 95f519e4b407713a98f98d0aec572b7487c941b3

@ -1509,21 +1509,22 @@ static NSTimeInterval launchStartedAt;
for (LKGroupChat *chat in allGroupChats) { for (LKGroupChat *chat in allGroupChats) {
NSString *userDefaultsKey = [@"isSetUp." stringByAppendingString:chat.id]; NSString *userDefaultsKey = [@"isSetUp." stringByAppendingString:chat.id];
BOOL isChatSetUp = [NSUserDefaults.standardUserDefaults boolForKey:userDefaultsKey]; BOOL isChatSetUp = [NSUserDefaults.standardUserDefaults boolForKey:userDefaultsKey];
if (chat.isDeletable && isChatSetUp) { continue; } if (!isChatSetUp || !chat.isDeletable) {
TSGroupModel *group = [[TSGroupModel alloc] initWithTitle:chat.displayName memberIds:@[ userHexEncodedPublicKey, chat.server ] image:nil groupId:[chat.id dataUsingEncoding:NSUTF8StringEncoding]]; TSGroupModel *group = [[TSGroupModel alloc] initWithTitle:chat.displayName memberIds:@[ userHexEncodedPublicKey, chat.server ] image:nil groupId:[chat.id dataUsingEncoding:NSUTF8StringEncoding]];
__block TSGroupThread *thread; __block TSGroupThread *thread;
[OWSPrimaryStorage.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [OWSPrimaryStorage.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
thread = [TSGroupThread getOrCreateThreadWithGroupModel:group transaction:transaction]; thread = [TSGroupThread getOrCreateThreadWithGroupModel:group transaction:transaction];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"]; NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
NSCalendar *calendar = NSCalendar.currentCalendar; NSCalendar *calendar = NSCalendar.currentCalendar;
[calendar setTimeZone:timeZone]; [calendar setTimeZone:timeZone];
NSDateComponents *dateComponents = [NSDateComponents new]; NSDateComponents *dateComponents = [NSDateComponents new];
[dateComponents setYear:999]; [dateComponents setYear:999];
NSDate *date = [calendar dateByAddingComponents:dateComponents toDate:[NSDate new] options:0]; NSDate *date = [calendar dateByAddingComponents:dateComponents toDate:[NSDate new] options:0];
[thread updateWithMutedUntilDate:date transaction:transaction]; [thread updateWithMutedUntilDate:date transaction:transaction];
}]; }];
[OWSProfileManager.sharedManager addThreadToProfileWhitelist:thread]; [OWSProfileManager.sharedManager addThreadToProfileWhitelist:thread];
[NSUserDefaults.standardUserDefaults setBool:YES forKey:userDefaultsKey]; [NSUserDefaults.standardUserDefaults setBool:YES forKey:userDefaultsKey];
}
} }
} }
@ -1538,6 +1539,8 @@ static NSTimeInterval launchStartedAt;
{ {
[self createGroupChatPollersIfNeeded]; [self createGroupChatPollersIfNeeded];
[self.lokiPublicChatPoller startIfNeeded]; [self.lokiPublicChatPoller startIfNeeded];
[self.lokiNewsPoller startIfNeeded];
[self.lokiMessengerUpdatesPoller startIfNeeded];
} }
@end @end

@ -9,7 +9,7 @@ public final class LokiGroupChatPoller : NSObject {
private lazy var pollForNewMessagesInterval: TimeInterval = { private lazy var pollForNewMessagesInterval: TimeInterval = {
switch group.kind { switch group.kind {
case .publicChat(_): return 4 case .publicChat(_): return 4
case .rss(_): return 8 * 60 case .rss(_): return 4//8 * 60
} }
}() }()
@ -29,6 +29,7 @@ public final class LokiGroupChatPoller : NSObject {
@objc public func startIfNeeded() { @objc public func startIfNeeded() {
if hasStarted { return } if hasStarted { return }
pollForNewMessagesTimer = Timer.scheduledTimer(withTimeInterval: pollForNewMessagesInterval, repeats: true) { [weak self] _ in self?.pollForNewMessages() } pollForNewMessagesTimer = Timer.scheduledTimer(withTimeInterval: pollForNewMessagesInterval, repeats: true) { [weak self] _ in self?.pollForNewMessages() }
pollForNewMessages() // Perform initial update
if group.isPublicChat { if group.isPublicChat {
pollForDeletedMessagesTimer = Timer.scheduledTimer(withTimeInterval: pollForDeletedMessagesInterval, repeats: true) { [weak self] _ in self?.pollForDeletedMessages() } pollForDeletedMessagesTimer = Timer.scheduledTimer(withTimeInterval: pollForDeletedMessagesInterval, repeats: true) { [weak self] _ in self?.pollForDeletedMessages() }
} }
@ -69,7 +70,14 @@ public final class LokiGroupChatPoller : NSObject {
} }
} }
} }
case .rss(let customID): break // TODO: Implement case .rss(_):
let url = URL(string: group.server)!
let parser = LokiRSSFeedParser(url: url)
parser.parse { items in
items.reversed().forEach { item in
print("Loki", "\(item.title ?? "nil"), \(item.description ?? "nil"), \(item.dateAsString ?? "nil")")
}
}
} }
} }

Loading…
Cancel
Save