czydojade/resources/ts/store/favourites.ts

38 lines
919 B
TypeScript

import { RootState } from "./root";
import { Module } from "vuex";
import { Stop } from "../model";
import { except } from "../utils";
export interface Favourite {
id: string;
name: string;
stops: Stop[];
}
export interface FavouritesState {
favourites: Favourite[];
}
const favourites: Module<FavouritesState, RootState> = {
namespaced: true,
state: {
favourites: []
},
mutations: {
add(state, favourite: Favourite) {
const existing = state.favourites.find((current: Favourite) => current.name === favourite.name);
if (!existing) {
state.favourites.push(favourite);
}
Object.assign(existing, except(favourite, ["id"]));
},
remove(state, favourite: Favourite) {
state.favourites = state.favourites.filter(f => f != favourite);
}
}
};
export default favourites;