Imports System.IO
Imports System.Threading.Tasks
Imports Microsoft.Web.WebView2.Core

Public Class Frm_WebManual

    Private Async Sub Frm_WebManual_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Try
            ' WebView2 초기화

            Await InitializeWebView2Async()



            Try


                ' 가상 호스팅 설정
                If WebView21.CoreWebView2 Is Nothing Then
                    Return
                End If

                ' wwwroot 경로 확인
                Dim _wwwrootPath As String = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot")
                If String.IsNullOrEmpty(_wwwrootPath) Then
                    _wwwrootPath = Path.Combine(Application.StartupPath, "wwwroot")
                End If

                ' 디렉토리가 없으면 생성
                If Not Directory.Exists(_wwwrootPath) Then
                    Directory.CreateDirectory(_wwwrootPath)
                End If

                ' 가상 호스트 매핑 설정
                ' https://eco2.local/ -> 로컬 폴더 매핑
                WebView21.CoreWebView2.SetVirtualHostNameToFolderMapping(
                "eco2.local",
                _wwwrootPath,
                CoreWebView2HostResourceAccessKind.Allow)


                If WebView21 IsNot Nothing AndAlso WebView21.CoreWebView2 IsNot Nothing Then
                    ' 가상 호스트 URL 사용
                    Dim url As String = "https://eco2.local/index.html"
                    WebView21.CoreWebView2.Navigate(url)
                End If
            Catch ex As Exception
                MessageBox.Show("웹페이지 이동 중 오류가 발생했습니다: " & ex.Message,
                          "오류", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try

        Catch ex As Exception
            MessageBox.Show("웹페이지 로드 중 오류가 발생했습니다: " & ex.Message,
                          "오류", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

    Private Async Function InitializeWebView2Async() As Task
        Try
            ' Fixed Version 경로 설정
            Dim fixedVersionPath = Path.Combine(Application.StartupPath, "WebView2Runtime")
            Dim userDataFolder = Path.Combine(Application.StartupPath, "WebView2Data")

            ' Fixed Version이 있는지 확인
            If Directory.Exists(fixedVersionPath) Then
                ' Fixed Version 사용
                Dim env = Await CoreWebView2Environment.CreateAsync(fixedVersionPath, userDataFolder)
                Await WebView21.EnsureCoreWebView2Async(env)
            Else
                ' 시스템에 설치된 Runtime 사용 (폴백)
                Await WebView21.EnsureCoreWebView2Async(Nothing)
            End If

        Catch ex As Exception
            ' WebView2 Runtime을 찾을 수 없는 경우
            MessageBox.Show(
                "WebView2 구성 요소를 찾을 수 없습니다." & vbCrLf & vbCrLf &
                "프로그램 설치가 올바르지 않을 수 있습니다." & vbCrLf &
                "관리자에게 문의하시기 바랍니다.",
                "오류",
                MessageBoxButtons.OK,
                MessageBoxIcon.Error)

            Me.Close()
        End Try
    End Function


End Class