subtracks/app/subsonic/params.ts
austinried 081251061d
Library store refactor (#76)
* start of music store refactor

moving stuff into a state cache
better separate it from view logic

* added paginated list/album list

* reworked fetchAlbumList to remove ui state

refactored home screen to use new method
i broke playing songs somehow, JS thread goes into a loop

* don't reset parts manually, do it all at once

* fixed perf issue related to too many rerenders

rerenders were caused by strict equality check on object/array picks
switched artistInfo to new store
updated zustand and fixed deprecation warnings

* update typescript

and use workspace tsc version for vscode

* remove old artistInfo

* switched to new playlist w/songs

removed more unused stuff

* remove unused + (slightly) rework search

* refactor star

* use only original/large imges for covers/artist

fix view artist from context menu
add loading indicators to song list and artist views (show info we have right away)

* set starred/unstar assuming it works

and correct state on error

* reorg, remove old music slice files

* added back fix for song cover art

* sort artists by localCompare name

* update licenses

* fix now playing background grey bar

* update react-native-gesture-handler

for node-fetch security alert

* fix another gradient height grey bar issue

* update licenses again

* remove thumbnail cache

* rename to remove "Library" from methods

* Revert "remove thumbnail cache"

This reverts commit e0db4931f11bbf4cd8e73102d06505c6ae85f4a6.

* use ids for lists, pull state later

* Revert "use only original/large imges for covers/artist"

This reverts commit c9aea9065ce6ebe3c8b09c10dd74d4de153d76fd.

* deep equal ListItem props for now

this needs a bigger refactor

* use immer as middleware

* refactor api client to use string method

hoping to use this for requestKey/deduping next

* use thumbnails in list items

* Revert "refactor api client to use string method"

This reverts commit 234326135b7af96cb91b941e7ca515f45c632556.

* rename/cleanup

* store servers by id

* get rid of settings selectors

* renames for clarity

remove unused estimateContentLength setting

* remove trackplayer selectors

* fix migration for library filter settings

* fixed shuffle order reporting wrong track/queue

* removed the other selectors

* don't actually need es6/react for our state

* fix slow artist sort on star

localeCompare is too slow for large lists
2022-03-28 13:30:57 +09:00

138 lines
2.1 KiB
TypeScript

//
// Browsing
//
export type GetIndexesParams = {
musicFolderId?: string
ifModifiedSince?: number
}
export type GetArtistInfoParams = {
id: string
count?: number
includeNotPresent?: boolean
}
export type GetArtistInfo2Params = GetArtistInfoParams
export type GetMusicDirectoryParams = {
id: string
}
export type GetAlbumParams = {
id: string
}
export type GetArtistParams = {
id: string
}
export type GetSongParams = {
id: string
}
export type GetTopSongsParams = {
artist: string
count?: number
}
//
// Album/song lists
//
export type GetAlbumList2TypeBase =
| 'random'
| 'newest'
| 'frequent'
| 'recent'
| 'starred'
| 'alphabeticalByName'
| 'alphabeticalByArtist'
export type GetAlbumListTypeBase = GetAlbumList2TypeBase | ' highest'
type GetAlbumListBase = {
size?: number
offset?: number
musicFolderId?: string
}
export type GetAlbumList2TypeByYear = GetAlbumListBase & {
type: 'byYear'
fromYear: number
toYear: number
}
export type GetAlbumList2TypeByGenre = GetAlbumListBase & {
type: 'byGenre'
genre: string
}
export type GetAlbumList2Params =
| (GetAlbumListBase & { type: GetAlbumList2TypeBase })
| GetAlbumList2TypeByYear
| GetAlbumList2TypeByGenre
export type GetAlbumListParams = GetAlbumList2Params
export type GetAlbumList2Type = GetAlbumList2TypeBase | 'byYear' | 'byGenre'
export type GetAlbumListType = GetAlbumListTypeBase | 'byYear' | 'byGenre'
//
// Playlists
//
export type GetPlaylistsParams = {
username?: string
}
export type GetPlaylistParams = {
id: string
}
//
// Media retrieval
//
export type GetCoverArtParams = {
id: string
size?: string
}
export type StreamParams = {
id: string
maxBitRate?: number
format?: string
estimateContentLength?: boolean
}
//
// Media annotation
//
export type ScrobbleParams = {
id: string
time?: Date
submission?: boolean
}
export type StarParams = {
id?: string
albumId?: string
artistId?: string
}
//
// Searching
//
export type Search3Params = {
query: string
artistCount?: number
artistOffset?: number
albumCount?: number
albumOffset?: number
songCount?: number
songOffset?: number
musicFolderId?: string
}