Files
Attractor/App/Scene Delegates/ReaderSceneDelegate.swift
2022-08-22 17:10:47 -07:00

42 lines
1.5 KiB
Swift

//
// ReaderSceneDelegate.swift
// App
//
// Created by James Magahern on 8/22/22.
//
import UIKit
internal enum ReaderUserActivityKeys: String {
case htmlString
case baseURL
}
class ReaderSceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
var readerViewController: ReaderViewController?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)
{
guard let windowScene = (scene as? UIWindowScene) else { return }
guard let activity = connectionOptions.userActivities.first else { return }
guard let userInfo = activity.userInfo, let htmlString: String = userInfo[ReaderUserActivityKeys.htmlString.rawValue] as? String else { return }
let baseURL = userInfo[ReaderUserActivityKeys.baseURL.rawValue] as? URL
let window = UIWindow(windowScene: windowScene)
let readerViewController = ReaderViewController(readableHTMLString: htmlString, baseURL: baseURL)
readerViewController.title = activity.title
self.readerViewController = readerViewController
window.rootViewController = UINavigationController(rootViewController: readerViewController)
windowScene.title = activity.title ?? "Reader"
windowScene.sizeRestrictions?.maximumSize = CGSize(width: 700.0, height: 1000.0)
window.makeKeyAndVisible()
self.window = window
}
}