Fix: Home-Screen Recommendations & GQL Cleanup P.2

This commit is contained in:
Youwes09
2026-06-07 15:40:18 -05:00
parent 79e5548879
commit 248b046627
14 changed files with 129 additions and 131 deletions
@@ -104,8 +104,7 @@
async function loadRepos() {
reposLoading = true;
try {
const d = await (getAdapter() as any).gql<{ settings: { extensionRepos: string[] } }>(`query GetSettings { settings { extensionRepos } }`);
repos = d.settings.extensionRepos ?? [];
repos = await getAdapter().getExtensionRepos();
} catch (e) { console.error(e); }
finally { reposLoading = false; }
}
@@ -113,11 +112,11 @@
async function saveRepos(updated: string[], intent: "add" | "remove") {
savingRepos = true;
try {
const d = await (getAdapter() as any).gql<{ setSettings: { settings: { extensionRepos: string[] } } }>(`mutation SetExtensionRepos($repos: [String!]!) { setSettings(input: { settings: { extensionRepos: $repos } }) { settings { extensionRepos } } }`, { repos: updated });
repos = d.setSettings.settings.extensionRepos;
const removed = repos.find(r => !updated.includes(r)) ?? "";
repos = await getAdapter().setExtensionRepos(updated);
addToast(intent === "add"
? { kind: "success", title: "Repo added", body: updated[updated.length - 1] }
: { kind: "info", title: "Repo removed", body: repos.find(r => !updated.includes(r)) ?? "" }
: { kind: "info", title: "Repo removed", body: removed }
);
} catch (e: any) {
repoError = e instanceof Error ? e.message : "Failed to save";
@@ -138,13 +137,11 @@
async function mutate(pkgName: string, op: "install" | "update" | "uninstall") {
working = new Set(working).add(pkgName);
const label = extensions.find((e) => e.pkgName === pkgName)?.name ?? pkgName;
const gqlArgs = {
install: { id: pkgName, install: true },
update: { id: pkgName, update: true },
uninstall: { id: pkgName, uninstall: true },
}[op];
try {
await getAdapter()[{ install: 'installExtension', update: 'updateExtension', uninstall: 'uninstallExtension' }[op] as 'installExtension'](pkgName);
const adapter = getAdapter();
if (op === "install") await adapter.installExtension(pkgName);
else if (op === "update") await adapter.updateExtension(pkgName);
else await adapter.uninstallExtension(pkgName);
await load();
addToast({
install: { kind: "download" as const, title: "Extension installed", body: label },
@@ -66,17 +66,7 @@
editKey = null;
listOpen = null;
try {
const d = await (getAdapter() as any).gql<{ source: { preferences: Preference[] } }>(
`query GetSourceSettings($id: LongString!) { source(id: $id) { preferences {
... on CheckBoxPreference { type: __typename CheckBoxTitle: title CheckBoxSummary: summary CheckBoxDefault: default CheckBoxCurrentValue: currentValue key }
... on SwitchPreference { type: __typename SwitchPreferenceTitle: title SwitchPreferenceSummary: summary SwitchPreferenceDefault: default SwitchPreferenceCurrentValue: currentValue key }
... on ListPreference { type: __typename ListPreferenceTitle: title ListPreferenceSummary: summary ListPreferenceDefault: default ListPreferenceCurrentValue: currentValue entries entryValues key }
... on EditTextPreference { type: __typename EditTextPreferenceTitle: title EditTextPreferenceSummary: summary EditTextPreferenceDefault: default EditTextPreferenceCurrentValue: currentValue dialogTitle dialogMessage key }
... on MultiSelectListPreference { type: __typename MultiSelectListPreferenceTitle: title MultiSelectListPreferenceSummary: summary MultiSelectListPreferenceDefault: default MultiSelectListPreferenceCurrentValue: currentValue entries entryValues key }
} } }`,
{ id: String(src.id) },
);
prefs = d.source.preferences ?? [];
prefs = (await getAdapter().getSourceSettings(src.id)) as Preference[];
} catch (e: any) {
addToast({ kind: "error", title: "Failed to load settings", body: e?.message ?? "" });
} finally {
@@ -86,24 +76,9 @@
async function save(position: number, changeType: string, value: unknown) {
if (!activeSource) return;
const pref = prefs[position];
saving = pref.key;
saving = prefs[position].key;
try {
await (getAdapter() as any).gql(
`mutation UpdateSourcePreference($source: LongString!, $change: SourcePreferenceChangeInput!) { updateSourcePreference(input: { source: $source, change: $change }) { source { id } } }`,
{ source: String(activeSource.id), change: { position, [changeType]: value } },
);
const d = await (getAdapter() as any).gql<{ source: { preferences: Preference[] } }>(
`query GetSourceSettings($id: LongString!) { source(id: $id) { preferences {
... on CheckBoxPreference { type: __typename CheckBoxTitle: title CheckBoxCurrentValue: currentValue key }
... on SwitchPreference { type: __typename SwitchPreferenceTitle: title SwitchPreferenceCurrentValue: currentValue key }
... on ListPreference { type: __typename ListPreferenceTitle: title ListPreferenceCurrentValue: currentValue entries entryValues key }
... on EditTextPreference { type: __typename EditTextPreferenceTitle: title EditTextPreferenceCurrentValue: currentValue key }
... on MultiSelectListPreference { type: __typename MultiSelectListPreferenceTitle: title MultiSelectListPreferenceCurrentValue: currentValue entries entryValues key }
} } }`,
{ id: String(activeSource.id) },
);
prefs = d.source.preferences ?? [];
prefs = (await getAdapter().updateSourcePreference(activeSource.id, position, changeType, value)) as Preference[];
} catch (e: any) {
addToast({ kind: "error", title: "Failed to save", body: e?.message ?? "" });
} finally {