import { ButtonItem, PanelSection, PanelSectionRow, Navigation, staticClasses } from "@decky/ui"; import { addEventListener, removeEventListener, callable, definePlugin, toaster, // routerHook } from "@decky/api" // import { call, callable } from "@decky/backend"; import { useState } from "react"; import { FaShip } from "react-icons/fa"; // import logo from "../assets/logo.png"; // interface AddMethodArgs { // left: number; // right: number; // } const add = callable<[first: number, second: number], number>("add"); const startTimer = callable<[], void>("start_timer"); function Content() { const [result, setResult] = useState(); const onClick = async () => { const result = await add(Math.random(), Math.random()); setResult(result); }; return ( {result || "Add two numbers via Python"} startTimer()} > {"Start Python timer"} {/*
*/} { Navigation.CloseSideMenus(); Navigation.Navigate("/decky-plugin-test"); }} > Router
); }; export default definePlugin(() => { // serverApi.routerHook.addRoute("/decky-plugin-test", DeckyPluginRouterTest, { // exact: true, // }); // console.log("init plugin", call, callable) const listener = addEventListener<[ test1: string, test2: boolean, test3: number ]>("test_event", (test1, test2, test3) => { console.log("Template got event", test1, test2, test3) toaster.toast({ title: "template got event", body: `${test1}, ${test2}, ${test3}` }); }); return { title:
API v2 Example Plugin
, content: , icon: , onDismount() { console.log("Unloading") removeEventListener("test_event", listener); // serverApi.routerHook.removeRoute("/decky-plugin-test"); }, }; });