summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--py_modules/lsfg_vk/steam_service.py2
-rw-r--r--src/components/ConfigurationTab.tsx20
2 files changed, 20 insertions, 2 deletions
diff --git a/py_modules/lsfg_vk/steam_service.py b/py_modules/lsfg_vk/steam_service.py
index f46a091..9a6570f 100644
--- a/py_modules/lsfg_vk/steam_service.py
+++ b/py_modules/lsfg_vk/steam_service.py
@@ -111,7 +111,7 @@ class SteamService(BaseService):
if not isinstance(shortcut, dict):
return None
appid = shortcut.get("appid")
- name = shortcut.get("AppName")
+ name = shortcut.get("AppName") or shortcut.get("appname")
if not isinstance(appid, int) or appid == 0 or not isinstance(name, str) or not name:
return None
return {"appid": str(appid & 0xffffffff), "name": name, "nonSteam": True}
diff --git a/src/components/ConfigurationTab.tsx b/src/components/ConfigurationTab.tsx
index 83f46c1..2175eb9 100644
--- a/src/components/ConfigurationTab.tsx
+++ b/src/components/ConfigurationTab.tsx
@@ -1,5 +1,6 @@
import { ButtonItem, Field, Focusable, PanelSection, PanelSectionRow } from "@decky/ui";
import { useCallback, useEffect, useRef, useState } from "react";
+import { RiArrowDownSFill, RiArrowUpSFill } from "react-icons/ri";
import { ConfigurationData } from "../config/configSchema";
import { GameTarget } from "../hooks/useGameConfiguration";
import { GameConfigurationControls } from "./GameConfigurationControls";
@@ -29,6 +30,7 @@ export function ConfigurationTab({
onResetAll,
}: ConfigurationTabProps) {
const [detailAppId, setDetailAppId] = useState<string | null>(null);
+ const [detailsExpanded, setDetailsExpanded] = useState(false);
const [focusFpsMultiplier, setFocusFpsMultiplier] = useState(false);
const [focusDetailAction, setFocusDetailAction] = useState<"enable" | "back" | null>(null);
const backToGamesRef = useRef<HTMLDivElement>(null);
@@ -41,6 +43,8 @@ export function ConfigurationTab({
}, []);
const clearFpsFocusRequest = useCallback(() => setFocusFpsMultiplier(false), []);
+ useEffect(() => setDetailsExpanded(false), [detailAppId]);
+
useEffect(() => {
if (!focusDetailAction) return;
const frame = requestAnimationFrame(() => {
@@ -101,7 +105,7 @@ export function ConfigurationTab({
<Focusable onCancelButton={closeDetails}>
<PanelSection title="Game Profile">
<PanelSectionRow>
- <Field label={profileLabel} description={profileDescription} />
+ <Field label={profileLabel} />
</PanelSectionRow>
{!selectedTarget?.configured && selectedTarget && (
<PanelSectionRow>
@@ -129,6 +133,20 @@ export function ConfigurationTab({
<ButtonItem layout="below" onClick={handleProfileAction}>Remove profile</ButtonItem>
</PanelSectionRow>
)}
+ <PanelSectionRow>
+ <ButtonItem
+ layout="below"
+ bottomSeparator={detailsExpanded ? "none" : "standard"}
+ onClick={() => setDetailsExpanded((expanded) => !expanded)}
+ >
+ {detailsExpanded ? <RiArrowUpSFill /> : <RiArrowDownSFill />} Details
+ </ButtonItem>
+ </PanelSectionRow>
+ {detailsExpanded && (
+ <PanelSectionRow>
+ <Field label="Details" description={profileDescription} />
+ </PanelSectionRow>
+ )}
</Focusable>
);
}