From 143755ae8e8218e5d15d92c56620cd97257df698 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Thu, 19 Sep 2019 10:54:40 +1000 Subject: [PATCH] Implement basic linking request listening logic --- .../src/Loki/API/LokiDeviceLinkingAPI.swift | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/SignalServiceKit/src/Loki/API/LokiDeviceLinkingAPI.swift b/SignalServiceKit/src/Loki/API/LokiDeviceLinkingAPI.swift index b30497179..a46aa7c95 100644 --- a/SignalServiceKit/src/Loki/API/LokiDeviceLinkingAPI.swift +++ b/SignalServiceKit/src/Loki/API/LokiDeviceLinkingAPI.swift @@ -3,15 +3,25 @@ import PromiseKit @objc(LKDeviceLinkingAPI) final class LokiDeviceLinkingAPI : NSObject { + private static var timerStartDate: Date? + public static var isListeningForLinkingRequests = false + // MARK: Settings - private static let listeningTimeout = 60 + private static let listeningTimeout: TimeInterval = 60 // MARK: Lifecycle override private init() { } // MARK: Public API - @objc public static func startListeningForLinkingRequests(onLinkingRequestReceived: (String) -> Void, onTimeout: () -> Void) { - // Listens for linking requests until either one is received or listeningTimeout is reached + @objc public static func startListeningForLinkingRequests(onLinkingRequestReceived: (String) -> Void, onTimeout: @escaping () -> Void) { + isListeningForLinkingRequests = true + timerStartDate = Date() + Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { timer in + if Date().timeIntervalSince1970 - timerStartDate!.timeIntervalSince1970 >= listeningTimeout { + isListeningForLinkingRequests = false + onTimeout() + } + } } @objc public static func authorizeLinkingRequest(with signature: String) {