TM-SGNL-iOS/Signal/Usernames/Links/UsernameLinkScanQRCodeSheet.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

62 lines
2.1 KiB
Swift

//
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import SignalServiceKit
public import SignalUI
class UsernameLinkScanQRCodeSheet: UsernameLinkScanQRCodeViewController {
override var preferredNavigationBarStyle: OWSNavigationBarStyle { .solid }
override func viewDidLoad() {
super.viewDidLoad()
self.title = CommonStrings.scanQRCodeTitle
navigationItem.leftBarButtonItem = .doneButton(dismissingFrom: self)
}
}
// MARK: RecipientPickerDelegate + UsernameLinkScanDelegate
extension RecipientPickerDelegate where Self: UIViewController & UsernameLinkScanDelegate {
var shouldShowQRCodeButton: Bool { true }
func openUsernameQRCodeScanner() {
presentUsernameQRCodeScanner()
}
func presentUsernameQRCodeScanner() {
let scanner = UsernameLinkScanQRCodeSheet(scanDelegate: self)
let navigationController = OWSNavigationController(rootViewController: scanner)
self.present(navigationController, animated: true)
}
}
extension BaseMemberViewController: @retroactive MemberViewUsernameQRCodeScannerPresenter {
public func presentUsernameQRCodeScannerFromMemberView() {
presentUsernameQRCodeScanner()
}
}
// MARK: UsernameLinkScanDelegate + RecipientPickerDelegate
extension BaseMemberViewController: UsernameLinkScanDelegate {}
extension UsernameLinkScanDelegate where Self: RecipientPickerDelegate & RecipientPickerContainerViewController {
func usernameLinkScanned(_ usernameLink: Usernames.UsernameLink) {
dismiss(animated: true) {
SSKEnvironment.shared.databaseStorageRef.read { tx in
UsernameQuerier().queryForUsernameLink(
link: usernameLink,
fromViewController: self,
tx: tx
) { _, aci in
self.recipientPicker(
self.recipientPicker,
didSelectRecipient: .for(address: SignalServiceAddress(aci))
)
}
}
}
}
}