diff --git a/karaokatalog/ui/static/model/Song.js b/karaokatalog/ui/static/model/Song.js new file mode 100644 index 0000000..107a3e8 --- /dev/null +++ b/karaokatalog/ui/static/model/Song.js @@ -0,0 +1,24 @@ +import { Base } from "./Base.js" +import { getFavoriteIds, addFavorite, removeFavorite } from "./favorites.js" + +export default class Song extends Base { + static async forceLoad() { + return await m.request({ url: "/songs.json" }) + } + + get favorite() { + return getFavoriteIds().has(this.id || this.uuid) + } + + set favorite(isFavorite) { + if (isFavorite) { + addFavorite(this.id || this.uuid) + } else { + removeFavorite(this.id || this.uuid) + } + } + + toggleFavorite() { + this.favorite = !this.favorite + } +}