Update LokiGroupChatPoller for message deletion

pull/40/head
Niels Andriesse 6 years ago
parent 7d3d0b31d9
commit bb2c26e92e

@ -1488,7 +1488,7 @@ static NSTimeInterval launchStartedAt;
- (void)setUpPublicChatIfNeeded - (void)setUpPublicChatIfNeeded
{ {
if (self.lokiPublicChatPoller != nil) { return; } if (self.lokiPublicChatPoller != nil) { return; }
self.lokiPublicChatPoller = [[LKGroupChatPoller alloc] initWithGroup:(NSUInteger)LKGroupChatAPI.publicChatID]; self.lokiPublicChatPoller = [[LKGroupChatPoller alloc] initForGroup:(NSUInteger)LKGroupChatAPI.publicChatID onServer:LKGroupChatAPI.publicChatServer];
BOOL isPublicChatSetUp = [NSUserDefaults.standardUserDefaults boolForKey:@"isPublicChatSetUp"]; BOOL isPublicChatSetUp = [NSUserDefaults.standardUserDefaults boolForKey:@"isPublicChatSetUp"];
if (isPublicChatSetUp) { return; } if (isPublicChatSetUp) { return; }
NSString *title = NSLocalizedString(@"Loki Public Chat", @""); NSString *title = NSLocalizedString(@"Loki Public Chat", @"");

@ -2,32 +2,40 @@
@objc(LKGroupChatPoller) @objc(LKGroupChatPoller)
public final class LokiGroupChatPoller : NSObject { public final class LokiGroupChatPoller : NSObject {
private let group: UInt private let group: UInt
private var timer: Timer? = nil private let server: String
private var pollForNewMessagesTimer: Timer? = nil
private var pollForDeletedMessagesTimer: Timer? = nil
private var hasStarted = false private var hasStarted = false
private let pollInterval: TimeInterval = 4 private let pollForNewMessagesInterval: TimeInterval = 4
private let pollForDeletedMessagesInterval: TimeInterval = 120
@objc public init(group: UInt) { @objc(initForGroup:onServer:)
public init(for group: UInt, on server: String) {
self.group = group self.group = group
self.server = server
super.init() super.init()
} }
@objc public func startIfNeeded() { @objc public func startIfNeeded() {
if hasStarted { return } if hasStarted { return }
timer = Timer.scheduledTimer(withTimeInterval: pollInterval, repeats: true) { [weak self] _ in self?.poll() } pollForNewMessagesTimer = Timer.scheduledTimer(withTimeInterval: pollForNewMessagesInterval, repeats: true) { [weak self] _ in self?.pollForNewMessages() }
pollForDeletedMessagesTimer = Timer.scheduledTimer(withTimeInterval: pollForDeletedMessagesInterval, repeats: true) { [weak self] _ in self?.pollForDeletedMessages() }
hasStarted = true hasStarted = true
} }
@objc public func stop() { @objc public func stop() {
timer?.invalidate() pollForNewMessagesTimer?.invalidate()
pollForDeletedMessagesTimer?.invalidate()
hasStarted = false hasStarted = false
} }
private func poll() { private func pollForNewMessages() {
let group = self.group let group = self.group
let _ = LokiGroupChatAPI.getMessages(for: group, on: LokiGroupChatAPI.publicChatServer).map { messages in let server = self.server
let _ = LokiGroupChatAPI.getMessages(for: group, on: server).map { messages in
messages.reversed().map { message in messages.reversed().map { message in
let id = "\(LokiGroupChatAPI.publicChatServer).\(group)".data(using: String.Encoding.utf8)! let id = "\(server).\(group)".data(using: String.Encoding.utf8)!
let x1 = SSKProtoGroupContext.builder(id: id, type: .deliver) let x1 = SSKProtoGroupContext.builder(id: id, type: .deliver)
x1.setName(NSLocalizedString("Loki Public Chat", comment: "")) x1.setName(NSLocalizedString("Loki Public Chat", comment: ""))
let x2 = SSKProtoDataMessage.builder() let x2 = SSKProtoDataMessage.builder()
@ -50,4 +58,8 @@ public final class LokiGroupChatPoller : NSObject {
} }
} }
} }
private func pollForDeletedMessages() {
// TODO: Implement
}
} }

Loading…
Cancel
Save