export class LocationsDataStore { static rememberAll(location_list) { let locations = LocationsDataStore.get(); for (let location of location_list) { locations[location.id] = location; } LocationsDataStore.set(locations); } static rememberAllIfNotExist(location_list) { let locations = LocationsDataStore.get(); for (let location of location_list) { if (!(location.id in locations)) { locations[location.id] = location; } } LocationsDataStore.set(locations); } static get() { return DataStore.get("locations") || {}; } static set(value) { DataStore.set("locations", value); } } export class RecentLocationsDataStore { static remember(location_id) { let recent_locations = RecentLocationsDataStore.get(); recent_locations = recent_locations.filter((item) => { return item != location_id; }); recent_locations.push(location_id); RecentLocationsDataStore.set(recent_locations); } static get() { return DataStore.get("recent-locations") || []; } static set(value) { DataStore.set("recent-locations", value); } } export class TrackedTripsDataStore { static remember(trip_id, origin_id, destination_id) { let tracked_trips = TrackedTripsDataStore.get(); tracked_trips.push({ trip: trip_id, origin: origin_id, destination: destination_id, }); TrackedTripsDataStore.set(tracked_trips); } static get() { return DataStore.get("tracked-trips") || []; } static set(value) { DataStore.set("tracked-trips", value); } } export class TripsDataStore { static remember(trip) { TripsDataStore.rememberAll([trip]); } static rememberAll(trip_list) { let tracked_trips = TripsDataStore.get(); for (let trip of trip_list) { tracked_trips[trip.id] = trip; } TripsDataStore.set(tracked_trips); } static get() { return DataStore.get("trips") || {}; } static set(value) { DataStore.set("trips", value); } } export class DataStore { static get(key) { return JSON.parse(window.localStorage.getItem(key)); } static set(key, value) { window.localStorage.setItem(key, JSON.stringify(value)); } static locations = LocationsDataStore; static recent_locations = RecentLocationsDataStore; static tracked_trips = TrackedTripsDataStore; static trips = TripsDataStore; }