mirror of
https://github.com/Boof2015/astra-mobile.git
synced 2026-08-20 12:40:15 +02:00
initial port for dynamic playlists
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
import { create } from 'zustand';
|
||||
import type { DbTrack } from '@/types/library';
|
||||
import type { Playlist, PlaylistTrackEntry } from '@/types/playlist';
|
||||
import type {
|
||||
DynamicPlaylistPreview,
|
||||
DynamicPlaylistRulesV1,
|
||||
} from '@/shared/playlists/dynamicPlaylist';
|
||||
import { openLibraryDb, type LibraryDatabase } from '@/db/database';
|
||||
import { getAllTracks } from '@/db/queries';
|
||||
import * as playlistDb from '@/db/playlistQueries';
|
||||
@@ -41,6 +45,10 @@ interface PlaylistStore {
|
||||
openPlaylist: (id: number) => Promise<void>;
|
||||
closePlaylist: () => void;
|
||||
createPlaylist: (name: string) => Promise<Playlist>;
|
||||
createDynamicPlaylist: (name: string, rules: DynamicPlaylistRulesV1) => Promise<Playlist>;
|
||||
getDynamicPlaylistRules: (id: number) => Promise<DynamicPlaylistRulesV1>;
|
||||
updateDynamicPlaylistRules: (id: number, rules: DynamicPlaylistRulesV1) => Promise<void>;
|
||||
previewDynamicPlaylist: (rules: DynamicPlaylistRulesV1) => Promise<DynamicPlaylistPreview>;
|
||||
renamePlaylist: (id: number, name: string) => Promise<void>;
|
||||
deletePlaylist: (id: number) => Promise<void>;
|
||||
addTracksToPlaylist: (id: number, tracks: DbTrack[]) => Promise<number>;
|
||||
@@ -117,6 +125,29 @@ export const usePlaylistStore = create<PlaylistStore>((set, get) => {
|
||||
return playlist;
|
||||
},
|
||||
|
||||
createDynamicPlaylist: async (name, rules) => {
|
||||
const db = await openLibraryDb();
|
||||
const playlist = await playlistDb.createDynamicPlaylist(db, name, rules);
|
||||
await refreshWith(db);
|
||||
return playlist;
|
||||
},
|
||||
|
||||
getDynamicPlaylistRules: async (id) => {
|
||||
const db = await openLibraryDb();
|
||||
return playlistDb.getDynamicPlaylistRules(db, id);
|
||||
},
|
||||
|
||||
updateDynamicPlaylistRules: async (id, rules) => {
|
||||
const db = await openLibraryDb();
|
||||
await playlistDb.updateDynamicPlaylistRules(db, id, rules);
|
||||
await refreshWith(db);
|
||||
},
|
||||
|
||||
previewDynamicPlaylist: async (rules) => {
|
||||
const db = await openLibraryDb();
|
||||
return playlistDb.previewDynamicPlaylist(db, rules);
|
||||
},
|
||||
|
||||
renamePlaylist: async (id, name) => {
|
||||
const db = await openLibraryDb();
|
||||
await playlistDb.renamePlaylist(db, id, name);
|
||||
|
||||
Reference in New Issue
Block a user