summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
Diffstat (limited to 'backend')
-rw-r--r--backend/decky_loader/loader.py14
-rw-r--r--backend/decky_loader/plugin/imports/decky.py5
-rw-r--r--backend/decky_loader/plugin/imports/decky.pyi5
-rw-r--r--backend/decky_loader/plugin/plugin.py2
-rw-r--r--backend/decky_loader/plugin/sandboxed_plugin.py6
5 files changed, 11 insertions, 21 deletions
diff --git a/backend/decky_loader/loader.py b/backend/decky_loader/loader.py
index aad595e7..9eecb575 100644
--- a/backend/decky_loader/loader.py
+++ b/backend/decky_loader/loader.py
@@ -8,7 +8,6 @@ from typing import Any, Tuple, Dict
from aiohttp import web
from os.path import exists
-from attr import dataclass
from watchdog.events import RegexMatchingEventHandler, DirCreatedEvent, DirModifiedEvent, FileCreatedEvent, FileModifiedEvent # type: ignore
from watchdog.observers import Observer # type: ignore
@@ -66,12 +65,6 @@ class FileChangeHandler(RegexMatchingEventHandler):
self.logger.debug(f"file modified: {src_path}")
self.maybe_reload(src_path)
-@dataclass
-class PluginEvent:
- plugin_name: str
- event: str
- data: str
-
class Loader:
def __init__(self, server_instance: PluginManager, ws: WSRouter, plugin_path: str, loop: AbstractEventLoop, live_reload: bool = False) -> None:
self.loop = loop
@@ -149,10 +142,9 @@ class Loader:
def import_plugin(self, file: str, plugin_directory: str, refresh: bool | None = False, batch: bool | None = False):
try:
- async def plugin_emitted_event(event: str, data: Any):
- self.logger.debug(f"PLUGIN EMITTED EVENT: {str(event)} {data}")
- event_data = PluginEvent(plugin_name=plugin.name, event=event, data=data)
- await self.ws.emit("loader/plugin_event", event_data)
+ async def plugin_emitted_event(event: str, args: Any):
+ self.logger.debug(f"PLUGIN EMITTED EVENT: {event} with args {args}")
+ await self.ws.emit(f"loader/plugin_event", {plugin:plugin.name, event:event, args:args})
plugin = PluginWrapper(file, plugin_directory, self.plugin_path, plugin_emitted_event)
if plugin.name in self.plugins:
diff --git a/backend/decky_loader/plugin/imports/decky.py b/backend/decky_loader/plugin/imports/decky.py
index 9a784ec4..6c5173de 100644
--- a/backend/decky_loader/plugin/imports/decky.py
+++ b/backend/decky_loader/plugin/imports/decky.py
@@ -19,7 +19,7 @@ import subprocess
import logging
import time
-from typing import TypeVar, Type
+from typing import Any
"""
Constants
@@ -213,9 +213,8 @@ logger.setLevel(logging.INFO)
"""
Event handling
"""
-DataType = TypeVar("DataType")
# TODO better docstring im lazy
-async def emit(event: str, data: DataType | None = None, data_type: Type[DataType] | None = None) -> None:
+async def emit(event: str, *args: Any) -> None:
"""
Send an event to the frontend.
"""
diff --git a/backend/decky_loader/plugin/imports/decky.pyi b/backend/decky_loader/plugin/imports/decky.pyi
index 7a0dfa6a..50a0f66c 100644
--- a/backend/decky_loader/plugin/imports/decky.pyi
+++ b/backend/decky_loader/plugin/imports/decky.pyi
@@ -16,7 +16,7 @@ __version__ = '0.1.0'
import logging
-from typing import TypeVar, Type
+from typing import Any
"""
Constants
@@ -177,9 +177,8 @@ logger: logging.Logger
"""
Event handling
"""
-DataType = TypeVar("DataType")
# TODO better docstring im lazy
-async def emit(event: str, data: DataType | None = None, data_type: Type[DataType] | None = None) -> None:
+async def emit(event: str, *args: Any) -> None:
"""
Send an event to the frontend.
""" \ No newline at end of file
diff --git a/backend/decky_loader/plugin/plugin.py b/backend/decky_loader/plugin/plugin.py
index cad323f4..02d80470 100644
--- a/backend/decky_loader/plugin/plugin.py
+++ b/backend/decky_loader/plugin/plugin.py
@@ -59,7 +59,7 @@ class PluginWrapper:
if line != None:
res = loads(line)
if res["type"] == SocketMessageType.EVENT.value:
- create_task(self.emitted_event_callback(res["event"], res["data"]))
+ create_task(self.emitted_event_callback(res["event"], res["args"]))
elif res["type"] == SocketMessageType.RESPONSE.value:
self._method_call_requests.pop(res["id"]).set_result(res)
except:
diff --git a/backend/decky_loader/plugin/sandboxed_plugin.py b/backend/decky_loader/plugin/sandboxed_plugin.py
index b49dcf41..98706a33 100644
--- a/backend/decky_loader/plugin/sandboxed_plugin.py
+++ b/backend/decky_loader/plugin/sandboxed_plugin.py
@@ -14,7 +14,7 @@ from ..localplatform.localplatform import setgid, setuid, get_username, get_home
from ..enums import UserType
from .. import helpers
-from typing import List, TypeVar, Type
+from typing import List, TypeVar, Any
DataType = TypeVar("DataType")
@@ -83,11 +83,11 @@ class SandboxedPlugin:
sysmodules[key.replace("decky_loader.", "")] = sysmodules[key]
from .imports import decky
- async def emit(event: str, data: DataType | None = None, data_type: Type[DataType] | None = None) -> None:
+ async def emit(event: str, *args: Any) -> None:
await self._socket.write_single_line_server(dumps({
"type": SocketMessageType.EVENT,
"event": event,
- "data": data
+ "args": args
}))
# copy the docstring over so we don't have to duplicate it
emit.__doc__ = decky.emit.__doc__