mirror of
https://github.com/SteamDeckHomebrew/decky-loader.git
synced 2026-07-11 12:42:01 +00:00
Added functions to inject and remove css from tabs
This commit is contained in:
@@ -190,4 +190,4 @@ class Loader:
|
|||||||
async def refresh_iframe(self):
|
async def refresh_iframe(self):
|
||||||
tab = await get_tab("QuickAccess")
|
tab = await get_tab("QuickAccess")
|
||||||
await tab.open_websocket()
|
await tab.open_websocket()
|
||||||
return await tab.evaluate_js("reloadIframe()")
|
return await tab.evaluate_js("reloadIframe()", False)
|
||||||
@@ -48,3 +48,17 @@ async function execute_in_tab(tab, run_async, code) {
|
|||||||
'code': code
|
'code': code
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function inject_css_into_tab(tab, style) {
|
||||||
|
return await call_server_method("inject_css_into_tab", {
|
||||||
|
'tab': tab,
|
||||||
|
'style': style
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function remove_css_from_tab(tab, css_id) {
|
||||||
|
return await call_server_method("remove_css_from_tab", {
|
||||||
|
'tab': tab,
|
||||||
|
'css_id': css_id
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
from aiohttp import ClientSession
|
from aiohttp import ClientSession
|
||||||
from injector import inject_to_tab
|
from injector import inject_to_tab
|
||||||
|
import uuid
|
||||||
|
|
||||||
class Utilities:
|
class Utilities:
|
||||||
def __init__(self, context) -> None:
|
def __init__(self, context) -> None:
|
||||||
@@ -8,7 +9,9 @@ class Utilities:
|
|||||||
"ping": self.ping,
|
"ping": self.ping,
|
||||||
"http_request": self.http_request,
|
"http_request": self.http_request,
|
||||||
"confirm_plugin_install": self.confirm_plugin_install,
|
"confirm_plugin_install": self.confirm_plugin_install,
|
||||||
"execute_in_tab": self.execute_in_tab
|
"execute_in_tab": self.execute_in_tab,
|
||||||
|
"inject_css_into_tab": self.inject_css_into_tab,
|
||||||
|
"remove_css_from_tab": self.remove_css_from_tab
|
||||||
}
|
}
|
||||||
|
|
||||||
async def confirm_plugin_install(self, request_id):
|
async def confirm_plugin_install(self, request_id):
|
||||||
@@ -28,9 +31,17 @@ class Utilities:
|
|||||||
|
|
||||||
async def execute_in_tab(self, tab, run_async, code):
|
async def execute_in_tab(self, tab, run_async, code):
|
||||||
try:
|
try:
|
||||||
|
result = await inject_to_tab(tab, code, run_async)
|
||||||
|
|
||||||
|
if "exceptionDetails" in result["result"]:
|
||||||
|
return {
|
||||||
|
"success": False,
|
||||||
|
"result": result["result"]
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"success": True,
|
"success": True,
|
||||||
"result" : await inject_to_tab(tab, code, run_async)
|
"result" : result["result"]["result"]["value"]
|
||||||
}
|
}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return {
|
return {
|
||||||
@@ -38,3 +49,59 @@ class Utilities:
|
|||||||
"result": e
|
"result": e
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async def inject_css_into_tab(self, tab, style):
|
||||||
|
try:
|
||||||
|
css_id = str(uuid.uuid4())
|
||||||
|
|
||||||
|
result = await inject_to_tab(tab,
|
||||||
|
f"""
|
||||||
|
(function() {{
|
||||||
|
const style = document.createElement('style');
|
||||||
|
style.id = "{css_id}";
|
||||||
|
document.head.append(style);
|
||||||
|
style.sheet.insertRule(`{style}`);
|
||||||
|
}})()
|
||||||
|
""", False)
|
||||||
|
|
||||||
|
if "exceptionDetails" in result["result"]:
|
||||||
|
return {
|
||||||
|
"success": False,
|
||||||
|
"result": result["result"]
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
"success": True,
|
||||||
|
"result" : css_id
|
||||||
|
}
|
||||||
|
except Exception as e:
|
||||||
|
return {
|
||||||
|
"success": False,
|
||||||
|
"result": e
|
||||||
|
}
|
||||||
|
|
||||||
|
async def remove_css_from_tab(self, tab, css_id):
|
||||||
|
try:
|
||||||
|
result = await inject_to_tab(tab,
|
||||||
|
f"""
|
||||||
|
(function() {{
|
||||||
|
let style = document.getElementById("{css_id}");
|
||||||
|
|
||||||
|
if (style.nodeName.toLowerCase() == 'style')
|
||||||
|
style.parentNode.removeChild(style);
|
||||||
|
}})()
|
||||||
|
""", False)
|
||||||
|
|
||||||
|
if "exceptionDetails" in result["result"]:
|
||||||
|
return {
|
||||||
|
"success": False,
|
||||||
|
"result": result
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
"success": True
|
||||||
|
}
|
||||||
|
except Exception as e:
|
||||||
|
return {
|
||||||
|
"success": False,
|
||||||
|
"result": e
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user