Files
traveldrafter/web/datastore.js

104 lines
2.2 KiB
JavaScript

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;
}