Remove obsolete code (IOS-192)
We didn't use that as someone rebuilt this screen in SwiftUI.
This commit is contained in:
parent
c523f97d0c
commit
255b6ab0ef
|
@ -407,7 +407,6 @@
|
||||||
DB98EB6027B10E150082E365 /* ReportCommentTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB5F27B10E150082E365 /* ReportCommentTableViewCell.swift */; };
|
DB98EB6027B10E150082E365 /* ReportCommentTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB5F27B10E150082E365 /* ReportCommentTableViewCell.swift */; };
|
||||||
DB98EB6227B215EB0082E365 /* ReportResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6127B215EB0082E365 /* ReportResultViewController.swift */; };
|
DB98EB6227B215EB0082E365 /* ReportResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6127B215EB0082E365 /* ReportResultViewController.swift */; };
|
||||||
DB98EB6527B216500082E365 /* ReportResultViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6427B216500082E365 /* ReportResultViewModel.swift */; };
|
DB98EB6527B216500082E365 /* ReportResultViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6427B216500082E365 /* ReportResultViewModel.swift */; };
|
||||||
DB98EB6927B21A7C0082E365 /* ReportResultActionTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6827B21A7C0082E365 /* ReportResultActionTableViewCell.swift */; };
|
|
||||||
DB9D6BE925E4F5340051B173 /* SearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6BE825E4F5340051B173 /* SearchViewController.swift */; };
|
DB9D6BE925E4F5340051B173 /* SearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6BE825E4F5340051B173 /* SearchViewController.swift */; };
|
||||||
DB9D6BF825E4F5690051B173 /* NotificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6BF725E4F5690051B173 /* NotificationViewController.swift */; };
|
DB9D6BF825E4F5690051B173 /* NotificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6BF725E4F5690051B173 /* NotificationViewController.swift */; };
|
||||||
DB9D6BFF25E4F5940051B173 /* ProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6BFE25E4F5940051B173 /* ProfileViewController.swift */; };
|
DB9D6BFF25E4F5940051B173 /* ProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6BFE25E4F5940051B173 /* ProfileViewController.swift */; };
|
||||||
|
@ -1132,7 +1131,6 @@
|
||||||
DB98EB5F27B10E150082E365 /* ReportCommentTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportCommentTableViewCell.swift; sourceTree = "<group>"; };
|
DB98EB5F27B10E150082E365 /* ReportCommentTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportCommentTableViewCell.swift; sourceTree = "<group>"; };
|
||||||
DB98EB6127B215EB0082E365 /* ReportResultViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportResultViewController.swift; sourceTree = "<group>"; };
|
DB98EB6127B215EB0082E365 /* ReportResultViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportResultViewController.swift; sourceTree = "<group>"; };
|
||||||
DB98EB6427B216500082E365 /* ReportResultViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportResultViewModel.swift; sourceTree = "<group>"; };
|
DB98EB6427B216500082E365 /* ReportResultViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportResultViewModel.swift; sourceTree = "<group>"; };
|
||||||
DB98EB6827B21A7C0082E365 /* ReportResultActionTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportResultActionTableViewCell.swift; sourceTree = "<group>"; };
|
|
||||||
DB9D6BE825E4F5340051B173 /* SearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewController.swift; sourceTree = "<group>"; };
|
DB9D6BE825E4F5340051B173 /* SearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewController.swift; sourceTree = "<group>"; };
|
||||||
DB9D6BF725E4F5690051B173 /* NotificationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewController.swift; sourceTree = "<group>"; };
|
DB9D6BF725E4F5690051B173 /* NotificationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewController.swift; sourceTree = "<group>"; };
|
||||||
DB9D6BFE25E4F5940051B173 /* ProfileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewController.swift; sourceTree = "<group>"; };
|
DB9D6BFE25E4F5940051B173 /* ProfileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewController.swift; sourceTree = "<group>"; };
|
||||||
|
@ -2685,7 +2683,6 @@
|
||||||
DB98EB4827B0F0CD0082E365 /* ReportStatusTableViewCell.swift */,
|
DB98EB4827B0F0CD0082E365 /* ReportStatusTableViewCell.swift */,
|
||||||
DB98EB4B27B0F2BC0082E365 /* ReportStatusTableViewCell+ViewModel.swift */,
|
DB98EB4B27B0F2BC0082E365 /* ReportStatusTableViewCell+ViewModel.swift */,
|
||||||
DB98EB5F27B10E150082E365 /* ReportCommentTableViewCell.swift */,
|
DB98EB5F27B10E150082E365 /* ReportCommentTableViewCell.swift */,
|
||||||
DB98EB6827B21A7C0082E365 /* ReportResultActionTableViewCell.swift */,
|
|
||||||
);
|
);
|
||||||
path = Cell;
|
path = Cell;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -3891,7 +3888,6 @@
|
||||||
2D76319F25C1521200929FB9 /* StatusSection.swift in Sources */,
|
2D76319F25C1521200929FB9 /* StatusSection.swift in Sources */,
|
||||||
DBA5A53526F0A36A00CACBAA /* AddAccountTableViewCell.swift in Sources */,
|
DBA5A53526F0A36A00CACBAA /* AddAccountTableViewCell.swift in Sources */,
|
||||||
2D35237A26256D920031AF25 /* NotificationSection.swift in Sources */,
|
2D35237A26256D920031AF25 /* NotificationSection.swift in Sources */,
|
||||||
DB98EB6927B21A7C0082E365 /* ReportResultActionTableViewCell.swift in Sources */,
|
|
||||||
DB9282B225F3222800823B15 /* PickServerEmptyStateView.swift in Sources */,
|
DB9282B225F3222800823B15 /* PickServerEmptyStateView.swift in Sources */,
|
||||||
DB697DDF278F524F004EF2F7 /* DataSourceFacade+Profile.swift in Sources */,
|
DB697DDF278F524F004EF2F7 /* DataSourceFacade+Profile.swift in Sources */,
|
||||||
DB1FD45025F26FA1004CFCFC /* MastodonPickServerViewModel+Diffable.swift in Sources */,
|
DB1FD45025F26FA1004CFCFC /* MastodonPickServerViewModel+Diffable.swift in Sources */,
|
||||||
|
|
|
@ -13,7 +13,6 @@ enum ReportItem: Hashable {
|
||||||
case header(context: HeaderContext)
|
case header(context: HeaderContext)
|
||||||
case status(record: MastodonStatus)
|
case status(record: MastodonStatus)
|
||||||
case comment(context: CommentContext)
|
case comment(context: CommentContext)
|
||||||
case result(record: ManagedObjectRecord<MastodonUser>)
|
|
||||||
case bottomLoader
|
case bottomLoader
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,6 @@ extension ReportSection {
|
||||||
tableView.register(ReportHeadlineTableViewCell.self, forCellReuseIdentifier: String(describing: ReportHeadlineTableViewCell.self))
|
tableView.register(ReportHeadlineTableViewCell.self, forCellReuseIdentifier: String(describing: ReportHeadlineTableViewCell.self))
|
||||||
tableView.register(ReportStatusTableViewCell.self, forCellReuseIdentifier: String(describing: ReportStatusTableViewCell.self))
|
tableView.register(ReportStatusTableViewCell.self, forCellReuseIdentifier: String(describing: ReportStatusTableViewCell.self))
|
||||||
tableView.register(ReportCommentTableViewCell.self, forCellReuseIdentifier: String(describing: ReportCommentTableViewCell.self))
|
tableView.register(ReportCommentTableViewCell.self, forCellReuseIdentifier: String(describing: ReportCommentTableViewCell.self))
|
||||||
tableView.register(ReportResultActionTableViewCell.self, forCellReuseIdentifier: String(describing: ReportResultActionTableViewCell.self))
|
|
||||||
tableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self))
|
tableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self))
|
||||||
|
|
||||||
return UITableViewDiffableDataSource(tableView: tableView) { tableView, indexPath, item -> UITableViewCell? in
|
return UITableViewDiffableDataSource(tableView: tableView) { tableView, indexPath, item -> UITableViewCell? in
|
||||||
|
@ -72,13 +71,6 @@ extension ReportSection {
|
||||||
}
|
}
|
||||||
.store(in: &cell.disposeBag)
|
.store(in: &cell.disposeBag)
|
||||||
return cell
|
return cell
|
||||||
case .result(let record):
|
|
||||||
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ReportResultActionTableViewCell.self), for: indexPath) as! ReportResultActionTableViewCell
|
|
||||||
context.managedObjectContext.performAndWait {
|
|
||||||
guard let user = record.object(in: context.managedObjectContext) else { return }
|
|
||||||
cell.avatarImageView.configure(configuration: .init(url: user.avatarImageURL()))
|
|
||||||
}
|
|
||||||
return cell
|
|
||||||
case .bottomLoader:
|
case .bottomLoader:
|
||||||
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self), for: indexPath) as! TimelineBottomLoaderTableViewCell
|
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self), for: indexPath) as! TimelineBottomLoaderTableViewCell
|
||||||
cell.activityIndicatorView.startAnimating()
|
cell.activityIndicatorView.startAnimating()
|
||||||
|
|
|
@ -1,140 +0,0 @@
|
||||||
//
|
|
||||||
// ReportResultActionTableViewCell.swift
|
|
||||||
// Mastodon
|
|
||||||
//
|
|
||||||
// Created by MainasuK on 2022-2-8.
|
|
||||||
//
|
|
||||||
|
|
||||||
import UIKit
|
|
||||||
import Combine
|
|
||||||
import MastodonAsset
|
|
||||||
import MastodonUI
|
|
||||||
import MastodonLocalization
|
|
||||||
|
|
||||||
final class ReportResultActionTableViewCell: UITableViewCell {
|
|
||||||
|
|
||||||
var disposeBag = Set<AnyCancellable>()
|
|
||||||
|
|
||||||
let containerView: UIStackView = {
|
|
||||||
let stackView = UIStackView()
|
|
||||||
stackView.axis = .vertical
|
|
||||||
return stackView
|
|
||||||
}()
|
|
||||||
|
|
||||||
let avatarImageView: AvatarImageView = {
|
|
||||||
let imageView = AvatarImageView()
|
|
||||||
imageView.configure(cornerConfiguration: .init(corner: .fixed(radius: 27)))
|
|
||||||
return imageView
|
|
||||||
}()
|
|
||||||
|
|
||||||
let reportBannerShadowContainer = ShadowBackgroundContainer()
|
|
||||||
let reportBannerLabel: UILabel = {
|
|
||||||
let label = UILabel()
|
|
||||||
let padding = Array(repeating: " ", count: 2).joined()
|
|
||||||
label.text = padding + L10n.Scene.Report.reported + padding
|
|
||||||
label.textColor = Asset.Scene.Report.reportBanner.color
|
|
||||||
label.font = FontFamily.Staatliches.regular.font(size: 49)
|
|
||||||
label.backgroundColor = Asset.Scene.Report.background.color
|
|
||||||
label.layer.borderColor = Asset.Scene.Report.reportBanner.color.cgColor
|
|
||||||
label.layer.borderWidth = 6
|
|
||||||
label.layer.masksToBounds = true
|
|
||||||
label.layer.cornerRadius = 12
|
|
||||||
return label
|
|
||||||
}()
|
|
||||||
|
|
||||||
override func prepareForReuse() {
|
|
||||||
super.prepareForReuse()
|
|
||||||
|
|
||||||
disposeBag.removeAll()
|
|
||||||
}
|
|
||||||
|
|
||||||
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
|
||||||
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
|
||||||
_init()
|
|
||||||
}
|
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
|
||||||
super.init(coder: coder)
|
|
||||||
_init()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
extension ReportResultActionTableViewCell {
|
|
||||||
|
|
||||||
private func _init() {
|
|
||||||
selectionStyle = .none
|
|
||||||
backgroundColor = .clear
|
|
||||||
|
|
||||||
containerView.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
contentView.addSubview(containerView)
|
|
||||||
NSLayoutConstraint.activate([
|
|
||||||
containerView.topAnchor.constraint(equalTo: contentView.topAnchor),
|
|
||||||
containerView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor),
|
|
||||||
containerView.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor),
|
|
||||||
containerView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor),
|
|
||||||
])
|
|
||||||
|
|
||||||
let avatarContainer = UIStackView()
|
|
||||||
avatarContainer.axis = .horizontal
|
|
||||||
containerView.addArrangedSubview(avatarContainer)
|
|
||||||
|
|
||||||
let avatarLeadingPaddingView = UIView()
|
|
||||||
let avatarTrailingPaddingView = UIView()
|
|
||||||
avatarLeadingPaddingView.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
avatarContainer.addArrangedSubview(avatarLeadingPaddingView)
|
|
||||||
avatarImageView.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
avatarContainer.addArrangedSubview(avatarImageView)
|
|
||||||
avatarTrailingPaddingView.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
avatarContainer.addArrangedSubview(avatarTrailingPaddingView)
|
|
||||||
NSLayoutConstraint.activate([
|
|
||||||
avatarImageView.widthAnchor.constraint(equalToConstant: 106).priority(.required - 1),
|
|
||||||
avatarImageView.heightAnchor.constraint(equalToConstant: 106).priority(.required - 1),
|
|
||||||
avatarLeadingPaddingView.widthAnchor.constraint(equalTo: avatarTrailingPaddingView.widthAnchor).priority(.defaultHigh),
|
|
||||||
])
|
|
||||||
|
|
||||||
reportBannerShadowContainer.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
avatarContainer.addSubview(reportBannerShadowContainer)
|
|
||||||
NSLayoutConstraint.activate([
|
|
||||||
reportBannerShadowContainer.centerXAnchor.constraint(equalTo: avatarImageView.centerXAnchor),
|
|
||||||
reportBannerShadowContainer.centerYAnchor.constraint(equalTo: avatarImageView.centerYAnchor),
|
|
||||||
])
|
|
||||||
reportBannerShadowContainer.transform = CGAffineTransform(rotationAngle: -(.pi / 180 * 5))
|
|
||||||
|
|
||||||
reportBannerLabel.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
reportBannerShadowContainer.addSubview(reportBannerLabel)
|
|
||||||
reportBannerLabel.pinToParent()
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
override func layoutSubviews() {
|
|
||||||
super.layoutSubviews()
|
|
||||||
|
|
||||||
reportBannerShadowContainer.layer.setupShadow(
|
|
||||||
color: .black,
|
|
||||||
alpha: 0.25,
|
|
||||||
x: 1,
|
|
||||||
y: 0.64,
|
|
||||||
blur: 0.64,
|
|
||||||
spread: 0,
|
|
||||||
roundedRect: reportBannerShadowContainer.bounds,
|
|
||||||
byRoundingCorners: .allCorners,
|
|
||||||
cornerRadii: CGSize(width: 12, height: 12)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#if DEBUG
|
|
||||||
import SwiftUI
|
|
||||||
struct ReportResultActionTableViewCell_Preview: PreviewProvider {
|
|
||||||
static var previews: some View {
|
|
||||||
UIViewPreview(width: 375) {
|
|
||||||
let cell = ReportResultActionTableViewCell()
|
|
||||||
cell.avatarImageView.configure(configuration: .init(image: .placeholder(color: .blue)))
|
|
||||||
return cell
|
|
||||||
}
|
|
||||||
.previewLayout(.fixed(width: 375, height: 106))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
|
@ -1,102 +0,0 @@
|
||||||
//
|
|
||||||
// MastodonUser.swift
|
|
||||||
// Mastodon
|
|
||||||
//
|
|
||||||
// Created by MainasuK Cirno on 2021/2/3.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
import CoreDataStack
|
|
||||||
import MastodonSDK
|
|
||||||
import MastodonMeta
|
|
||||||
|
|
||||||
extension MastodonUser {
|
|
||||||
|
|
||||||
public var displayNameWithFallback: String {
|
|
||||||
return !displayName.isEmpty ? displayName : username
|
|
||||||
}
|
|
||||||
|
|
||||||
public var acctWithDomain: String {
|
|
||||||
if !acct.contains("@") {
|
|
||||||
// Safe concat due to username cannot contains "@"
|
|
||||||
return username + "@" + domain
|
|
||||||
} else {
|
|
||||||
return acct
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public var domainFromAcct: String {
|
|
||||||
if !acct.contains("@") {
|
|
||||||
return domain
|
|
||||||
} else {
|
|
||||||
let domain = acct.split(separator: "@").last
|
|
||||||
return String(domain!)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
extension MastodonUser {
|
|
||||||
|
|
||||||
public func headerImageURL() -> URL? {
|
|
||||||
return URL(string: header)
|
|
||||||
}
|
|
||||||
|
|
||||||
public func headerImageURLWithFallback(domain: String) -> URL {
|
|
||||||
return URL(string: header) ?? URL(string: "https://\(domain)/headers/original/missing.png")!
|
|
||||||
}
|
|
||||||
|
|
||||||
public func avatarImageURL() -> URL? {
|
|
||||||
let string = UserDefaults.shared.preferredStaticAvatar ? avatarStatic ?? avatar : avatar
|
|
||||||
return URL(string: string)
|
|
||||||
}
|
|
||||||
|
|
||||||
public func avatarImageURLWithFallback(domain: String) -> URL {
|
|
||||||
return avatarImageURL() ?? URL(string: "https://\(domain)/avatars/original/missing.png")!
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
extension MastodonUser {
|
|
||||||
|
|
||||||
public var profileURL: URL {
|
|
||||||
if let urlString = self.url,
|
|
||||||
let url = URL(string: urlString) {
|
|
||||||
return url
|
|
||||||
} else {
|
|
||||||
return URL(string: "https://\(self.domain)/@\(username)")!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public var activityItems: [Any] {
|
|
||||||
var items: [Any] = []
|
|
||||||
items.append(profileURL)
|
|
||||||
return items
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
extension MastodonUser {
|
|
||||||
public var nameMetaContent: MastodonMetaContent? {
|
|
||||||
do {
|
|
||||||
let content = MastodonContent(content: displayNameWithFallback, emojis: emojis.asDictionary)
|
|
||||||
let metaContent = try MastodonMetaContent.convert(document: content)
|
|
||||||
return metaContent
|
|
||||||
} catch {
|
|
||||||
assertionFailure()
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public var bioMetaContent: MastodonMetaContent? {
|
|
||||||
guard let note = note else { return nil }
|
|
||||||
do {
|
|
||||||
let content = MastodonContent(content: note, emojis: emojis.asDictionary)
|
|
||||||
let metaContent = try MastodonMetaContent.convert(document: content)
|
|
||||||
return metaContent
|
|
||||||
} catch {
|
|
||||||
assertionFailure()
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue