diff options
| author | AAGaming <aagaming@riseup.net> | 2023-12-30 21:32:23 -0500 |
|---|---|---|
| committer | AAGaming <aagaming@riseup.net> | 2023-12-30 21:32:23 -0500 |
| commit | 40c7c1b515abf4abcecd6480afb28f27fb71d0f0 (patch) | |
| tree | 576399085651b6e7cb0c37876ed6c2b3d0452dd7 /backend | |
| parent | 70104065e2145e9a04fef4ae28ec9875a6114e2d (diff) | |
| download | decky-loader-40c7c1b515abf4abcecd6480afb28f27fb71d0f0.tar.gz decky-loader-40c7c1b515abf4abcecd6480afb28f27fb71d0f0.zip | |
port updater to ws, also small refactoring
Diffstat (limited to 'backend')
| -rw-r--r-- | backend/decky_loader/updater.py | 38 | ||||
| -rw-r--r-- | backend/decky_loader/wsrouter.py | 2 |
2 files changed, 8 insertions, 32 deletions
diff --git a/backend/decky_loader/updater.py b/backend/decky_loader/updater.py index a7234a8b..eadd49af 100644 --- a/backend/decky_loader/updater.py +++ b/backend/decky_loader/updater.py @@ -2,7 +2,6 @@ from __future__ import annotations import os import shutil from asyncio import sleep -from json.decoder import JSONDecodeError from logging import getLogger from os import getcwd, path, remove from typing import TYPE_CHECKING, List, TypedDict @@ -10,7 +9,7 @@ if TYPE_CHECKING: from .main import PluginManager from .localplatform.localplatform import chmod, service_restart, ON_LINUX, get_keep_systemd_service, get_selinux -from aiohttp import ClientSession, web +from aiohttp import ClientSession from . import helpers from .injector import get_gamepadui_tab @@ -30,14 +29,6 @@ class Updater: def __init__(self, context: PluginManager) -> None: self.context = context self.settings = self.context.settings - # Exposes updater methods to frontend - self.updater_methods = { - "get_branch": self._get_branch, - "get_version": self.get_version, - "do_update": self.do_update, - "do_restart": self.do_restart, - "check_for_updates": self.check_for_updates - } self.remoteVer: RemoteVer | None = None self.allRemoteVers: List[RemoteVer] = [] self.localVer = helpers.get_loader_version() @@ -49,27 +40,12 @@ class Updater: logger.error("Current branch could not be determined, defaulting to \"Stable\"") if context: - context.web_app.add_routes([ - web.post("/updater/{method_name}", self._handle_server_method_call) - ]) + context.ws.add_route("updater/get_version_info", self.get_version_info); + context.ws.add_route("updater/check_for_updates", self.check_for_updates); + context.ws.add_route("updater/do_restart", self.do_restart); + context.ws.add_route("updater/do_update", self.do_update); context.loop.create_task(self.version_reloader()) - async def _handle_server_method_call(self, request: web.Request): - method_name = request.match_info["method_name"] - try: - args = await request.json() - except JSONDecodeError: - args = {} - res = {} - try: - r = await self.updater_methods[method_name](**args) # type: ignore - res["result"] = r - res["success"] = True - except Exception as e: - res["result"] = str(e) - res["success"] = False - return web.json_response(res) - def get_branch(self, manager: SettingsManager): ver = manager.getSetting("branch", -1) logger.debug("current branch: %i" % ver) @@ -102,7 +78,7 @@ class Updater: url = "https://raw.githubusercontent.com/SteamDeckHomebrew/decky-loader/main/dist/plugin_loader-prerelease.service" return str(url) - async def get_version(self): + async def get_version_info(self): return { "current": self.localVer, "remote": self.remoteVer, @@ -139,7 +115,7 @@ class Updater: logger.info("Updated remote version information") tab = await get_gamepadui_tab() await tab.evaluate_js(f"window.DeckyPluginLoader.notifyUpdates()", False, True, False) - return await self.get_version() + return await self.get_version_info() async def version_reloader(self): await sleep(30) diff --git a/backend/decky_loader/wsrouter.py b/backend/decky_loader/wsrouter.py index cdfe982c..59cbe4a3 100644 --- a/backend/decky_loader/wsrouter.py +++ b/backend/decky_loader/wsrouter.py @@ -16,7 +16,7 @@ from .helpers import get_csrf_token class MessageType(IntEnum): ERROR = -1 - # Call-reply, Frontend -> Backend + # Call-reply, Frontend -> Backend -> Frontend CALL = 0 REPLY = 1 # Pub/Sub, Backend -> Frontend |
