Add scrobble functionality (#19)

* Fix slider bar background to use theme

* Add "scrobbleAtDuration" to settings store

* Add subscribeWithSelector and playCount incrementor

* Add scrobbling API and mutation

* Add scrobble settings

* Begin support for multi-server queue handling

* Dynamically set version on auth header

* Add scrobbling functionality for navidrome/jellyfin
This commit is contained in:
Jeff 2023-01-30 20:01:57 -08:00 committed by GitHub
parent 85bf910d65
commit 484c96187c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 1253 additions and 653 deletions

View file

@ -20,6 +20,7 @@ export interface AuthSlice extends AuthState {
actions: {
addServer: (args: ServerListItem) => void;
deleteServer: (id: string) => void;
getServer: (id?: string) => ServerListItem | undefined;
setCurrentServer: (server: ServerListItem | null) => void;
updateServer: (id: string, args: Partial<ServerListItem>) => void;
};
@ -28,7 +29,7 @@ export interface AuthSlice extends AuthState {
export const useAuthStore = create<AuthSlice>()(
persist(
devtools(
immer((set) => ({
immer((set, get) => ({
actions: {
addServer: (args) => {
set((state) => {
@ -43,6 +44,9 @@ export const useAuthStore = create<AuthSlice>()(
}
});
},
getServer: (id) => {
return get().serverList.find((server) => server.id === id);
},
setCurrentServer: (server) => {
set((state) => {
state.currentServer = server;

File diff suppressed because it is too large Load diff

View file

@ -47,6 +47,7 @@ export interface SettingsState {
playButtonBehavior: Play;
scrobble: {
enabled: boolean;
scrobbleAtDuration: number;
scrobbleAtPercentage: number;
};
skipButtons: {
@ -98,7 +99,8 @@ export const useSettingsStore = create<SettingsSlice>()(
muted: false,
playButtonBehavior: Play.NOW,
scrobble: {
enabled: false,
enabled: true,
scrobbleAtDuration: 240,
scrobbleAtPercentage: 75,
},
skipButtons: {
@ -220,7 +222,7 @@ export const useSettingsStore = create<SettingsSlice>()(
return merge(currentState, persistedState);
},
name: 'store_settings',
version: 1,
version: 2,
},
),
);