From 5302e3a98777c75ed8f4d943d5152e5cc9b2c0d0 Mon Sep 17 00:00:00 2001 From: mfishma Date: Tue, 21 Jul 2026 12:32:13 -0700 Subject: [PATCH] Fix deep link installation for mods containing + (plus sign) (#6464) * ffix: preserve literal '+' in deep link URI thru API call * chore: check for missing projects during installs * chore: remove accidental test files and quote error ID * fix rustfmt formatting for the change --- apps/app-frontend/src/providers/content-install.ts | 5 +++++ packages/app-lib/src/state/cache.rs | 11 +++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/apps/app-frontend/src/providers/content-install.ts b/apps/app-frontend/src/providers/content-install.ts index e4605b5f5c..7cd4b96b3b 100644 --- a/apps/app-frontend/src/providers/content-install.ts +++ b/apps/app-frontend/src/providers/content-install.ts @@ -807,6 +807,11 @@ export function createContentInstall(opts: { ) { const project: Labrinth.Projects.v2.Project = await get_project(projectId, 'must_revalidate') + if (!project) { + opts.handleError(`Project not found: '${projectId}'`) + return + } + if (project.project_type === 'modpack') { const version = versionId ?? project.versions[project.versions.length - 1] const packs = await list() diff --git a/packages/app-lib/src/state/cache.rs b/packages/app-lib/src/state/cache.rs index 99ae6d3457..74a78c794d 100644 --- a/packages/app-lib/src/state/cache.rs +++ b/packages/app-lib/src/state/cache.rs @@ -1105,8 +1105,15 @@ impl CachedEntry { .collect::>() .chunks(MAX_REQUEST_SIZE) .map(|chunk| { - serde_json::to_string(&chunk) - .map(|keys| format!("{api_url}{url}{keys}")) + serde_json::to_string(&chunk).map(|keys| { + format!( + "{api_url}{url}{}", + url::form_urlencoded::byte_serialize( + keys.as_bytes() + ) + .collect::() + ) + }) }) .collect::, _>>()?;