From 58a096db29e5e848f3a3d0bae50b1bc74d925714 Mon Sep 17 00:00:00 2001 From: Jakob Moser Date: Thu, 13 Nov 2025 00:20:32 +0100 Subject: [PATCH] Add Song model type --- karaokatalog/ui/static/model/Song.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 karaokatalog/ui/static/model/Song.js 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 + } +}