mirror of
https://github.com/wkulhanek/bonob.git
synced 2025-12-21 17:33:29 +01:00
Fix issue where track numbers on playlists were album track numbers rather than playlist track numbers
This commit is contained in:
@@ -657,31 +657,34 @@ export class Navidrome implements MusicService {
|
|||||||
id,
|
id,
|
||||||
})
|
})
|
||||||
.then((it) => it.playlist)
|
.then((it) => it.playlist)
|
||||||
.then((playlist) => ({
|
.then((playlist) => {
|
||||||
id: playlist._id,
|
let trackNumber = 1;
|
||||||
name: playlist._name,
|
return {
|
||||||
entries: (playlist.entry || []).map((entry) => ({
|
id: playlist._id,
|
||||||
id: entry._id,
|
name: playlist._name,
|
||||||
name: entry._title,
|
entries: (playlist.entry || []).map((entry) => ({
|
||||||
mimeType: entry._contentType,
|
id: entry._id,
|
||||||
duration: parseInt(entry._duration || "0"),
|
name: entry._title,
|
||||||
number: parseInt(entry._track || "0"),
|
mimeType: entry._contentType,
|
||||||
genre: maybeAsGenre(entry._genre),
|
duration: parseInt(entry._duration || "0"),
|
||||||
album: {
|
number: trackNumber++,
|
||||||
id: entry._albumId,
|
|
||||||
name: entry._album,
|
|
||||||
year: entry._year,
|
|
||||||
genre: maybeAsGenre(entry._genre),
|
genre: maybeAsGenre(entry._genre),
|
||||||
|
album: {
|
||||||
artistName: entry._artist,
|
id: entry._albumId,
|
||||||
artistId: entry._artistId,
|
name: entry._album,
|
||||||
},
|
year: entry._year,
|
||||||
artist: {
|
genre: maybeAsGenre(entry._genre),
|
||||||
id: entry._artistId,
|
|
||||||
name: entry._artist,
|
artistName: entry._artist,
|
||||||
},
|
artistId: entry._artistId,
|
||||||
})),
|
},
|
||||||
})),
|
artist: {
|
||||||
|
id: entry._artistId,
|
||||||
|
name: entry._artist,
|
||||||
|
},
|
||||||
|
})),
|
||||||
|
}
|
||||||
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
return Promise.resolve(musicLibrary);
|
return Promise.resolve(musicLibrary);
|
||||||
|
|||||||
@@ -3163,30 +3163,49 @@ describe("Navidrome", () => {
|
|||||||
describe("when there is a playlist with the id", () => {
|
describe("when there is a playlist with the id", () => {
|
||||||
describe("and it has tracks", () => {
|
describe("and it has tracks", () => {
|
||||||
it("should return the playlist with entries", async () => {
|
it("should return the playlist with entries", async () => {
|
||||||
const playlist = aPlaylist({
|
const id = uuid();
|
||||||
entries: [
|
const name = "Great Playlist";
|
||||||
aTrack({ genre: { id: "pop", name: "pop" } }),
|
const track1 = aTrack({
|
||||||
aTrack({ genre: { id: "rock", name: "rock" } }),
|
genre: { id: "pop", name: "pop" },
|
||||||
],
|
number: 66,
|
||||||
|
});
|
||||||
|
const track2 = aTrack({
|
||||||
|
genre: { id: "rock", name: "rock" },
|
||||||
|
number: 77,
|
||||||
});
|
});
|
||||||
|
|
||||||
mockGET
|
mockGET
|
||||||
.mockImplementationOnce(() => Promise.resolve(ok(PING_OK)))
|
.mockImplementationOnce(() => Promise.resolve(ok(PING_OK)))
|
||||||
.mockImplementationOnce(() =>
|
.mockImplementationOnce(() =>
|
||||||
Promise.resolve(ok(getPlayList(playlist)))
|
Promise.resolve(
|
||||||
|
ok(
|
||||||
|
getPlayList({
|
||||||
|
id,
|
||||||
|
name,
|
||||||
|
entries: [track1, track2],
|
||||||
|
})
|
||||||
|
)
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
const result = await navidrome
|
const result = await navidrome
|
||||||
.generateToken({ username, password })
|
.generateToken({ username, password })
|
||||||
.then((it) => it as AuthSuccess)
|
.then((it) => it as AuthSuccess)
|
||||||
.then((it) => navidrome.login(it.authToken))
|
.then((it) => navidrome.login(it.authToken))
|
||||||
.then((it) => it.playlist(playlist.id));
|
.then((it) => it.playlist(id));
|
||||||
|
|
||||||
expect(result).toEqual(playlist);
|
expect(result).toEqual({
|
||||||
|
id,
|
||||||
|
name,
|
||||||
|
entries: [
|
||||||
|
{ ...track1, number: 1 },
|
||||||
|
{ ...track2, number: 2 },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/getPlaylist`, {
|
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/getPlaylist`, {
|
||||||
params: {
|
params: {
|
||||||
id: playlist.id,
|
id,
|
||||||
...authParams,
|
...authParams,
|
||||||
},
|
},
|
||||||
headers,
|
headers,
|
||||||
|
|||||||
Reference in New Issue
Block a user