Skip to content
Snippets Groups Projects
Commit 1ab5963f authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Add MakeReportDrawer functor

parent 28b07dfd
No related branches found
No related tags found
3 merge requests!71Releasing v1.1.5 (214),!69Implemented filtering for banned/blocked users and reporting,!67v1.1.5 b(203)
......@@ -749,6 +749,8 @@ let package = Package(
.target(
name: "ReportingFeature",
dependencies: [
.target(name: "DrawerFeature"),
.target(name: "Shared"),
.product(name: "SwiftCSV", package: "SwiftCSV"),
.product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"),
],
......
import DrawerFeature
import Shared
import UIKit
import XCTestDynamicOverlay
public struct MakeReportDrawer {
public struct Config {
public init(
onReport: @escaping () -> Void = {},
onCancel: @escaping () -> Void = {}
) {
self.onReport = onReport
self.onCancel = onCancel
}
public var onReport: () -> Void
public var onCancel: () -> Void
}
public var run: (Config) -> UIViewController
public func callAsFunction(_ config: Config) -> UIViewController {
run(config)
}
}
extension MakeReportDrawer {
public static let live = MakeReportDrawer { config in
let cancelButton = CapsuleButton()
cancelButton.setStyle(.seeThrough)
cancelButton.setTitle(Localized.Chat.Report.cancel, for: .normal)
let reportButton = CapsuleButton()
reportButton.setStyle(.red)
reportButton.setTitle(Localized.Chat.Report.action, for: .normal)
let drawer = DrawerController(with: [
DrawerImage(
image: Asset.drawerNegative.image
),
DrawerText(
font: Fonts.Mulish.semiBold.font(size: 18.0),
text: Localized.Chat.Report.title,
color: Asset.neutralActive.color
),
DrawerText(
font: Fonts.Mulish.semiBold.font(size: 14.0),
text: Localized.Chat.Report.subtitle,
color: Asset.neutralWeak.color,
lineHeightMultiple: 1.35,
spacingAfter: 25
),
DrawerStack(
axis: .vertical,
spacing: 20.0,
views: [reportButton, cancelButton]
)
])
reportButton.publisher(for: .touchUpInside)
.receive(on: DispatchQueue.main)
.sink { [unowned drawer] in
drawer.dismiss(animated: true) {
config.onReport()
}
}
.store(in: &drawer.cancellables)
cancelButton.publisher(for: .touchUpInside)
.receive(on: DispatchQueue.main)
.sink { [unowned drawer] in
drawer.dismiss(animated: true) {
config.onCancel()
}
}
.store(in: &drawer.cancellables)
return drawer
}
}
extension MakeReportDrawer {
public static let unimplemented = MakeReportDrawer(
run: XCTUnimplemented("\(Self.self)")
)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment