12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import UIKit
- import DcCore
- protocol SendingControllerDelegate: class {
- func onSendingAttemptFinished()
- }
- class SendingController: UIViewController {
- private let dcMsgs: [DcMsg]
- private let chatId: Int
- private let dcContext: DcContext
- weak var delegate: SendingControllerDelegate?
- private var progressLabel: UILabel = {
- let view = UILabel()
- view.translatesAutoresizingMaskIntoConstraints = false
- view.text = String.localized("one_moment")
- return view
- }()
- private var activityIndicator: UIActivityIndicatorView = {
- let view: UIActivityIndicatorView
- if #available(iOS 13, *) {
- view = UIActivityIndicatorView(style: .large)
- } else {
- view = UIActivityIndicatorView(style: .whiteLarge)
- view.color = UIColor.gray
- }
- view.startAnimating()
- view.translatesAutoresizingMaskIntoConstraints = false
- return view
- }()
- init(chatId: Int, dcMsgs: [DcMsg], dcContext: DcContext) {
- self.chatId = chatId
- self.dcMsgs = dcMsgs
- self.dcContext = dcContext
- super.init(nibName: nil, bundle: nil)
- }
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- override func viewDidLoad() {
- view.backgroundColor = DcColors.defaultBackgroundColor
- setupViews()
- sendMessage()
- }
- private func setupViews() {
- view.addSubview(progressLabel)
- view.addSubview(activityIndicator)
- view.addConstraints([
- progressLabel.constraintCenterXTo(view),
- progressLabel.constraintAlignTopTo(view, paddingTop: 25),
- activityIndicator.constraintCenterXTo(view),
- activityIndicator.constraintCenterYTo(view)
- ])
- setupNavigationBar()
- }
- private func setupNavigationBar() {
- self.navigationItem.leftBarButtonItem = UIBarButtonItem()
- self.navigationItem.titleView = UIImageView(image: UIImage(named: "ic_chat")?.scaleDownImage(toMax: 26))
- }
- private func sendMessage() {
- DispatchQueue.global(qos: .utility).async {
- for dcMsg in self.dcMsgs {
- self.dcContext.sendMsgSync(chatId: self.chatId, msg: dcMsg)
- }
- if !self.dcContext.getChat(chatId: self.chatId).isSelfTalk {
- DcUtils.donateSendMessageIntent(chatId: self.chatId)
- }
- self.delegate?.onSendingAttemptFinished()
- }
- }
- }
|