diff --git a/karaokatalog/ui/static/model/favorites.js b/karaokatalog/ui/static/model/favorites.js new file mode 100644 index 0000000..3f6cdb5 --- /dev/null +++ b/karaokatalog/ui/static/model/favorites.js @@ -0,0 +1,32 @@ +const FAVORITES_STORAGE_KEY = "songAppFavorites" + +let favoriteIds = null + +export function getFavoriteIds() { + if (favoriteIds === null) { + favoriteIds = new Set( + JSON.parse(localStorage.getItem(FAVORITES_STORAGE_KEY)) || [], + ) + } + + return favoriteIds +} + +function setFavoriteIds(favs) { + localStorage.setItem( + FAVORITES_STORAGE_KEY, + JSON.stringify(Array.from(favs)), + ) +} + +export function addFavorite(id) { + const favs = getFavoriteIds() + favs.add(id) + setFavoriteIds(favs) +} + +export function removeFavorite(id) { + const favs = getFavoriteIds() + favs.delete(id) + setFavoriteIds(favs) +}