From 721cc91e47abca5116814f5d8fb4e82565422569 Mon Sep 17 00:00:00 2001 From: Sjoerd Bolten Date: Sat, 7 Sep 2024 04:51:31 +0200 Subject: [PATCH] feat(me): add batches to library (un)saving --- src/lib/me/MeManager.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/lib/me/MeManager.ts b/src/lib/me/MeManager.ts index e5970a7..d8631b4 100644 --- a/src/lib/me/MeManager.ts +++ b/src/lib/me/MeManager.ts @@ -142,9 +142,12 @@ export class MeManager extends Manager { * @param {string} ids Array of IDs. */ async saveTracks(ids: string[]): Promise { - await this.http.put(`/v1/me/tracks`, { - ids - }); + // Use an async loop to preserve the order of saves + for (let i = 0; i < ids.length; i += 50) { + await this.http.put(`/v1/me/tracks`, { + ids: ids.slice(i, i + 50) + }); + } } /** @@ -152,9 +155,12 @@ export class MeManager extends Manager { * @param {string} ids Array of IDs. */ async unsaveTracks(ids: string[]): Promise { - await this.http.delete(`/v1/me/tracks`, { - query: { ids: ids.join(',') } - }); + // Use an async loop to preserve the order of unsaves + for (let i = 0; i < ids.length; i += 50) { + await this.http.delete(`/v1/me/tracks`, { + query: { ids: ids.slice(i, i + 50).join(',') } + }); + } } async playlists(options?: {