fix(vehicles): use store ID for selectedVehicle instead of index
This commit is contained in:
@ -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);
|
||||
|
||||
@ -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,
|
||||
]);
|
||||
|
||||
@ -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() : "",
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user