// // ShareViewController.swift // MastodonShareAction // // Created by MainasuK Cirno on 2021-7-16. // import os.log import UIKit import Combine import MastodonUI class ShareViewController: UIViewController { let logger = Logger(subsystem: "ShareViewController", category: "UI") var disposeBag = Set() let viewModel = ShareViewModel() let publishButton: UIButton = { let button = RoundedEdgesButton(type: .custom) button.setTitle(L10n.Scene.Compose.composeAction, for: .normal) button.titleLabel?.font = .systemFont(ofSize: 14, weight: .bold) button.setBackgroundImage(.placeholder(color: Asset.Colors.brandBlue.color), for: .normal) button.setBackgroundImage(.placeholder(color: Asset.Colors.brandBlue.color.withAlphaComponent(0.5)), for: .highlighted) button.setBackgroundImage(.placeholder(color: Asset.Colors.Button.disabled.color), for: .disabled) button.setTitleColor(.white, for: .normal) button.contentEdgeInsets = UIEdgeInsets(top: 6, left: 16, bottom: 5, right: 16) // set 28pt height button.adjustsImageWhenHighlighted = false return button }() private(set) lazy var cancelBarButtonItem = UIBarButtonItem(title: L10n.Common.Controls.Actions.cancel, style: .plain, target: self, action: #selector(ShareViewController.cancelBarButtonItemPressed(_:))) private(set) lazy var publishBarButtonItem: UIBarButtonItem = { let barButtonItem = UIBarButtonItem(customView: publishButton) barButtonItem.target = self barButtonItem.action = #selector(ShareViewController.publishBarButtonItemPressed(_:)) return barButtonItem }() let activityIndicatorBarButtonItem: UIBarButtonItem = { let indicatorView = UIActivityIndicatorView(style: .medium) let barButtonItem = UIBarButtonItem(customView: indicatorView) indicatorView.startAnimating() return barButtonItem }() // let tableView: ComposeTableView = { // let tableView = ComposeTableView() // tableView.register(ComposeStatusContentTableViewCell.self, forCellReuseIdentifier: String(describing: ComposeStatusContentTableViewCell.self)) // tableView.register(ComposeStatusAttachmentTableViewCell.self, forCellReuseIdentifier: String(describing: ComposeStatusAttachmentTableViewCell.self)) // tableView.alwaysBounceVertical = true // tableView.separatorStyle = .none // tableView.tableFooterView = UIView() // return tableView // }() } extension ShareViewController { override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = Asset.Colors.Background.systemBackground.color navigationItem.leftBarButtonItem = cancelBarButtonItem viewModel.isBusy .receive(on: DispatchQueue.main) .sink { [weak self] isBusy in guard let self = self else { return } self.navigationItem.rightBarButtonItem = isBusy ? self.activityIndicatorBarButtonItem : self.publishBarButtonItem } .store(in: &disposeBag) // viewModel.authentication // .receive(on: DispatchQueue.main) // .sink { [weak self] result in // guard let self = self else { return } // } } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) viewModel.viewDidAppear.value = true // extensionContext } } extension ShareViewController { @objc private func cancelBarButtonItemPressed(_ sender: UIBarButtonItem) { logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") extensionContext?.cancelRequest(withError: ShareViewModel.ShareError.userCancelShare) } @objc private func publishBarButtonItemPressed(_ sender: UIBarButtonItem) { logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") } }