mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
parent
2ff425921d
commit
a304c08216
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,13 +11,22 @@ import Foundation
|
|||||||
import RxCocoa
|
import RxCocoa
|
||||||
import RxDataSources
|
import RxDataSources
|
||||||
|
|
||||||
|
enum MessageListCellDateStyle {
|
||||||
|
/// 相对时间,例如 1分钟前、1小时前
|
||||||
|
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user