SendingController.swift 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import UIKit
  2. import DcCore
  3. protocol SendingControllerDelegate: class {
  4. func onSendingAttemptFinished()
  5. }
  6. class SendingController: UIViewController {
  7. private let dcMsgs: [DcMsg]
  8. private let chatId: Int
  9. private let dcContext: DcContext
  10. weak var delegate: SendingControllerDelegate?
  11. private var progressLabel: UILabel = {
  12. let view = UILabel()
  13. view.translatesAutoresizingMaskIntoConstraints = false
  14. view.text = String.localized("one_moment")
  15. return view
  16. }()
  17. private var activityIndicator: UIActivityIndicatorView = {
  18. let view: UIActivityIndicatorView
  19. if #available(iOS 13, *) {
  20. view = UIActivityIndicatorView(style: .large)
  21. } else {
  22. view = UIActivityIndicatorView(style: .whiteLarge)
  23. view.color = UIColor.gray
  24. }
  25. view.startAnimating()
  26. view.translatesAutoresizingMaskIntoConstraints = false
  27. return view
  28. }()
  29. init(chatId: Int, dcMsgs: [DcMsg], dcContext: DcContext) {
  30. self.chatId = chatId
  31. self.dcMsgs = dcMsgs
  32. self.dcContext = dcContext
  33. super.init(nibName: nil, bundle: nil)
  34. }
  35. required init?(coder: NSCoder) {
  36. fatalError("init(coder:) has not been implemented")
  37. }
  38. override func viewDidLoad() {
  39. view.backgroundColor = DcColors.defaultBackgroundColor
  40. setupViews()
  41. sendMessage()
  42. }
  43. private func setupViews() {
  44. view.addSubview(progressLabel)
  45. view.addSubview(activityIndicator)
  46. view.addConstraints([
  47. progressLabel.constraintCenterXTo(view),
  48. progressLabel.constraintAlignTopTo(view, paddingTop: 25),
  49. activityIndicator.constraintCenterXTo(view),
  50. activityIndicator.constraintCenterYTo(view)
  51. ])
  52. setupNavigationBar()
  53. }
  54. private func setupNavigationBar() {
  55. self.navigationItem.leftBarButtonItem = UIBarButtonItem()
  56. self.navigationItem.titleView = UIImageView(image: UIImage(named: "ic_chat")?.scaleDownImage(toMax: 26))
  57. }
  58. private func sendMessage() {
  59. DispatchQueue.global(qos: .utility).async {
  60. for dcMsg in self.dcMsgs {
  61. self.dcContext.sendMsgSync(chatId: self.chatId, msg: dcMsg)
  62. }
  63. if !self.dcContext.getChat(chatId: self.chatId).isSelfTalk {
  64. DcUtils.donateSendMessageIntent(chatId: self.chatId)
  65. }
  66. self.delegate?.onSendingAttemptFinished()
  67. }
  68. }
  69. }