BannedActorCell.swift 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. //
  2. // SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
  3. // SPDX-License-Identifier: GPL-3.0-or-later
  4. //
  5. protocol BannedActorCellDelegate: AnyObject {
  6. func bannedActorCellUnbanActor(_ cell: BannedActorCell, bannedActor: BannedActor)
  7. }
  8. class BannedActorCell: UITableViewCell {
  9. public weak var delegate: BannedActorCellDelegate?
  10. @IBOutlet weak var titleLabel: UILabel!
  11. @IBOutlet weak var detailsLabel: UILabel!
  12. @IBOutlet weak var unbanButton: NCButton!
  13. private var bannedActor: BannedActor?
  14. override func awakeFromNib() {
  15. super.awakeFromNib()
  16. self.selectionStyle = .none
  17. }
  18. override func prepareForReuse() {
  19. super.prepareForReuse()
  20. self.titleLabel.text = ""
  21. self.detailsLabel.text = ""
  22. self.bannedActor = nil
  23. self.setEnabledState()
  24. }
  25. public func setupFor(bannedActor: BannedActor) {
  26. self.bannedActor = bannedActor
  27. self.titleLabel.text = bannedActor.bannedDisplayName ?? "Unknown"
  28. var bannedDate = ""
  29. if let time = bannedActor.bannedTime {
  30. bannedDate = NCUtils.readableDateTime(fromDate: Date(timeIntervalSince1970: TimeInterval(time)))
  31. }
  32. let bannedByLabel = NSLocalizedString("Banned by:", comment: "Date and time of ban creation")
  33. let bannedDateLabel = NSLocalizedString("Date:", comment: "name of a moderator who banned a participant")
  34. let bannedNoteLabel = NSLocalizedString("Note:", comment: "Internal note for moderators, usually a reason for this ban")
  35. var details = NSMutableAttributedString()
  36. let attributedNewLine = NSAttributedString(string: "\n")
  37. details.append(bannedByLabel.withFont(.preferredFont(for: .caption1, weight: .bold)))
  38. details.append(" \(bannedActor.bannedDisplayName ?? NSLocalizedString("Unknown", comment: ""))".withFont(.preferredFont(forTextStyle: .caption1)))
  39. details.append(attributedNewLine)
  40. details.append(bannedDateLabel.withFont(.preferredFont(for: .caption1, weight: .bold)))
  41. details.append(" \(bannedDate)".withFont(.preferredFont(forTextStyle: .caption1)))
  42. if let internalNote = bannedActor.internalNote, !internalNote.isEmpty {
  43. details.append(attributedNewLine)
  44. details.append(bannedNoteLabel.withFont(.preferredFont(for: .caption1, weight: .bold)))
  45. details.append(" \(internalNote)".withFont(.preferredFont(forTextStyle: .caption1)))
  46. }
  47. self.detailsLabel.attributedText = details
  48. self.unbanButton.setTitle(NSLocalizedString("Unban", comment: ""), for: .normal)
  49. self.unbanButton.setButtonStyle(style: .primary)
  50. self.unbanButton.setButtonAction(target: self, selector: #selector(unbanButtonPressed))
  51. }
  52. public func setDisabledState() {
  53. self.contentView.isUserInteractionEnabled = false
  54. self.contentView.alpha = 0.5
  55. }
  56. public func setEnabledState() {
  57. self.contentView.isUserInteractionEnabled = true
  58. self.contentView.alpha = 1
  59. }
  60. @objc
  61. func unbanButtonPressed() {
  62. if let bannedActor {
  63. self.delegate?.bannedActorCellUnbanActor(self, bannedActor: bannedActor)
  64. }
  65. }
  66. }