Newer
Older
bremer-ios-app / BremerApp / View / LoginWebView.swift
yhornisse on 10 Sep 2023 1 KB Initial Commit
//
//  LoginWebView.swift
//  Bremer
//
//  Created by yhornisse on 2023/07/17.
//

import SwiftUI
import WebKit

struct LoginWebView: UIViewRepresentable {
    private let webView = WKWebView()
    @EnvironmentObject
    private var settingViewModel : SettingViewModel
    
    func makeUIView(context: Context) -> WKWebView {
        webView.navigationDelegate = context.coordinator
        webView.load(URLRequest(url: URL(string:"\(settingViewModel.getSetting().baseUrl)/login.html")!))
        return webView
    }
    
    func updateUIView(_ uiView: WKWebView, context: Context) {
    }
    
    func makeCoordinator() -> Coordinator {
        return Coordinator(self)
    }
}

extension LoginWebView {
    class Coordinator: NSObject, WKNavigationDelegate {
        private var parent: LoginWebView
        private let cookieName = "JSESSIONID"

        init(_ parent: LoginWebView) {
            self.parent = parent
        }
        
        func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
            webView.configuration.websiteDataStore.httpCookieStore.getAllCookies { cookies in
                for cookie in cookies {
                    if cookie.name == self.cookieName {
                        UserDefaults.standard.set(cookie.value, forKey: self.cookieName)
                        webView.configuration.websiteDataStore.httpCookieStore.delete(cookie)
                        return
                    }
                }
            }
        }
    }
}