From e93c8094eb26684464d8b29928e472392d117f6a Mon Sep 17 00:00:00 2001 From: rhit-silkaijr Date: Mon, 27 Oct 2025 23:29:02 -0400 Subject: [PATCH 1/7] Don't copy disabled mods --- .../lib/components/left-bar/Settings.svelte | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/frontend/src/lib/components/left-bar/Settings.svelte b/frontend/src/lib/components/left-bar/Settings.svelte index 70f03406..df7dd6d1 100644 --- a/frontend/src/lib/components/left-bar/Settings.svelte +++ b/frontend/src/lib/components/left-bar/Settings.svelte @@ -158,11 +158,22 @@ modName = result.data.getModByReference.name; } } - return { - friendlyName: modName, - modReference, - version: $lockfileMods[modReference].version, - }; + + // Only return valid info if the mod is enabled + if(!$lockfileMods[modReference]) { + //How to enforce error handling? + return { + friendlyName: '', + modReference: '', + version: '', + }; + } else { + return { + friendlyName: modName, + modReference, + version: $lockfileMods[modReference].version, + }; + } })); // Sort by Friendly Name modList.sort((a, b) => { From 24a6e1dc990991b78cecc4c3fc68c3bf3093f630 Mon Sep 17 00:00:00 2001 From: rhit-silkaijr Date: Mon, 3 Nov 2025 22:19:00 -0500 Subject: [PATCH 2/7] Adding example error handling --- frontend/src/lib/components/left-bar/Settings.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/lib/components/left-bar/Settings.svelte b/frontend/src/lib/components/left-bar/Settings.svelte index df7dd6d1..849a491b 100644 --- a/frontend/src/lib/components/left-bar/Settings.svelte +++ b/frontend/src/lib/components/left-bar/Settings.svelte @@ -162,6 +162,7 @@ // Only return valid info if the mod is enabled if(!$lockfileMods[modReference]) { //How to enforce error handling? + console.error('Tried to copy a disabled mod'); return { friendlyName: '', modReference: '', From b39e356d1cee7b874c2fde5a824290f83817ce48 Mon Sep 17 00:00:00 2001 From: rhit-silkaijr Date: Thu, 6 Nov 2025 23:00:54 -0500 Subject: [PATCH 3/7] Normal SMM error popup occurs --- frontend/src/lib/components/left-bar/Settings.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/lib/components/left-bar/Settings.svelte b/frontend/src/lib/components/left-bar/Settings.svelte index 849a491b..0f8e0394 100644 --- a/frontend/src/lib/components/left-bar/Settings.svelte +++ b/frontend/src/lib/components/left-bar/Settings.svelte @@ -162,7 +162,7 @@ // Only return valid info if the mod is enabled if(!$lockfileMods[modReference]) { //How to enforce error handling? - console.error('Tried to copy a disabled mod'); + $error = `Tried to copy a disabled mod`; return { friendlyName: '', modReference: '', From a96e390a38dce1ccdaa3a2e367137570b3e38968 Mon Sep 17 00:00:00 2001 From: Rob B Date: Wed, 19 Nov 2025 01:50:31 -0500 Subject: [PATCH 4/7] Catch any errors that occur during CopyModList. Fence output text in markdown codeblock --- .../lib/components/left-bar/Settings.svelte | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/frontend/src/lib/components/left-bar/Settings.svelte b/frontend/src/lib/components/left-bar/Settings.svelte index 0f8e0394..1f85cbb5 100644 --- a/frontend/src/lib/components/left-bar/Settings.svelte +++ b/frontend/src/lib/components/left-bar/Settings.svelte @@ -148,7 +148,7 @@ async function copyModList() { // Generate mod entries - const modList = await Promise.all(Object.keys($manifestMods).map(async (modReference) => { + const modList = (await Promise.all(Object.keys($manifestMods).map(async (modReference) => { let modName = modReference; if($offline) { modName = (await OfflineGetMod(modReference)).name; @@ -159,23 +159,17 @@ } } - // Only return valid info if the mod is enabled - if(!$lockfileMods[modReference]) { - //How to enforce error handling? - $error = `Tried to copy a disabled mod`; - return { - friendlyName: '', - modReference: '', - version: '', - }; - } else { + // Only return info if the mod is enabled + if($lockfileMods[modReference]) { return { friendlyName: modName, modReference, version: $lockfileMods[modReference].version, }; + } else { + return undefined; } - })); + }))).filter((mod) => mod !== undefined); // Sort by Friendly Name modList.sort((a, b) => { const x = a.friendlyName.toLowerCase(); @@ -192,7 +186,8 @@ mod.modReference = mod.modReference.padEnd(maxModReferenceLen, ' '); modListString += `${mod.friendlyName} ${mod.modReference} ${mod.version}\n`; }); - navigator.clipboard.writeText(modListString.trim()); + const markdownCodeblockFence = '```'; + navigator.clipboard.writeText(`${markdownCodeblockFence}\n${modListString.trim()}\n${markdownCodeblockFence}`); } function localeName(locale: string) { @@ -200,6 +195,11 @@ return new Intl.DisplayNames([locale], { type: 'language' }).of(locale); } + // appease svelte "stores must be declared at the top of the file" + function displayError(err: unknown) { + $error = err; + } + $: if ($queueAutoStart && $queuedMods.length === 0 && $hasPendingProfileChange) { $hasPendingProfileChange = false; addQueuedModAction('__apply__', 'apply', Apply).catch((e) => error.set(e)); @@ -348,7 +348,12 @@
  • -