mastodon-ios/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/TableViewCell/ComposeStatusAttachmentTabl...

173 lines
9.2 KiB
Swift

//
// ComposeStatusAttachmentTableViewCell.swift
// Mastodon
//
// Created by MainasuK Cirno on 2021-6-29.
//
import UIKit
import SwiftUI
import Combine
import AlamofireImage
import MastodonAsset
import MastodonCore
import MastodonLocalization
import UIHostingConfigurationBackport
//final class ComposeStatusAttachmentTableViewCell: UITableViewCell {
//
// private(set) var dataSource: UICollectionViewDiffableDataSource<ComposeStatusAttachmentSection, ComposeStatusAttachmentItem>!
// weak var composeStatusAttachmentCollectionViewCellDelegate: ComposeStatusAttachmentCollectionViewCellDelegate?
// var observations = Set<NSKeyValueObservation>()
//
// private static func createLayout() -> UICollectionViewLayout {
// let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(44))
// let item = NSCollectionLayoutItem(layoutSize: itemSize)
// let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(44))
// let group = NSCollectionLayoutGroup.vertical(layoutSize: groupSize, subitems: [item])
// let section = NSCollectionLayoutSection(group: group)
// section.contentInsetsReference = .readableContent
// return UICollectionViewCompositionalLayout(section: section)
// }
//
// private(set) var collectionViewHeightLayoutConstraint: NSLayoutConstraint!
// let collectionView: UICollectionView = {
// let collectionViewLayout = ComposeStatusAttachmentTableViewCell.createLayout()
// let collectionView = UICollectionView(frame: .zero, collectionViewLayout: collectionViewLayout)
// collectionView.register(ComposeStatusAttachmentCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: ComposeStatusAttachmentCollectionViewCell.self))
// collectionView.backgroundColor = .clear
// collectionView.alwaysBounceVertical = true
// collectionView.isScrollEnabled = false
// return collectionView
// }()
// let collectionViewHeightDidUpdate = PassthroughSubject<Void, Never>()
//
// override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
// super.init(style: style, reuseIdentifier: reuseIdentifier)
// _init()
// }
//
// required init?(coder: NSCoder) {
// super.init(coder: coder)
// _init()
// }
//
//}
//
//extension ComposeStatusAttachmentTableViewCell {
//
// private func _init() {
// backgroundColor = .clear
// contentView.backgroundColor = .clear
//
// collectionView.translatesAutoresizingMaskIntoConstraints = false
// contentView.addSubview(collectionView)
// collectionViewHeightLayoutConstraint = collectionView.heightAnchor.constraint(equalToConstant: 200).priority(.defaultHigh)
// NSLayoutConstraint.activate([
// collectionView.topAnchor.constraint(equalTo: contentView.topAnchor),
// collectionView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
// collectionView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor),
// collectionView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor),
// collectionViewHeightLayoutConstraint,
// ])
//
// collectionView.observe(\.contentSize, options: [.initial, .new]) { [weak self] collectionView, _ in
// guard let self = self else { return }
// self.collectionViewHeightLayoutConstraint.constant = collectionView.contentSize.height
// self.collectionViewHeightDidUpdate.send()
// }
// .store(in: &observations)
//
// self.dataSource = UICollectionViewDiffableDataSource(collectionView: collectionView) {
// [weak self] collectionView, indexPath, item -> UICollectionViewCell? in
// guard let _ = self else { return UICollectionViewCell() }
// switch item {
// case .attachment:
// let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: ComposeStatusAttachmentCollectionViewCell.self), for: indexPath) as! ComposeStatusAttachmentCollectionViewCell
// cell.contentConfiguration = UIHostingConfigurationBackport {
// HStack {
// Image(systemName: "star")
// Text("Favorites")
// Spacer()
// }
// }
//// cell.attachmentContainerView.descriptionTextView.text = attachmentService.description.value
//// cell.delegate = self.composeStatusAttachmentCollectionViewCellDelegate
//// attachmentService.thumbnailImage
//// .receive(on: DispatchQueue.main)
//// .sink { [weak cell] thumbnailImage in
//// guard let cell = cell else { return }
//// let size = cell.attachmentContainerView.previewImageView.frame.size != .zero ? cell.attachmentContainerView.previewImageView.frame.size : CGSize(width: 1, height: 1)
//// guard let image = thumbnailImage else {
//// let placeholder = UIImage.placeholder(
//// size: size,
//// color: ThemeService.shared.currentTheme.value.systemGroupedBackgroundColor
//// )
//// .af.imageRounded(
//// withCornerRadius: AttachmentContainerView.containerViewCornerRadius
//// )
//// cell.attachmentContainerView.previewImageView.image = placeholder
//// return
//// }
//// // cannot get correct size. set corner radius on layer
//// cell.attachmentContainerView.previewImageView.image = image
//// }
//// .store(in: &cell.disposeBag)
//// Publishers.CombineLatest(
//// attachmentService.uploadStateMachineSubject.eraseToAnyPublisher(),
//// attachmentService.error.eraseToAnyPublisher()
//// )
//// .receive(on: DispatchQueue.main)
//// .sink { [weak cell, weak attachmentService] uploadState, error in
//// guard let cell = cell else { return }
//// guard let attachmentService = attachmentService else { return }
//// cell.attachmentContainerView.emptyStateView.isHidden = error == nil
//// cell.attachmentContainerView.descriptionBackgroundView.isHidden = error != nil
//// if let error = error {
//// cell.attachmentContainerView.activityIndicatorView.stopAnimating()
//// cell.attachmentContainerView.emptyStateView.label.text = error.localizedDescription
//// } else {
//// guard let uploadState = uploadState else { return }
//// switch uploadState {
//// case is MastodonAttachmentService.UploadState.Finish:
//// cell.attachmentContainerView.activityIndicatorView.stopAnimating()
//// case is MastodonAttachmentService.UploadState.Fail:
//// cell.attachmentContainerView.activityIndicatorView.stopAnimating()
//// // FIXME: not display
//// cell.attachmentContainerView.emptyStateView.label.text = {
//// if let file = attachmentService.file.value {
//// switch file {
//// case .jpeg, .png, .gif:
//// return L10n.Scene.Compose.Attachment.attachmentBroken(L10n.Scene.Compose.Attachment.photo)
//// case .other:
//// return L10n.Scene.Compose.Attachment.attachmentBroken(L10n.Scene.Compose.Attachment.video)
//// }
//// } else {
//// return L10n.Scene.Compose.Attachment.attachmentBroken(L10n.Scene.Compose.Attachment.photo)
//// }
//// }()
//// default:
//// break
//// }
//// }
//// }
//// .store(in: &cell.disposeBag)
//// NotificationCenter.default.publisher(
//// for: UITextView.textDidChangeNotification,
//// object: cell.attachmentContainerView.descriptionTextView
//// )
//// .receive(on: DispatchQueue.main)
//// .sink { notification in
//// guard let textField = notification.object as? UITextView else { return }
//// let text = textField.text?.trimmingCharacters(in: .whitespacesAndNewlines)
//// attachmentService.description.value = text
//// }
//// .store(in: &cell.disposeBag)
// return cell
// }
// }
// }
//
//}
//