diff --git a/Signal/src/Loki/Onboarding/SeedVC.swift b/Signal/src/Loki/Onboarding/SeedVC.swift index c5aa736dd..68a1d77bd 100644 --- a/Signal/src/Loki/Onboarding/SeedVC.swift +++ b/Signal/src/Loki/Onboarding/SeedVC.swift @@ -5,7 +5,8 @@ final class SeedVC : OnboardingBaseViewController, DeviceLinkingModalDelegate { private var mode: Mode = .register { didSet { if mode != oldValue { handleModeChanged() } } } private var seed: Data! { didSet { updateMnemonic() } } private var mnemonic: String! { didSet { handleMnemonicChanged() } } - + private var timer: Timer? + // MARK: Components private lazy var registerStackView: UIStackView = { let result = UIStackView(arrangedSubviews: [ explanationLabel1, UIView.spacer(withHeight: 32), mnemonicLabel, UIView.spacer(withHeight: 24), copyButton, UIView.spacer(withHeight: 8), restoreButton1, linkButton1 ]) @@ -345,22 +346,30 @@ final class SeedVC : OnboardingBaseViewController, DeviceLinkingModalDelegate { present(deviceLinkingModal, animated: true, completion: nil) let masterHexEncodedPublicKey = masterHexEncodedPublicKeyTextField.text!.trimmingCharacters(in: CharacterSet.whitespaces) let linkingRequestMessage = DeviceLinkingUtilities.getLinkingRequestMessage(for: masterHexEncodedPublicKey) - (0..<4).forEach { _ in ThreadUtil.enqueue(linkingRequestMessage) } + timer = Timer.scheduledTimer(withTimeInterval: 2, repeats: true) { [weak self] _ in + self?.sendLinkingRequestMessage(linkingRequestMessage) + } + sendLinkingRequestMessage(linkingRequestMessage) - // TODO: Timer // TODO: Sending bug } else { onboardingController.pushDisplayNameVC(from: self) } } + + private func sendLinkingRequestMessage(_ linkingRequestMessage: DeviceLinkMessage) { + ThreadUtil.enqueue(linkingRequestMessage) + } func handleDeviceLinkAuthorized(_ deviceLink: DeviceLink) { + timer?.invalidate() UserDefaults.standard.set(true, forKey: "didUpdateForMainnet") onboardingController.verificationDidComplete(fromView: self) } func handleDeviceLinkingModalDismissed() { + timer?.invalidate() let appDelegate = UIApplication.shared.delegate as! AppDelegate appDelegate.stopLongPollerIfNeeded() TSAccountManager.sharedInstance().resetForReregistration() diff --git a/SignalServiceKit/src/Loki/Database/OWSPrimaryStorage+Loki.swift b/SignalServiceKit/src/Loki/Database/OWSPrimaryStorage+Loki.swift index daf5b346c..c5c2b9143 100644 --- a/SignalServiceKit/src/Loki/Database/OWSPrimaryStorage+Loki.swift +++ b/SignalServiceKit/src/Loki/Database/OWSPrimaryStorage+Loki.swift @@ -6,7 +6,7 @@ extension OWSPrimaryStorage { } public func setDeviceLinks(_ deviceLinks: Set, in transaction: YapDatabaseReadWriteTransaction) { - let masterHexEncodedPublicKeys = deviceLinks.map { $0.master.hexEncodedPublicKey } + let masterHexEncodedPublicKeys = Set(deviceLinks.map { $0.master.hexEncodedPublicKey }) guard masterHexEncodedPublicKeys.count == 1 else { print("[Loki] Found inconsistent set of device links.") return