diff --git a/app/features/build-analyzer/analyzer-hooks.ts b/app/features/build-analyzer/analyzer-hooks.ts index a012e403e..24e9c4650 100644 --- a/app/features/build-analyzer/analyzer-hooks.ts +++ b/app/features/build-analyzer/analyzer-hooks.ts @@ -12,18 +12,20 @@ import { applySpecialEffects, SPECIAL_EFFECTS } from "./core/specialEffects"; import { buildStats } from "./core/stats"; import type { SpecialEffectType } from "./analyzer-types"; import { + buildIsEmpty, buildToAbilityPoints, serializeBuild, validatedBuildFromSearchParams, validatedWeaponIdFromSearchParams, } from "./core/utils"; +import invariant from "tiny-invariant"; export function useAnalyzeBuild() { const [searchParams, setSearchParams] = useSearchParams(); const mainWeaponId = validatedWeaponIdFromSearchParams(searchParams); const build = validatedBuildFromSearchParams(searchParams); - const build2 = validatedBuildFromSearchParams(searchParams, "build2"); + const build2 = validatedBuildFromSearchParams(searchParams, "build2", build); const ldeIntensity = validatedLdeIntensityFromSearchParams(searchParams); const effects = validatedEffectsFromSearchParams({ searchParams, build }); const effects2 = validatedEffectsFromSearchParams({ @@ -32,6 +34,11 @@ export function useAnalyzeBuild() { }); const focused = validatedFocusedFromSearchParams({ searchParams }); + invariant( + !(buildIsEmpty(build) && !buildIsEmpty(build2)), + "build1 is empty but build2 isn't" + ); + const handleChange = ({ newMainWeaponId = mainWeaponId, newBuild = build, diff --git a/app/features/build-analyzer/core/utils.ts b/app/features/build-analyzer/core/utils.ts index d9bb76850..09498ba4c 100644 --- a/app/features/build-analyzer/core/utils.ts +++ b/app/features/build-analyzer/core/utils.ts @@ -191,13 +191,15 @@ function validateAbility( export function validatedBuildFromSearchParams( searchParams: URLSearchParams, - key = "build" + key = "build", + otherBuild?: BuildAbilitiesTupleWithUnknown ): BuildAbilitiesTupleWithUnknown { const abilitiesArr = searchParams.get(key) ? searchParams.get(key)?.split(",") : null; if (!abilitiesArr) return EMPTY_BUILD; + if (otherBuild && buildIsEmpty(otherBuild)) return EMPTY_BUILD; try { return [