Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 4 additions & 17 deletions iBox/Sources/Shared/WebViewPreloader.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,38 +10,25 @@ import WebKit

class WebViewPreloader {
static let shared = WebViewPreloader()
private var webView: WKWebView?
private var favoriteView: (url: URL, webView: WKWebView)?
private var defaultUrl = URL(string: "https://profile.intra.42.fr/")!

private init() {}

func preload(url: URL) {
let webView = WKWebView()
webView.isOpaque = false
webView.load(URLRequest(url: url))
self.webView = webView
}

func preloadFavoriteView(url: URL?) {
let webView = WKWebView()
let config = WKWebViewConfiguration()
config.allowsInlineMediaPlayback = true

let webView = WKWebView(frame: .zero, configuration: config)
webView.isOpaque = false
webView.load(URLRequest(url: url ?? defaultUrl))
favoriteView = (url ?? defaultUrl, webView)
}

func getWebView() -> WKWebView? {
return webView
}

func getFavoriteView() -> WKWebView? {
return favoriteView?.webView
}

func resetWebView() {
webView = nil
}

func resetFavoriteView() {
guard let favoriteView else { return }
favoriteView.webView.load(URLRequest(url: favoriteView.url))
Expand Down
27 changes: 8 additions & 19 deletions iBox/Sources/Web/WebView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,9 @@ class WebView: UIView {
}

// MARK: - UI Components


private let webView = WKWebView().then {
$0.isOpaque = false
$0.scrollView.contentInsetAdjustmentBehavior = .always
}
private let webView:WKWebView

private let refreshControl = UIRefreshControl()

Expand All @@ -38,7 +36,12 @@ class WebView: UIView {
// MARK: - Initializer

override init(frame: CGRect) {
let config = WKWebViewConfiguration()
config.allowsInlineMediaPlayback = true

webView = WKWebView(frame: .zero, configuration: config)
super.init(frame: frame)

setupProperty()
setupHierarchy()
setupLayout()
Expand All @@ -51,6 +54,7 @@ class WebView: UIView {
deinit {
progressObserver?.invalidate()
webView.stopLoading()
webView.isOpaque = false
webView.navigationDelegate = nil
webView.scrollView.delegate = nil
}
Expand Down Expand Up @@ -107,19 +111,4 @@ extension WebView: WKNavigationDelegate {
}
}

// func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
// print("웹뷰 로딩 실패: \(error.localizedDescription)")
// }
//
// func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
// print("웹뷰 프로비저널 네비게이션 실패: \(error.localizedDescription)")
// }
//
// func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
// if let url = navigationAction.request.url {
// print("웹뷰가 리다이렉트 되는 URL: \(url.absoluteString)")
// }
//
// decisionHandler(.allow)
// }
}