chore: fix order of notification and layout issue

This commit is contained in:
sunxiaojian 2021-04-14 17:13:23 +08:00
parent 288a8025ce
commit 2d71a48e36
6 changed files with 11 additions and 7 deletions

View File

@ -95,6 +95,6 @@ extension MastodonNotification {
extension MastodonNotification: Managed {
public static var defaultSortDescriptors: [NSSortDescriptor] {
return [NSSortDescriptor(keyPath: \MastodonNotification.updatedAt, ascending: false)]
return [NSSortDescriptor(keyPath: \MastodonNotification.createAt, ascending: false)]
}
}

View File

@ -70,9 +70,10 @@ extension NotificationSection {
if let status = notification.status {
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: NotificationStatusTableViewCell.self), for: indexPath) as! NotificationStatusTableViewCell
cell.delegate = delegate
let frame = CGRect(x: 0, y: 0, width: tableView.readableContentGuide.layoutFrame.width - NotificationStatusTableViewCell.statusPadding.left - NotificationStatusTableViewCell.statusPadding.right, height: tableView.readableContentGuide.layoutFrame.height)
NotificationSection.configure(cell: cell,
dependency: dependency,
readableLayoutFrame: nil,
readableLayoutFrame: frame,
timestampUpdatePublisher: timestampUpdatePublisher,
status: status,
requestUserID: requestUserID,

View File

@ -35,6 +35,7 @@ final class NotificationViewController: UIViewController, NeedsDependency {
tableView.register(NotificationStatusTableViewCell.self, forCellReuseIdentifier: String(describing: NotificationStatusTableViewCell.self))
tableView.register(SearchBottomLoader.self, forCellReuseIdentifier: String(describing: SearchBottomLoader.self))
tableView.tableFooterView = UIView()
tableView.rowHeight = UITableView.automaticDimension
return tableView
}()
@ -135,9 +136,7 @@ extension NotificationViewController {
// MARK: - UITableViewDelegate
extension NotificationViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return 68
}
}
// MARK: - ContentOffsetAdjustableTimelineViewControllerDelegate

View File

@ -12,6 +12,7 @@ import UIKit
final class NotificationStatusTableViewCell: UITableViewCell {
static let actionImageBorderWidth: CGFloat = 2
static let statusPadding: UIEdgeInsets = UIEdgeInsets(top: 50, left: 73, bottom: 24, right: 24)
var disposeBag = Set<AnyCancellable>()
var delegate: NotificationTableViewCellDelegate?
@ -136,7 +137,7 @@ extension NotificationStatusTableViewCell {
statusContainer.pin(top: 40, left: 63, bottom: 14, right: 14)
contentView.addSubview(statusView)
statusView.pin(top: 40 + 12, left: 63 + 12, bottom: 14 + 12, right: 14 + 12)
statusView.pin(top: NotificationStatusTableViewCell.statusPadding.top, left: NotificationStatusTableViewCell.statusPadding.left, bottom: NotificationStatusTableViewCell.statusPadding.bottom, right: NotificationStatusTableViewCell.statusPadding.right)
}
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {

View File

@ -43,5 +43,8 @@ final class SearchBottomLoader: UITableViewCell {
backgroundColor = Asset.Colors.Background.systemGroupedBackground.color
contentView.addSubview(activityIndicatorView)
activityIndicatorView.constrainToCenter()
NSLayoutConstraint.activate([
contentView.heightAnchor.constraint(equalToConstant: 44)
])
}
}

View File

@ -43,7 +43,7 @@ extension APIService {
status = statusInCoreData
}
// use constrain to avoid repeated save
let notification = MastodonNotification.insert(into: self.backgroundManagedObjectContext, domain: domain, property: MastodonNotification.Property(id: notification.id, type: notification.type.rawValue, account: mastodonUser, status: status, createdAt: Date()))
let notification = MastodonNotification.insert(into: self.backgroundManagedObjectContext, domain: domain, property: MastodonNotification.Property(id: notification.id, type: notification.type.rawValue, account: mastodonUser, status: status, createdAt: notification.createdAt))
os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)", (#file as NSString).lastPathComponent, #line, #function, notification.type, notification.account.username)
}