diff --git a/apps/app-frontend/src/providers/content-install.ts b/apps/app-frontend/src/providers/content-install.ts index 62314b23ea..091e8a9fb0 100644 --- a/apps/app-frontend/src/providers/content-install.ts +++ b/apps/app-frontend/src/providers/content-install.ts @@ -638,6 +638,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 ee180d32e4..b003c876f2 100644 --- a/packages/app-lib/src/state/cache.rs +++ b/packages/app-lib/src/state/cache.rs @@ -1102,8 +1102,13 @@ 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::, _>>()?;