fix(vehicles): use store ID for selectedVehicle instead of index
Some checks failed
TrafficCue CI / check (push) Failing after 1m32s
TrafficCue CI / build (push) Successful in 9m35s
TrafficCue CI / build-android (push) Successful in 25m14s

This commit is contained in:
2025-10-03 15:22:00 +02:00
parent 6e11b438a2
commit fd7edc217d
3 changed files with 11 additions and 17 deletions

View File

@ -44,7 +44,7 @@
<Drawer.Trigger
class={buttonVariants({ variant: "secondary", class: "w-full p-5" })}
>
{@const vehicle = selectedVehicle() ?? DefaultVehicle}
{@const vehicle = selectedVehicle()?.data ?? DefaultVehicle}
{@const Icon = getVehicleIcon(vehicle.type)}
<Icon />
{vehicle.name}
@ -60,7 +60,7 @@
{#each vehicles.current as vehicle (vehicle.name)}
<div class="flex items-center gap-2">
<Button
variant={selectedVehicle() === vehicle.data ? "default" : "secondary"}
variant={selectedVehicle()?.data === vehicle.data ? "default" : "secondary"}
class="w-[calc(100%-48px-8px)] p-5"
onclick={() => {
selectVehicle(vehicle.data);

View File

@ -89,7 +89,7 @@
lat: parseFloat(toLocation.split(",")[0]),
lon: parseFloat(toLocation.split(",")[1]),
};
const req = createValhallaRequest(selectedVehicle() ?? DefaultVehicle, [
const req = createValhallaRequest(selectedVehicle()?.data ?? DefaultVehicle, [
FROM,
TO,
]);

View File

@ -78,15 +78,12 @@ interface StateValue<T> {
v: T;
}
export const vehicles: WrappedValue<StoreValue<Vehicle>[]> = stores("vehicle");
export const selectedVehicleIdx: StateValue<number | null> = $state({
v: localStorage.getItem("selectedVehicle")
? parseInt(localStorage.getItem("selectedVehicle")!)
: null,
export const selectedVehicleId: StateValue<string | null> = $state({
v: localStorage.getItem("selectedVehicle") ?? null
});
export const selectedVehicle: () => Vehicle | null = () => {
export const selectedVehicle: () => StoreValue<Vehicle> | null = () => {
return (
vehicles.current[selectedVehicleIdx.v !== null ? selectedVehicleIdx.v : 0]
?.data ?? null
vehicles.current.find((v) => v.id === selectedVehicleId.v) ?? null
);
};
@ -104,18 +101,15 @@ export async function addVehicle(vehicle: Vehicle) {
export function selectVehicle(vehicle: Vehicle | null) {
if (vehicle == null) {
selectedVehicleIdx.v = null;
selectedVehicleId.v = null;
} else {
selectedVehicleIdx.v = vehicles.current.findIndex(
selectedVehicleId.v = vehicles.current.find(
(v) => v.name === vehicle.name,
);
if (selectedVehicleIdx.v === -1) {
selectedVehicleIdx.v = null;
}
)?.id ?? null;
}
localStorage.setItem(
"selectedVehicle",
selectedVehicleIdx.v !== null ? selectedVehicleIdx.v.toString() : "",
selectedVehicleId.v !== null ? selectedVehicleId.v.toString() : "",
);
}