You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

202 lines
7.1 KiB

6 years ago
  1. //
  2. // EditCommentViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by FMI-12 on 1/21/18.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class EditCommentViewController: UIViewController, UITextViewDelegate {
  10. @IBOutlet weak var labelInitial: UILabel!
  11. @IBOutlet weak var imageViewUserImage: UIImageView!
  12. @IBOutlet weak var textViewEditComment: UITextView!
  13. @IBOutlet weak var viewEdit: UIView!
  14. @IBOutlet weak var textViewEditCommentConstraint: NSLayoutConstraint!
  15. var feedIndex: Int?
  16. var commentIndex: Int?
  17. var socialfeedviewmodel: SocialFeedViewModel?
  18. var commentInputText: String?
  19. private var commentToEdit: Comment?
  20. private var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
  21. override func viewDidLoad() {
  22. super.viewDidLoad()
  23. hideKeyboardWhenTappedAround()
  24. setUpNavBar(id: 5, title: "")
  25. labelInitial.isHidden = false
  26. labelInitial.backgroundColor = UIColor(hex: 0x2e3192)
  27. labelInitial.layer.cornerRadius = labelInitial.frame.height / 2
  28. labelInitial.text = getFirstName().prefix(1).uppercased()
  29. let userDpString = UserDefaults.standard.object(forKey: "com.gmeremit.dpUrl") as? String
  30. if let userDpUrl = URL(string: userDpString!) {
  31. imageViewUserImage.isHidden = false
  32. imageViewUserImage.sd_setImage(with: userDpUrl, placeholderImage: nil, options: [.progressiveDownload,.scaleDownLargeImages], completed: nil)
  33. imageViewUserImage.layer.cornerRadius = imageViewUserImage.frame.height/2
  34. labelInitial.isHidden = true
  35. }
  36. guard socialfeedviewmodel != nil, commentIndex != nil else {
  37. return
  38. }
  39. socialfeedviewmodel?.socialFeedConnectionTimeOut.value = nil
  40. /**
  41. connection timeout
  42. */
  43. socialfeedviewmodel?.socialFeedConnectionTimeOut.bind { [unowned self] in
  44. guard $0 != nil else {
  45. return
  46. }
  47. self.enableUserInteractions()
  48. self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
  49. self.popUpMessage(value: 20)
  50. }
  51. setUpListener()
  52. setUpAnotherLoginListener(genericviewmodel: socialfeedviewmodel!)
  53. commentToEdit = socialfeedviewmodel!.getCommentAt(index: commentIndex!)
  54. textViewEditComment.delegate = self
  55. imageViewUserImage.layer.cornerRadius = imageViewUserImage.frame.height / 2
  56. if let userDpString = commentToEdit!.userDpUrl {
  57. if let userDpUrl = URL(string: userDpString) {
  58. imageViewUserImage.sd_setImage(with: userDpUrl, placeholderImage: #imageLiteral(resourceName: "gme-logo"), options: [.progressiveDownload,.scaleDownLargeImages], completed: nil)
  59. }
  60. }
  61. if commentToEdit!.userComment != nil {
  62. socialfeedviewmodel!.updateCommentText(text: commentToEdit!.userComment)
  63. textViewEditComment.text = commentToEdit!.userComment
  64. }
  65. textViewEditComment.translatesAutoresizingMaskIntoConstraints = true
  66. // textViewEditComment.sizeToFit()
  67. // textViewEditComment.contentMode = .scaleToFill
  68. var frame = self.textViewEditComment.frame
  69. frame.size.height = self.textViewEditComment.contentSize.height
  70. self.textViewEditComment.frame = frame
  71. textViewEditComment.isScrollEnabled = true
  72. }
  73. func setUpListener() {
  74. socialfeedviewmodel!.socialFeedsRxValue.bind { [weak self] in
  75. guard $0 != nil else {
  76. return
  77. }
  78. self?.enableUserInteractions()
  79. if self?.activityIndicator != nil {
  80. self?.dismissActivityIndicator(activityIndicator: (self?.activityIndicator)!)
  81. }
  82. guard $0 != 0 else {
  83. self?.popUpMessageError(value: 10, message: (self?.socialfeedviewmodel!.getErrorMessage())!)
  84. self?.socialfeedviewmodel!.socialFeedsRxValue.value = nil
  85. return
  86. }
  87. switch $0 {
  88. case socialWallCode.createUpdateComment.rawValue?:
  89. self?.navigationController?.popViewController(animated: true)
  90. default:
  91. return
  92. }
  93. self?.socialfeedviewmodel!.socialFeedsRxValue.value = nil
  94. }
  95. }
  96. @IBAction func updateCommentButton(_ sender: Any) {
  97. disableUserInteractions()
  98. showActivityIndicator(activityIndicator: activityIndicator)
  99. if feedIndex != nil {
  100. let feed = socialfeedviewmodel!.getSocialFeedAt(index: feedIndex!)
  101. socialfeedviewmodel!.updateCommentFor(feedId: feed.id, commentId: commentToEdit!.commentId, commentIndex: commentIndex!)
  102. } else {
  103. let feed = socialfeedviewmodel!.getParticularFeed()
  104. socialfeedviewmodel!.updateCommentFor(feedId: feed.id, commentId: commentToEdit!.commentId, commentIndex: commentIndex!)
  105. }
  106. }
  107. @IBAction func cancelButton(_ sender: Any) {
  108. navigationController?.popViewController(animated: true)
  109. }
  110. func textViewDidBeginEditing(_ textFieldPost: UITextView) {
  111. }
  112. func textViewDidEndEditing(_ textFieldPost: UITextView) {
  113. }
  114. // func textViewDidChange(_ textView: UITextView) {
  115. //
  116. // let size = textView.sizeThatFits(CGSize(width: textView.frame.size.width, height: CGFloat.greatestFiniteMagnitude))
  117. // if size.height != textViewEditCommentConstraint.constant && size.height > textView.frame.size.height || size.height < textView.frame.size.height{
  118. // textViewEditCommentConstraint.constant = size.height + 8
  119. // textView.setContentOffset(CGPoint.zero, animated: false)
  120. // }
  121. // }
  122. func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
  123. commentInputText = (textView.text! as NSString).replacingCharacters(in: range, with: text)
  124. socialfeedviewmodel?.updateCommentText(text: commentInputText!)
  125. return true
  126. }
  127. override func didReceiveMemoryWarning() {
  128. super.didReceiveMemoryWarning()
  129. // Dispose of any resources that can be recreated.
  130. }
  131. }
  132. // func textViewDidChangeSelection(_ textView: UITextView) {
  133. // let minLocation = 3
  134. // let currentRange = textView.selectedRange
  135. // if (currentRange.location < minLocation) {
  136. // let lengthDelta = (minLocation - currentRange.location)
  137. // //Minus the number of characters moved so the end point of the selection does not change.
  138. // let newRange = NSMakeRange(minLocation, currentRange.length - lengthDelta);
  139. // //Should use UITextInput protocol
  140. // textView.selectedRange = newRange;
  141. // }
  142. // }