GroupTopicViewController.swift 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. //
  2. // GroupTopicViewController.swift
  3. // Qmera
  4. //
  5. // Created by Yayan Dwi on 30/09/21.
  6. //
  7. import UIKit
  8. class GroupTopicViewController: UITableViewController, UITextFieldDelegate {
  9. @IBOutlet weak var topic: UITextField!
  10. var isDismiss: (() -> ())?
  11. var data: String = ""
  12. override func viewDidLoad() {
  13. super.viewDidLoad()
  14. title = "Add Topic".localized()
  15. navigationController?.navigationBar.backgroundColor = self.traitCollection.userInterfaceStyle == .dark ? .blackDarkMode : .mainColor
  16. navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Save".localized(), style: .plain, target: self, action: #selector(save(sender:)))
  17. navigationItem.rightBarButtonItem?.isEnabled = false
  18. topic.addTarget(self, action: #selector(didChanged(sender:)), for: .editingChanged)
  19. topic.placeholder = "Name".localized()
  20. topic.delegate = self
  21. }
  22. func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
  23. guard let currentText = textField.text else { return true }
  24. let newLength = currentText.count + string.count - range.length
  25. return newLength <= 50
  26. }
  27. @objc func didChanged(sender: Any) {
  28. if let text = topic.text, text.trimmingCharacters(in: .whitespaces).isEmpty {
  29. navigationItem.rightBarButtonItem?.isEnabled = false
  30. } else if let button = navigationItem.rightBarButtonItem, !button.isEnabled {
  31. button.isEnabled = true
  32. }
  33. }
  34. @objc func save(sender: Any) {
  35. let id = Date().currentTimeMillis().toHex()
  36. if let text = topic.text {
  37. DispatchQueue.global().async {
  38. if let resp = Nexilis.writeAndWait(message: CoreMessage_TMessageBank.getCreateChat(chat_id: id, title: text, group_id: self.data)) {
  39. if resp.isOk() {
  40. Database.shared.database?.inTransaction({ fmdb, rollback in
  41. do {
  42. _ = try! Database.shared.insertRecord(fmdb: fmdb, table: "DISCUSSION_FORUM", cvalues: ["chat_id": id, "title": text, "group_id": self.data, "scope_id": "4"], replace: true)
  43. } catch {
  44. rollback.pointee = true
  45. print("Access database error: \(error.localizedDescription)")
  46. }
  47. })
  48. DispatchQueue.main.async {
  49. self.navigationController?.dismiss(animated: true, completion: {
  50. self.isDismiss?()
  51. })
  52. }
  53. }
  54. }
  55. }
  56. }
  57. }
  58. }