forked from Yara724/api
Fixed claim/blame damagedParts
This commit is contained in:
@@ -5,6 +5,13 @@
|
||||
* into {@code media.damagedParts} and broke step-completion checks.
|
||||
*/
|
||||
|
||||
import type { DamageSelectedPartV2 } from "src/helpers/outer-damage-parts";
|
||||
import {
|
||||
damageSelectedPartsToLookupStrings,
|
||||
mediaRowHasCapture,
|
||||
resolvePartCaptureIndex,
|
||||
} from "src/helpers/outer-damage-parts";
|
||||
|
||||
export const CLAIM_CAR_ANGLE_KEYS = ["front", "back", "left", "right"] as const;
|
||||
export type ClaimCarAngleKey = (typeof CLAIM_CAR_ANGLE_KEYS)[number];
|
||||
|
||||
@@ -54,9 +61,17 @@ export function hasClaimCarAngleCapture(
|
||||
export function legacyAngleDamagedPartFieldKeysToUnset(
|
||||
canonical: ClaimCarAngleKey,
|
||||
rawCaptureKey: string,
|
||||
selectedParts: string[],
|
||||
selectedParts: unknown,
|
||||
carType?: import("src/static/outer-car-parts-catalog").ClaimVehicleTypeV2,
|
||||
selectedOuterPartsLegacy?: unknown,
|
||||
): string[] {
|
||||
const selected = new Set((selectedParts ?? []).map((p) => String(p)));
|
||||
const selected = new Set(
|
||||
damageSelectedPartsToLookupStrings(
|
||||
selectedParts,
|
||||
carType,
|
||||
selectedOuterPartsLegacy,
|
||||
),
|
||||
);
|
||||
const variants = new Set(
|
||||
[
|
||||
rawCaptureKey,
|
||||
@@ -89,9 +104,23 @@ function normalizeDamagedPartKeyLoose(s: string): string {
|
||||
export function getDamagedPartCaptureBlob(
|
||||
damagedPartsData: unknown,
|
||||
partKey: string,
|
||||
selectedNormalized?: DamageSelectedPartV2[],
|
||||
): unknown {
|
||||
const pk = String(partKey ?? "").trim();
|
||||
if (!pk || damagedPartsData == null) return undefined;
|
||||
if (Array.isArray(damagedPartsData)) {
|
||||
const norm = selectedNormalized ?? [];
|
||||
const idx = resolvePartCaptureIndex(
|
||||
pk,
|
||||
norm,
|
||||
damagedPartsData as Record<string, unknown>[],
|
||||
);
|
||||
if (idx >= 0) {
|
||||
const row = (damagedPartsData as unknown[])[idx];
|
||||
if (mediaRowHasCapture(row)) return row;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
let b = getCaptureBlob(damagedPartsData, pk);
|
||||
if (b) return b;
|
||||
const titleEn = legacyDamagedPartTitleEnFromPartKey(pk);
|
||||
@@ -120,8 +149,12 @@ export function getDamagedPartCaptureBlob(
|
||||
export function hasDamagedPartCapture(
|
||||
damagedPartsData: unknown,
|
||||
partKey: string,
|
||||
selectedNormalized?: DamageSelectedPartV2[],
|
||||
): boolean {
|
||||
return getDamagedPartCaptureBlob(damagedPartsData, partKey) != null;
|
||||
return (
|
||||
getDamagedPartCaptureBlob(damagedPartsData, partKey, selectedNormalized) !=
|
||||
null
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -129,11 +162,17 @@ export function hasDamagedPartCapture(
|
||||
*/
|
||||
export function resolveCanonicalDamagedPartStorageKey(
|
||||
captureKeyRaw: string,
|
||||
selectedParts: string[],
|
||||
selectedParts: unknown,
|
||||
carType?: import("src/static/outer-car-parts-catalog").ClaimVehicleTypeV2,
|
||||
selectedOuterPartsLegacy?: unknown,
|
||||
): string {
|
||||
const raw = String(captureKeyRaw ?? "").trim();
|
||||
if (!raw) return raw;
|
||||
const parts = (selectedParts ?? []).map((p) => String(p).trim()).filter(Boolean);
|
||||
const parts = damageSelectedPartsToLookupStrings(
|
||||
selectedParts,
|
||||
carType,
|
||||
selectedOuterPartsLegacy,
|
||||
);
|
||||
if (parts.includes(raw)) return raw;
|
||||
const n = normalizeDamagedPartKeyLoose(raw);
|
||||
const matches = parts.filter((p) => normalizeDamagedPartKeyLoose(p) === n);
|
||||
|
||||
Reference in New Issue
Block a user