metatext/Extensions/CollectionItem+Extensions.swift
Justin Mazzocchi 1fabcb41cc
Follow requests
2021-01-25 22:57:44 -08:00

64 lines
2.2 KiB
Swift

// Copyright © 2020 Metabolist. All rights reserved.
import UIKit
import ViewModels
extension CollectionItem {
static let cellClasses = [
StatusListCell.self,
AccountListCell.self,
LoadMoreCell.self,
NotificationListCell.self,
ConversationListCell.self,
TagTableViewCell.self,
UITableViewCell.self]
var cellClass: AnyClass {
switch self {
case .status:
return StatusListCell.self
case .account:
return AccountListCell.self
case .loadMore:
return LoadMoreCell.self
case let .notification(_, statusConfiguration):
return statusConfiguration == nil ? NotificationListCell.self : StatusListCell.self
case .conversation:
return ConversationListCell.self
case .tag:
return TagTableViewCell.self
case .moreResults:
return UITableViewCell.self
}
}
func estimatedHeight(width: CGFloat, identityContext: IdentityContext) -> CGFloat {
switch self {
case let .status(status, configuration):
return StatusView.estimatedHeight(
width: width,
identityContext: identityContext,
status: status,
configuration: configuration)
case let .account(account, configuration):
return AccountView.estimatedHeight(width: width, account: account, configuration: configuration)
case .loadMore:
return LoadMoreView.estimatedHeight
case let .notification(notification, configuration):
return NotificationView.estimatedHeight(
width: width,
identityContext: identityContext,
notification: notification,
configuration: configuration)
case let .conversation(conversation):
return ConversationView.estimatedHeight(
width: width,
identityContext: identityContext,
conversation: conversation)
case let .tag(tag):
return TagView.estimatedHeight(width: width, tag: tag)
case .moreResults:
return UITableView.automaticDimension
}
}
}