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

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

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

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

@ -9,7 +9,7 @@ public final class LokiGroupChatPoller : NSObject {
private lazy var pollForNewMessagesInterval: TimeInterval = {
switch group.kind {
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() {
if hasStarted { return }
pollForNewMessagesTimer = Timer.scheduledTimer(withTimeInterval: pollForNewMessagesInterval, repeats: true) { [weak self] _ in self?.pollForNewMessages() }
pollForNewMessages() // Perform initial update
if group.isPublicChat {
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