mirror of
https://github.com/mastodon/mastodon-ios.git
synced 2025-02-02 18:36:44 +01:00
chore: code clean up
This commit is contained in:
parent
b47f8ead37
commit
26c6b8f2ee
@ -8,7 +8,6 @@
|
||||
import UIKit
|
||||
import Combine
|
||||
import MastodonCore
|
||||
import MastodonUI
|
||||
|
||||
final class AutoCompleteTopChevronView: UIView {
|
||||
|
||||
|
@ -66,9 +66,9 @@ extension ComposeContentViewModel {
|
||||
guard let replyTo = status.object(in: context.managedObjectContext) else { return }
|
||||
cell.statusView.configure(status: replyTo)
|
||||
}
|
||||
case .hashtag(let hashtag):
|
||||
case .hashtag:
|
||||
break
|
||||
case .mention(let user):
|
||||
case .mention:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
@ -342,11 +342,6 @@ extension ComposeContentViewModel {
|
||||
return true
|
||||
}
|
||||
|
||||
isMediaUploadAllSuccess.sink { result in
|
||||
print(result)
|
||||
}
|
||||
.store(in: &disposeBag)
|
||||
|
||||
let isPollOptionsAllValid = $pollOptions
|
||||
.map { options in
|
||||
return Publishers.MergeMany(options.map { $0.$text })
|
||||
@ -517,6 +512,7 @@ extension ComposeContentViewModel {
|
||||
}
|
||||
|
||||
extension ComposeContentViewModel {
|
||||
|
||||
public enum AttachmentPrecondition: Error, LocalizedError {
|
||||
case videoAttachWithPhoto
|
||||
case moreThanOneVideo
|
||||
@ -541,6 +537,7 @@ extension ComposeContentViewModel {
|
||||
public func checkAttachmentPrecondition() throws {
|
||||
let attachmentViewModels = self.attachmentViewModels
|
||||
guard !attachmentViewModels.isEmpty else { return }
|
||||
|
||||
var photoAttachmentViewModels: [AttachmentViewModel] = []
|
||||
var videoAttachmentViewModels: [AttachmentViewModel] = []
|
||||
attachmentViewModels.forEach { attachmentViewModel in
|
||||
|
@ -7,74 +7,12 @@
|
||||
|
||||
import os.log
|
||||
import UIKit
|
||||
import Combine
|
||||
import MetaTextKit
|
||||
import UITextView_Placeholder
|
||||
import MastodonAsset
|
||||
import MastodonLocalization
|
||||
import UIHostingConfigurationBackport
|
||||
|
||||
//protocol ComposeStatusContentTableViewCellDelegate: AnyObject {
|
||||
// func composeStatusContentTableViewCell(_ cell: ComposeStatusContentTableViewCell, textViewShouldBeginEditing textView: UITextView) -> Bool
|
||||
//}
|
||||
|
||||
final class ComposeContentTableViewCell: UITableViewCell {
|
||||
|
||||
let logger = Logger(subsystem: "ComposeContentTableViewCell", category: "View")
|
||||
|
||||
// var disposeBag = Set<AnyCancellable>()
|
||||
// weak var delegate: ComposeStatusContentTableViewCellDelegate?
|
||||
//
|
||||
// let statusView = StatusView()
|
||||
//
|
||||
// let statusContentWarningEditorView = StatusContentWarningEditorView()
|
||||
//
|
||||
// let textEditorViewContainerView = UIView()
|
||||
//
|
||||
// static let metaTextViewTag: Int = 333
|
||||
// let metaText: MetaText = {
|
||||
// let metaText = MetaText()
|
||||
// metaText.textView.backgroundColor = .clear
|
||||
// metaText.textView.isScrollEnabled = false
|
||||
// metaText.textView.keyboardType = .twitter
|
||||
// metaText.textView.textDragInteraction?.isEnabled = false // disable drag for link and attachment
|
||||
// metaText.textView.textContainer.lineFragmentPadding = 10 // leading inset
|
||||
// metaText.textView.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .regular))
|
||||
// metaText.textView.attributedPlaceholder = {
|
||||
// var attributes = metaText.textAttributes
|
||||
// attributes[.foregroundColor] = Asset.Colors.Label.secondary.color
|
||||
// return NSAttributedString(
|
||||
// string: L10n.Scene.Compose.contentInputPlaceholder,
|
||||
// attributes: attributes
|
||||
// )
|
||||
// }()
|
||||
// metaText.paragraphStyle = {
|
||||
// let style = NSMutableParagraphStyle()
|
||||
// style.lineSpacing = 5
|
||||
// style.paragraphSpacing = 0
|
||||
// return style
|
||||
// }()
|
||||
// metaText.textAttributes = [
|
||||
// .font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)),
|
||||
// .foregroundColor: Asset.Colors.Label.primary.color,
|
||||
// ]
|
||||
// metaText.linkAttributes = [
|
||||
// .font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold)),
|
||||
// .foregroundColor: Asset.Colors.brand.color,
|
||||
// ]
|
||||
// return metaText
|
||||
// }()
|
||||
//
|
||||
// // output
|
||||
// let contentWarningContent = PassthroughSubject<String, Never>()
|
||||
//
|
||||
// override func prepareForReuse() {
|
||||
// super.prepareForReuse()
|
||||
//
|
||||
// metaText.delegate = nil
|
||||
// metaText.textView.delegate = nil
|
||||
// }
|
||||
|
||||
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||
_init()
|
||||
@ -93,79 +31,6 @@ extension ComposeContentTableViewCell {
|
||||
selectionStyle = .none
|
||||
layer.zPosition = 999
|
||||
backgroundColor = .clear
|
||||
|
||||
// let containerStackView = UIStackView()
|
||||
// containerStackView.axis = .vertical
|
||||
// containerStackView.translatesAutoresizingMaskIntoConstraints = false
|
||||
// contentView.addSubview(containerStackView)
|
||||
// NSLayoutConstraint.activate([
|
||||
// containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor),
|
||||
// containerStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
|
||||
// containerStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor),
|
||||
// containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor),
|
||||
// ])
|
||||
// containerStackView.preservesSuperviewLayoutMargins = true
|
||||
//
|
||||
// containerStackView.addArrangedSubview(statusContentWarningEditorView)
|
||||
// statusContentWarningEditorView.setContentHuggingPriority(.required - 1, for: .vertical)
|
||||
//
|
||||
// let statusContainerView = UIView()
|
||||
// statusContainerView.preservesSuperviewLayoutMargins = true
|
||||
// containerStackView.addArrangedSubview(statusContainerView)
|
||||
// statusView.translatesAutoresizingMaskIntoConstraints = false
|
||||
// statusContainerView.addSubview(statusView)
|
||||
// NSLayoutConstraint.activate([
|
||||
// statusView.topAnchor.constraint(equalTo: statusContainerView.topAnchor, constant: 20),
|
||||
// statusView.leadingAnchor.constraint(equalTo: statusContainerView.leadingAnchor),
|
||||
// statusView.trailingAnchor.constraint(equalTo: statusContainerView.trailingAnchor),
|
||||
// statusView.bottomAnchor.constraint(equalTo: statusContainerView.bottomAnchor),
|
||||
// ])
|
||||
// statusView.setup(style: .composeStatusAuthor)
|
||||
//
|
||||
// containerStackView.addArrangedSubview(textEditorViewContainerView)
|
||||
// metaText.textView.translatesAutoresizingMaskIntoConstraints = false
|
||||
// textEditorViewContainerView.addSubview(metaText.textView)
|
||||
// NSLayoutConstraint.activate([
|
||||
// metaText.textView.topAnchor.constraint(equalTo: textEditorViewContainerView.topAnchor),
|
||||
// metaText.textView.leadingAnchor.constraint(equalTo: textEditorViewContainerView.layoutMarginsGuide.leadingAnchor),
|
||||
// metaText.textView.trailingAnchor.constraint(equalTo: textEditorViewContainerView.layoutMarginsGuide.trailingAnchor),
|
||||
// metaText.textView.bottomAnchor.constraint(equalTo: textEditorViewContainerView.bottomAnchor),
|
||||
// metaText.textView.heightAnchor.constraint(greaterThanOrEqualToConstant: 64).priority(.defaultHigh),
|
||||
// ])
|
||||
// statusContentWarningEditorView.textView.delegate = self
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - UITextViewDelegate
|
||||
//extension ComposeStatusContentTableViewCell: UITextViewDelegate {
|
||||
//
|
||||
// func textViewShouldBeginEditing(_ textView: UITextView) -> Bool {
|
||||
// return delegate?.composeStatusContentTableViewCell(self, textViewShouldBeginEditing: textView) ?? true
|
||||
// }
|
||||
//
|
||||
// func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
|
||||
// switch textView {
|
||||
// case statusContentWarningEditorView.textView:
|
||||
// // disable input line break
|
||||
// guard text != "\n" else { return false }
|
||||
// return true
|
||||
// default:
|
||||
// assertionFailure()
|
||||
// return true
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// func textViewDidChange(_ textView: UITextView) {
|
||||
// logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): text: \(textView.text ?? "<nil>")")
|
||||
// guard textView === statusContentWarningEditorView.textView else { return }
|
||||
// // replace line break with space
|
||||
// // needs check input state to prevent break the IME
|
||||
// if textView.markedTextRange == nil {
|
||||
// textView.text = textView.text.replacingOccurrences(of: "\n", with: " ")
|
||||
// }
|
||||
// contentWarningContent.send(textView.text)
|
||||
// }
|
||||
//
|
||||
//}
|
||||
|
||||
|
@ -1,172 +0,0 @@
|
||||
//
|
||||
// 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
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//}
|
||||
//
|
@ -1,209 +0,0 @@
|
||||
//
|
||||
// ComposeStatusPollTableViewCell.swift
|
||||
// Mastodon
|
||||
//
|
||||
// Created by MainasuK Cirno on 2021-6-29.
|
||||
//
|
||||
|
||||
import os.log
|
||||
import UIKit
|
||||
import Combine
|
||||
import MastodonAsset
|
||||
import MastodonLocalization
|
||||
|
||||
//protocol ComposeStatusPollTableViewCellDelegate: AnyObject {
|
||||
// func composeStatusPollTableViewCell(_ cell: ComposeStatusPollTableViewCell, pollOptionAttributesDidReorder options: [ComposeStatusPollItem.PollOptionAttribute])
|
||||
//}
|
||||
//
|
||||
//final class ComposeStatusPollTableViewCell: UITableViewCell {
|
||||
//
|
||||
// let logger = Logger(subsystem: "ComposeStatusPollTableViewCell", category: "UI")
|
||||
//
|
||||
// private(set) var dataSource: UICollectionViewDiffableDataSource<ComposeStatusPollSection, ComposeStatusPollItem>!
|
||||
// var observations = Set<NSKeyValueObservation>()
|
||||
//
|
||||
// weak var customEmojiPickerInputViewModel: CustomEmojiPickerInputViewModel?
|
||||
// weak var delegate: ComposeStatusPollTableViewCellDelegate?
|
||||
// weak var composeStatusPollOptionCollectionViewCellDelegate: ComposeStatusPollOptionCollectionViewCellDelegate?
|
||||
// weak var composeStatusPollOptionAppendEntryCollectionViewCellDelegate: ComposeStatusPollOptionAppendEntryCollectionViewCellDelegate?
|
||||
// weak var composeStatusPollExpiresOptionCollectionViewCellDelegate: ComposeStatusPollExpiresOptionCollectionViewCellDelegate?
|
||||
//
|
||||
// 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 = ComposeStatusPollTableViewCell.createLayout()
|
||||
// let collectionView = UICollectionView(frame: .zero, collectionViewLayout: collectionViewLayout)
|
||||
// collectionView.register(ComposeStatusPollOptionCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: ComposeStatusPollOptionCollectionViewCell.self))
|
||||
// collectionView.register(ComposeStatusPollOptionAppendEntryCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: ComposeStatusPollOptionAppendEntryCollectionViewCell.self))
|
||||
// collectionView.register(ComposeStatusPollExpiresOptionCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: ComposeStatusPollExpiresOptionCollectionViewCell.self))
|
||||
// collectionView.backgroundColor = .clear
|
||||
// collectionView.alwaysBounceVertical = true
|
||||
// collectionView.isScrollEnabled = false
|
||||
// collectionView.dragInteractionEnabled = true
|
||||
// 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 ComposeStatusPollTableViewCell {
|
||||
//
|
||||
// private func _init() {
|
||||
// backgroundColor = .clear
|
||||
// contentView.backgroundColor = .clear
|
||||
//
|
||||
// collectionView.translatesAutoresizingMaskIntoConstraints = false
|
||||
// contentView.addSubview(collectionView)
|
||||
// collectionViewHeightLayoutConstraint = collectionView.heightAnchor.constraint(equalToConstant: 300).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 = self else { return UICollectionViewCell() }
|
||||
//
|
||||
// switch item {
|
||||
// case .pollOption(let attribute):
|
||||
// let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: ComposeStatusPollOptionCollectionViewCell.self), for: indexPath) as! ComposeStatusPollOptionCollectionViewCell
|
||||
// cell.pollOptionView.optionTextField.text = attribute.option.value
|
||||
// cell.pollOptionView.optionTextField.placeholder = L10n.Scene.Compose.Poll.optionNumber(indexPath.item + 1)
|
||||
// cell.pollOption
|
||||
// .receive(on: DispatchQueue.main)
|
||||
// .assign(to: \.value, on: attribute.option)
|
||||
// .store(in: &cell.disposeBag)
|
||||
// cell.delegate = self.composeStatusPollOptionCollectionViewCellDelegate
|
||||
// if let customEmojiPickerInputViewModel = self.customEmojiPickerInputViewModel {
|
||||
// ComposeStatusSection.configureCustomEmojiPicker(viewModel: customEmojiPickerInputViewModel, customEmojiReplaceableTextInput: cell.pollOptionView.optionTextField, disposeBag: &cell.disposeBag)
|
||||
// }
|
||||
// return cell
|
||||
// case .pollOptionAppendEntry:
|
||||
// let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: ComposeStatusPollOptionAppendEntryCollectionViewCell.self), for: indexPath) as! ComposeStatusPollOptionAppendEntryCollectionViewCell
|
||||
// cell.delegate = self.composeStatusPollOptionAppendEntryCollectionViewCellDelegate
|
||||
// return cell
|
||||
// case .pollExpiresOption(let attribute):
|
||||
// let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: ComposeStatusPollExpiresOptionCollectionViewCell.self), for: indexPath) as! ComposeStatusPollExpiresOptionCollectionViewCell
|
||||
// cell.durationButton.setTitle(L10n.Scene.Compose.Poll.durationTime(attribute.expiresOption.value.title), for: .normal)
|
||||
// attribute.expiresOption
|
||||
// .receive(on: DispatchQueue.main)
|
||||
// .sink { [weak cell] expiresOption in
|
||||
// guard let cell = cell else { return }
|
||||
// cell.durationButton.setTitle(L10n.Scene.Compose.Poll.durationTime(expiresOption.title), for: .normal)
|
||||
// }
|
||||
// .store(in: &cell.disposeBag)
|
||||
// cell.delegate = self.composeStatusPollExpiresOptionCollectionViewCellDelegate
|
||||
// return cell
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// collectionView.dragDelegate = self
|
||||
// collectionView.dropDelegate = self
|
||||
// }
|
||||
//
|
||||
//}
|
||||
//
|
||||
//// MARK: - UICollectionViewDragDelegate
|
||||
//extension ComposeStatusPollTableViewCell: UICollectionViewDragDelegate {
|
||||
//
|
||||
// func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] {
|
||||
// guard let item = dataSource.itemIdentifier(for: indexPath) else { return [] }
|
||||
// switch item {
|
||||
// case .pollOption:
|
||||
// let itemProvider = NSItemProvider(object: String(item.hashValue) as NSString)
|
||||
// let dragItem = UIDragItem(itemProvider: itemProvider)
|
||||
// dragItem.localObject = item
|
||||
// return [dragItem]
|
||||
// default:
|
||||
// return []
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// func collectionView(_ collectionView: UICollectionView, dragSessionIsRestrictedToDraggingApplication session: UIDragSession) -> Bool {
|
||||
// // drag to app should be the same app
|
||||
// return true
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//// MARK: - UICollectionViewDropDelegate
|
||||
//extension ComposeStatusPollTableViewCell: UICollectionViewDropDelegate {
|
||||
// // didUpdate
|
||||
// func collectionView(_ collectionView: UICollectionView, dropSessionDidUpdate session: UIDropSession, withDestinationIndexPath destinationIndexPath: IndexPath?) -> UICollectionViewDropProposal {
|
||||
// guard collectionView.hasActiveDrag,
|
||||
// let destinationIndexPath = destinationIndexPath,
|
||||
// let item = dataSource.itemIdentifier(for: destinationIndexPath)
|
||||
// else {
|
||||
// return UICollectionViewDropProposal(operation: .forbidden)
|
||||
// }
|
||||
//
|
||||
// switch item {
|
||||
// case .pollOption:
|
||||
// return UICollectionViewDropProposal(operation: .move, intent: .insertAtDestinationIndexPath)
|
||||
// default:
|
||||
// return UICollectionViewDropProposal(operation: .cancel)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // performDrop
|
||||
// func collectionView(_ collectionView: UICollectionView, performDropWith coordinator: UICollectionViewDropCoordinator) {
|
||||
// guard let dropItem = coordinator.items.first,
|
||||
// let item = dropItem.dragItem.localObject as? ComposeStatusPollItem,
|
||||
// case .pollOption = item
|
||||
// else { return }
|
||||
//
|
||||
// guard coordinator.proposal.operation == .move else { return }
|
||||
// guard let destinationIndexPath = coordinator.destinationIndexPath,
|
||||
// let _ = collectionView.cellForItem(at: destinationIndexPath) as? ComposeStatusPollOptionCollectionViewCell
|
||||
// else { return }
|
||||
//
|
||||
// var snapshot = dataSource.snapshot()
|
||||
// guard destinationIndexPath.row < snapshot.itemIdentifiers.count else { return }
|
||||
// let anchorItem = snapshot.itemIdentifiers[destinationIndexPath.row]
|
||||
// snapshot.moveItem(item, afterItem: anchorItem)
|
||||
// dataSource.apply(snapshot)
|
||||
//
|
||||
// coordinator.drop(dropItem.dragItem, toItemAt: destinationIndexPath)
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//extension ComposeStatusPollTableViewCell: UICollectionViewDelegate {
|
||||
// func collectionView(_ collectionView: UICollectionView, targetIndexPathForMoveFromItemAt originalIndexPath: IndexPath, toProposedIndexPath proposedIndexPath: IndexPath) -> IndexPath {
|
||||
// logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): \(originalIndexPath.debugDescription) -> \(proposedIndexPath.debugDescription)")
|
||||
//
|
||||
// guard let _ = collectionView.cellForItem(at: proposedIndexPath) as? ComposeStatusPollOptionCollectionViewCell else {
|
||||
// return originalIndexPath
|
||||
// }
|
||||
//
|
||||
// return proposedIndexPath
|
||||
// }
|
||||
//}
|
Loading…
x
Reference in New Issue
Block a user