点击切换消息列表时间样式

fix: #249
This commit is contained in:
Fin 2024-09-26 11:28:37 +08:00
parent 2ff425921d
commit a304c08216
2 changed files with 33 additions and 4 deletions

View File

@ -36,6 +36,8 @@ class MessageTableViewCell: BaseTableViewCell<MessageTableViewCellViewModel> {
let label = UILabel() let label = UILabel()
label.font = RobotoFont.medium(with: 11) label.font = RobotoFont.medium(with: 11)
label.textColor = BKColor.grey.base label.textColor = BKColor.grey.base
label.isUserInteractionEnabled = true
label.addGestureRecognizer(UITapGestureRecognizer())
return label return label
}() }()
@ -56,7 +58,6 @@ class MessageTableViewCell: BaseTableViewCell<MessageTableViewCellViewModel> {
contentView.addSubview(separatorLine) contentView.addSubview(separatorLine)
layoutView() layoutView()
} }
@available(*, unavailable) @available(*, unavailable)
@ -65,7 +66,6 @@ class MessageTableViewCell: BaseTableViewCell<MessageTableViewCellViewModel> {
} }
func layoutView() { func layoutView() {
bodyLabel.snp.remakeConstraints { make in bodyLabel.snp.remakeConstraints { make in
make.top.equalTo(16) make.top.equalTo(16)
make.left.equalTo(28) make.left.equalTo(28)
@ -128,6 +128,16 @@ class MessageTableViewCell: BaseTableViewCell<MessageTableViewCellViewModel> {
self.bodyLabel.attributedText = text self.bodyLabel.attributedText = text
}.disposed(by: rx.reuseBag) }.disposed(by: rx.reuseBag)
model.date.bind(to: self.dateLabel.rx.text).disposed(by: rx.reuseBag) model.date.bind(to: self.dateLabel.rx.text).disposed(by: rx.reuseBag)
//
dateLabel.gestureRecognizers?.first?.rx.event.subscribe(onNext: { _ in
if model.dateStyle.value != .exact {
model.dateStyle.accept(.exact)
} else {
model.dateStyle.accept(.relative)
}
}).disposed(by: rx.reuseBag)
} }
} }

View File

@ -11,13 +11,22 @@ import Foundation
import RxCocoa import RxCocoa
import RxDataSources import RxDataSources
enum MessageListCellDateStyle {
/// 11
case relative
/// 2024-01-01 12:00
case exact
}
class MessageTableViewCellViewModel: ViewModel { class MessageTableViewCellViewModel: ViewModel {
let message: Message let message: Message
let title: BehaviorRelay<String> let title: BehaviorRelay<String>
let body: BehaviorRelay<String> let body: BehaviorRelay<String>
let url: BehaviorRelay<String> let url: BehaviorRelay<String>
let date: BehaviorRelay<String>
let date = BehaviorRelay<String>(value: "")
var dateStyle = BehaviorRelay<MessageListCellDateStyle>(value: .relative)
init(message: Message) { init(message: Message) {
self.message = message self.message = message
@ -25,9 +34,19 @@ class MessageTableViewCellViewModel: ViewModel {
self.title = BehaviorRelay<String>(value: message.title ?? "") self.title = BehaviorRelay<String>(value: message.title ?? "")
self.body = BehaviorRelay<String>(value: message.body ?? "") self.body = BehaviorRelay<String>(value: message.body ?? "")
self.url = BehaviorRelay<String>(value: message.url ?? "") self.url = BehaviorRelay<String>(value: message.url ?? "")
self.date = BehaviorRelay<String>(value: (message.createDate ?? Date()).agoFormatString())
super.init() super.init()
dateStyle.map { style in
switch style {
case .relative:
return self.message.createDate?.agoFormatString() ?? ""
case .exact:
return self.message.createDate?.formatString(format: "yyyy-MM-dd HH:mm") ?? ""
}
}
.bind(to: date)
.disposed(by: rx.disposeBag)
} }
} }