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

Add MakeAppScreenshot functor

parent db5438d6
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)
...@@ -746,7 +746,9 @@ let package = Package( ...@@ -746,7 +746,9 @@ let package = Package(
), ),
.target( .target(
name: "ReportingFeature", name: "ReportingFeature",
dependencies: [] dependencies: [
.product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"),
]
), ),
] ]
) )
import Foundation
import UIKit
import XCTestDynamicOverlay
public struct MakeAppScreenshot {
public enum Error: Swift.Error, Equatable {
case unableToGetForegroundWindowScene
case unableToGetKeyWindow
}
public var run: () throws -> UIImage
public func callAsFunction() throws -> UIImage {
try run()
}
}
extension MakeAppScreenshot {
public static let live = MakeAppScreenshot {
let scene: UIWindowScene? = UIApplication.shared.connectedScenes
.filter { $0.activationState == .foregroundActive }
.compactMap { $0 as? UIWindowScene }
.first
guard let scene = scene else {
throw Error.unableToGetForegroundWindowScene
}
let window: UIWindow? = scene.windows.first(where: \.isKeyWindow)
guard let keyWindow = window else {
throw Error.unableToGetKeyWindow
}
let rendererFormat = UIGraphicsImageRendererFormat()
rendererFormat.scale = scene.screen.scale
let renderer = UIGraphicsImageRenderer(
bounds: keyWindow.bounds,
format: rendererFormat
)
return renderer.image { ctx in
keyWindow.layer.render(in: ctx.cgContext)
}
}
}
extension MakeAppScreenshot {
public static let unimplemented = MakeAppScreenshot(
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