clan-app: Add webview hot-reloading

This commit is contained in:
Qubasa
2024-07-09 15:39:27 +02:00
parent 76e7e1f50f
commit cfde5fa2f8
7 changed files with 88 additions and 16 deletions

View File

@@ -1,7 +1,6 @@
import dataclasses
import json
import logging
import sys
import threading
from collections.abc import Callable
from dataclasses import fields, is_dataclass
@@ -18,10 +17,6 @@ gi.require_version("WebKit", "6.0")
from gi.repository import Gio, GLib, Gtk, WebKit
site_index: Path = (
Path(sys.argv[0]).absolute() / Path("../..") / Path("clan_app/.webui/index.html")
).resolve()
log = logging.getLogger(__name__)
@@ -201,7 +196,7 @@ def from_dict(t: type, data: dict[str, Any] | None) -> Any:
class WebView:
def __init__(self, methods: dict[str, Callable]) -> None:
def __init__(self, content_uri: str, methods: dict[str, Callable]) -> None:
self.method_registry: dict[str, Callable] = methods
self.webview = WebKit.WebView()
@@ -217,7 +212,7 @@ class WebView:
self.manager.register_script_message_handler("gtk")
self.manager.connect("script-message-received", self.on_message_received)
self.webview.load_uri(f"file://{site_index}")
self.webview.load_uri(content_uri)
# global mutex lock to ensure functions run sequentially
self.mutex_lock = Lock()