GroupTopicViewController.swift 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. //
  2. // GroupTopicViewController.swift
  3. // Qmera
  4. //
  5. // Created by Yayan Dwi on 30/09/21.
  6. //
  7. import UIKit
  8. class GroupTopicViewController: UITableViewController {
  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. }
  21. @objc func didChanged(sender: Any) {
  22. if let text = topic.text, text.trimmingCharacters(in: .whitespaces).isEmpty {
  23. navigationItem.rightBarButtonItem?.isEnabled = false
  24. } else if let button = navigationItem.rightBarButtonItem, !button.isEnabled {
  25. button.isEnabled = true
  26. }
  27. }
  28. @objc func save(sender: Any) {
  29. let id = Date().currentTimeMillis().toHex()
  30. if let text = topic.text {
  31. DispatchQueue.global().async {
  32. if let resp = Nexilis.writeAndWait(message: CoreMessage_TMessageBank.getCreateChat(chat_id: id, title: text, group_id: self.data)) {
  33. if resp.isOk() {
  34. Database.shared.database?.inTransaction({ fmdb, rollback in
  35. do {
  36. _ = try! Database.shared.insertRecord(fmdb: fmdb, table: "DISCUSSION_FORUM", cvalues: ["chat_id": id, "title": text, "group_id": self.data, "scope_id": "4"], replace: true)
  37. } catch {
  38. rollback.pointee = true
  39. print("Access database error: \(error.localizedDescription)")
  40. }
  41. })
  42. DispatchQueue.main.async {
  43. self.navigationController?.dismiss(animated: true, completion: {
  44. self.isDismiss?()
  45. })
  46. }
  47. }
  48. }
  49. }
  50. }
  51. }
  52. }