fix: support multiple keys per action and harden runtime/parsing
This commit is contained in:
+29
-26
@@ -7,36 +7,39 @@ type DataSourceItem = { label: string; value: string };
|
||||
|
||||
export function registerDataSources(): void {
|
||||
streamDeck.ui.onSendToPlugin(async (ev) => {
|
||||
const request = ev.payload as { event?: string } | undefined;
|
||||
const event = request?.event;
|
||||
if (!event) return;
|
||||
const settings = await ev.action.getSettings<CfgSettings>();
|
||||
try {
|
||||
const request = ev.payload as { event?: string } | undefined;
|
||||
const event = request?.event;
|
||||
if (!event) return;
|
||||
const settings = await ev.action.getSettings<CfgSettings>();
|
||||
|
||||
if (event === "models") {
|
||||
let items: DataSourceItem[] = [];
|
||||
try {
|
||||
const models = await fetchModels(cfgFromSettings(settings));
|
||||
items = models.map((m) => ({ label: `${m.id} (${m.status})`, value: m.id }));
|
||||
} catch {
|
||||
items = [];
|
||||
if (event === "models") {
|
||||
let items: DataSourceItem[] = [];
|
||||
try {
|
||||
const models = await fetchModels(cfgFromSettings(settings));
|
||||
items = models.map((m) => ({ label: `${m.id} (${m.status})`, value: m.id }));
|
||||
} catch {
|
||||
items = [];
|
||||
}
|
||||
await streamDeck.ui.sendToPropertyInspector({ event, items });
|
||||
return;
|
||||
}
|
||||
await streamDeck.ui.sendToPropertyInspector({ event, items });
|
||||
return;
|
||||
}
|
||||
|
||||
if (event === "gpus") {
|
||||
let items: DataSourceItem[] = [];
|
||||
try {
|
||||
const text = await fetchMetrics(cfgFromSettings(settings));
|
||||
const gpus = gpuInfos(parseGpuMetrics(text));
|
||||
items = [
|
||||
{ label: "All GPUs", value: "all" },
|
||||
...gpus.map((g) => ({ label: `GPU ${g.id} · ${g.name}`, value: g.id })),
|
||||
];
|
||||
} catch {
|
||||
items = [{ label: "All GPUs", value: "all" }];
|
||||
if (event === "gpus") {
|
||||
let items: DataSourceItem[] = [];
|
||||
try {
|
||||
const text = await fetchMetrics(cfgFromSettings(settings));
|
||||
const gpus = gpuInfos(parseGpuMetrics(text));
|
||||
items = [
|
||||
{ label: "All GPUs", value: "all" },
|
||||
...gpus.map((g) => ({ label: `GPU ${g.id} · ${g.name}`, value: g.id })),
|
||||
];
|
||||
} catch {
|
||||
items = [{ label: "All GPUs", value: "all" }];
|
||||
}
|
||||
await streamDeck.ui.sendToPropertyInspector({ event, items });
|
||||
}
|
||||
await streamDeck.ui.sendToPropertyInspector({ event, items });
|
||||
} catch {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user