1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- //
- // SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
- // SPDX-License-Identifier: GPL-3.0-or-later
- //
- protocol BannedActorCellDelegate: AnyObject {
- func bannedActorCellUnbanActor(_ cell: BannedActorCell, bannedActor: BannedActor)
- }
- class BannedActorCell: UITableViewCell {
- public weak var delegate: BannedActorCellDelegate?
- @IBOutlet weak var titleLabel: UILabel!
- @IBOutlet weak var detailsLabel: UILabel!
- @IBOutlet weak var unbanButton: NCButton!
- private var bannedActor: BannedActor?
- override func awakeFromNib() {
- super.awakeFromNib()
- self.selectionStyle = .none
- }
- override func prepareForReuse() {
- super.prepareForReuse()
- self.titleLabel.text = ""
- self.detailsLabel.text = ""
- self.bannedActor = nil
- self.setEnabledState()
- }
- public func setupFor(bannedActor: BannedActor) {
- self.bannedActor = bannedActor
- self.titleLabel.text = bannedActor.bannedDisplayName ?? "Unknown"
- var bannedDate = ""
- if let time = bannedActor.bannedTime {
- bannedDate = NCUtils.readableDateTime(fromDate: Date(timeIntervalSince1970: TimeInterval(time)))
- }
- let bannedByLabel = NSLocalizedString("Banned by:", comment: "Date and time of ban creation")
- let bannedDateLabel = NSLocalizedString("Date:", comment: "name of a moderator who banned a participant")
- let bannedNoteLabel = NSLocalizedString("Note:", comment: "Internal note for moderators, usually a reason for this ban")
- var details = NSMutableAttributedString()
- let attributedNewLine = NSAttributedString(string: "\n")
- details.append(bannedByLabel.withFont(.preferredFont(for: .caption1, weight: .bold)))
- details.append(" \(bannedActor.bannedDisplayName ?? NSLocalizedString("Unknown", comment: ""))".withFont(.preferredFont(forTextStyle: .caption1)))
- details.append(attributedNewLine)
- details.append(bannedDateLabel.withFont(.preferredFont(for: .caption1, weight: .bold)))
- details.append(" \(bannedDate)".withFont(.preferredFont(forTextStyle: .caption1)))
- if let internalNote = bannedActor.internalNote, !internalNote.isEmpty {
- details.append(attributedNewLine)
- details.append(bannedNoteLabel.withFont(.preferredFont(for: .caption1, weight: .bold)))
- details.append(" \(internalNote)".withFont(.preferredFont(forTextStyle: .caption1)))
- }
- self.detailsLabel.attributedText = details
- self.unbanButton.setTitle(NSLocalizedString("Unban", comment: ""), for: .normal)
- self.unbanButton.setButtonStyle(style: .primary)
- self.unbanButton.setButtonAction(target: self, selector: #selector(unbanButtonPressed))
- }
- public func setDisabledState() {
- self.contentView.isUserInteractionEnabled = false
- self.contentView.alpha = 0.5
- }
- public func setEnabledState() {
- self.contentView.isUserInteractionEnabled = true
- self.contentView.alpha = 1
- }
- @objc
- func unbanButtonPressed() {
- if let bannedActor {
- self.delegate?.bannedActorCellUnbanActor(self, bannedActor: bannedActor)
- }
- }
- }
|