diff --git a/src/lib/components/lnv/sidebar/RouteSidebar.svelte b/src/lib/components/lnv/sidebar/RouteSidebar.svelte index 12d70b0..ff92615 100644 --- a/src/lib/components/lnv/sidebar/RouteSidebar.svelte +++ b/src/lib/components/lnv/sidebar/RouteSidebar.svelte @@ -17,7 +17,7 @@ selectedVehicle, } from "$lib/vehicles/vehicles.svelte"; import { location } from "../location.svelte"; - import { saved } from "$lib/saved.svelte"; + import { savedLocations } from "$lib/saved.svelte"; import { m } from "$lang/messages"; import LocationSelect from "../LocationSelect.svelte"; @@ -74,8 +74,11 @@ const FROM: WorldLocation = fromLocation == "current" ? { lat: location.lat, lon: location.lng } - : saved[fromLocation] - ? saved[fromLocation] + : savedLocations.current.find(s => s.name == fromLocation) + ? { + lat: savedLocations.current.find(s => s.name == fromLocation)!.data.lat, + lon: savedLocations.current.find(s => s.name == fromLocation)!.data.lng, + } : { lat: parseFloat(fromLocation.split(",")[0]), lon: parseFloat(fromLocation.split(",")[1]), @@ -83,8 +86,11 @@ const TO: WorldLocation = toLocation == "current" ? { lat: location.lat, lon: location.lng } - : saved[toLocation] - ? saved[toLocation] + : savedLocations.current.find(s => s.name == toLocation) + ? { + lat: savedLocations.current.find(s => s.name == fromLocation)!.data.lat, + lon: savedLocations.current.find(s => s.name == fromLocation)!.data.lng, + } : { lat: parseFloat(toLocation.split(",")[0]), lon: parseFloat(toLocation.split(",")[1]), diff --git a/src/lib/saved.svelte.ts b/src/lib/saved.svelte.ts index f1847be..d466d4a 100644 --- a/src/lib/saved.svelte.ts +++ b/src/lib/saved.svelte.ts @@ -7,6 +7,7 @@ import { SchoolIcon, type IconProps, } from "@lucide/svelte"; +import { stores, storeSnapshot } from "./services/stores.svelte"; /** * @deprecated Use stores instead. @@ -15,6 +16,8 @@ export const saved: Record = $state( JSON.parse(localStorage.getItem("saved") ?? "{}"), ); +export const savedLocations = stores("location"); + /** * @deprecated Use stores instead. */ @@ -22,13 +25,10 @@ export function saveLocations() { localStorage.setItem("saved", JSON.stringify(saved)); } -/** - * @deprecated Use stores instead. - */ export async function geocode(name: string) { - const loc = saved[name]; + const loc = await storeSnapshot({ name, type: "location" }); if (!loc) return; - const geocode = await reverseGeocode(loc); + const geocode = await reverseGeocode({ lat: loc.lat, lon: loc.lng }); if (geocode.length == 0) { return; } diff --git a/src/lib/services/stores.svelte.ts b/src/lib/services/stores.svelte.ts index 7c07b89..277c62c 100644 --- a/src/lib/services/stores.svelte.ts +++ b/src/lib/services/stores.svelte.ts @@ -203,6 +203,18 @@ export async function hasStore(info: StoreInfo) { return store !== undefined; } +export async function storeSnapshot(info: StoreInfo) { + const db = await getDB(); + const store = await db.getFromIndex("stores", "by-name-and-type", [ + info.name, + info.type, + ]); + if (!store) { + return null; + } + return JSON.parse(store.data) as T; +} + // export async function store(info: StoreInfo) { // const store = await db.getFromIndex("stores", "by-name-and-type", [info.name, info.type]); // if (!store) {