From a34c93c351ff1894c1be1fd8c868d0a4dc5fac81 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 11 Mar 2024 21:49:16 -0500 Subject: [PATCH 1/2] -#130 Show in the playlist all tracks duration --- .../default/classes/service/SyncPlaylist.cls | 35 ++++++++++--------- ...laylist__c-Playlist Layout.layout-meta.xml | 4 +++ .../TotalTracksDuration__c.field-meta.xml | 12 +++++++ .../Spotify_App_Basic.permissionset-meta.xml | 5 +++ 4 files changed, 39 insertions(+), 17 deletions(-) create mode 100644 force-app/main/default/objects/Playlist__c/fields/TotalTracksDuration__c.field-meta.xml diff --git a/force-app/main/default/classes/service/SyncPlaylist.cls b/force-app/main/default/classes/service/SyncPlaylist.cls index 0fe458a..d371ba0 100644 --- a/force-app/main/default/classes/service/SyncPlaylist.cls +++ b/force-app/main/default/classes/service/SyncPlaylist.cls @@ -17,13 +17,13 @@ public class SyncPlaylist { if (token.getStatusCode() != SpotifyApiHttpClient.SUCCESS_STATUS_CODE) continue; - + TokenResponse tokenRes = TokenResponse.parse(token.getBody()); PlaylistResponse playlists; Integer cont = 0; do { - + HttpResponse playlistsRes = SpotifyApiHttpClient.getPlaylist( tokenRes.access_token, cred.SpotifyUserId__c, @@ -37,8 +37,18 @@ public class SyncPlaylist { .replaceAll('"public" :', '"publicField" :')); for (SimplefiedPlaylistObject playlist : playlists.items) { + Integer TotalTracksDuration = 0; - playlistTrackMap.putAll(getPlaylistTrack(tokenRes.access_token, playlist.id)); + for (SimplefieldTracksObject track : getPlaylistTrack(tokenRes.access_token, playlist.id)) { + + TotalTracksDuration += track.duration_ms; + String key = track.id + playlist.id; + PlaylistTrack__c playlistTrackRecord = new PlaylistTrack__c( + PlaylistTrack__c = key, + Playlist__r = new Playlist__c(SpotifyId__c = playlist.id), + Track__r = new Track__c(SpotifyId__c = track.id)); + playlistTrackMap.put(key, playlistTrackRecord); + } Playlist__c record = new Playlist__c( SpotifyId__c = playlist.id, @@ -46,7 +56,8 @@ public class SyncPlaylist { Description__c = playlist.description, Public__c = playlist.publicField, url__c = playlist.external_urls?.spotify, - followers__c = playlist.followers + followers__c = playlist.followers, + TotalTracksDuration__c = TotalTracksDuration ); forInsert.add(record); } @@ -68,25 +79,15 @@ public class SyncPlaylist { } } - private static Map getPlaylistTrack(String token,String playlistId) { - - Map result = new Map(); + private static List getPlaylistTrack(String token,String playlistId) { + List result = new List(); HttpResponse trackRes = SpotifyApiHttpClient.getPlaylistTracks(token, playlistId); if (trackRes.getStatusCode() == SpotifyApiHttpClient.SUCCESS_STATUS_CODE) { TrackResponse tracks = TrackResponse.parse(trackRes.getBody()); - - for (SimplefieldTracksObject track : tracks.getTracks()) { - - String key = track.id + playlistId; - PlaylistTrack__c playlistTrackRecord = new PlaylistTrack__c( - PlaylistTrack__c = key, - Playlist__r = new Playlist__c(SpotifyId__c = playlistId), - Track__r = new Track__c(SpotifyId__c = track.id)); - result.put(key, playlistTrackRecord); - } + result.addAll(tracks.getTracks()); } return result; diff --git a/force-app/main/default/layouts/Playlist__c-Playlist Layout.layout-meta.xml b/force-app/main/default/layouts/Playlist__c-Playlist Layout.layout-meta.xml index 157205d..1da4283 100644 --- a/force-app/main/default/layouts/Playlist__c-Playlist Layout.layout-meta.xml +++ b/force-app/main/default/layouts/Playlist__c-Playlist Layout.layout-meta.xml @@ -41,6 +41,10 @@ Edit Public__c + + Edit + TotalTracksDuration__c + diff --git a/force-app/main/default/objects/Playlist__c/fields/TotalTracksDuration__c.field-meta.xml b/force-app/main/default/objects/Playlist__c/fields/TotalTracksDuration__c.field-meta.xml new file mode 100644 index 0000000..048e9e8 --- /dev/null +++ b/force-app/main/default/objects/Playlist__c/fields/TotalTracksDuration__c.field-meta.xml @@ -0,0 +1,12 @@ + + + TotalTracksDuration__c + false + + 18 + false + 0 + false + Number + false + diff --git a/force-app/main/default/permissionsets/Spotify_App_Basic.permissionset-meta.xml b/force-app/main/default/permissionsets/Spotify_App_Basic.permissionset-meta.xml index aa82220..76d3198 100644 --- a/force-app/main/default/permissionsets/Spotify_App_Basic.permissionset-meta.xml +++ b/force-app/main/default/permissionsets/Spotify_App_Basic.permissionset-meta.xml @@ -119,6 +119,11 @@ Playlist__c.SpotifyId__c true + + true + Playlist__c.TotalTracksDuration__c + true + true Playlist__c.Url__c From 03fcc6d4c72086e32f2260ad1f31d3893a6162ad Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 12 Mar 2024 12:41:12 -0500 Subject: [PATCH 2/2] -#130 changes for the code --- .../main/default/classes/service/SyncPlaylist.cls | 6 +++--- .../default/classes/service/test/SyncPlaylistTest.cls | 4 ++-- .../Playlist__c-Playlist Layout.layout-meta.xml | 4 ++-- ...on__c.field-meta.xml => Duration__c.field-meta.xml} | 4 ++-- .../Spotify_App_Basic.permissionset-meta.xml | 10 +++++----- 5 files changed, 14 insertions(+), 14 deletions(-) rename force-app/main/default/objects/Playlist__c/fields/{TotalTracksDuration__c.field-meta.xml => Duration__c.field-meta.xml} (78%) diff --git a/force-app/main/default/classes/service/SyncPlaylist.cls b/force-app/main/default/classes/service/SyncPlaylist.cls index d371ba0..a6e7bcd 100644 --- a/force-app/main/default/classes/service/SyncPlaylist.cls +++ b/force-app/main/default/classes/service/SyncPlaylist.cls @@ -37,11 +37,11 @@ public class SyncPlaylist { .replaceAll('"public" :', '"publicField" :')); for (SimplefiedPlaylistObject playlist : playlists.items) { - Integer TotalTracksDuration = 0; + Integer duration = 0; for (SimplefieldTracksObject track : getPlaylistTrack(tokenRes.access_token, playlist.id)) { - TotalTracksDuration += track.duration_ms; + duration += track.duration_ms; String key = track.id + playlist.id; PlaylistTrack__c playlistTrackRecord = new PlaylistTrack__c( PlaylistTrack__c = key, @@ -57,7 +57,7 @@ public class SyncPlaylist { Public__c = playlist.publicField, url__c = playlist.external_urls?.spotify, followers__c = playlist.followers, - TotalTracksDuration__c = TotalTracksDuration + Duration__c = duration ); forInsert.add(record); } diff --git a/force-app/main/default/classes/service/test/SyncPlaylistTest.cls b/force-app/main/default/classes/service/test/SyncPlaylistTest.cls index 82b41fe..a97d94d 100644 --- a/force-app/main/default/classes/service/test/SyncPlaylistTest.cls +++ b/force-app/main/default/classes/service/test/SyncPlaylistTest.cls @@ -7,9 +7,9 @@ private class SyncPlaylistTest { List responseList = new List(); addResponse(responseList, '{"access_token":"1111"}'); addResponse(responseList, '{"total":2,"items":[{"id":"0","name":"name","publicField":true}]}'); - addResponse(responseList, '{"items":[{"track":{"id":"trackId"}}]}'); + addResponse(responseList, '{"items":[{"track":{"id":"trackId","duration_ms":"1"}}]}'); addResponse(responseList, '{"total":2,"items":[{"id":"1","name":"name","publicField":true}]}'); - addResponse(responseList, '{"items":[{"track":{"id":"trackId1"}}]}'); + addResponse(responseList, '{"items":[{"track":{"id":"trackId1","duration_ms":"1"}}]}'); Test.setMock(HttpCalloutMock.class, new HttpCalloutMockFactory(responseList)); List newCredentials = new List{ diff --git a/force-app/main/default/layouts/Playlist__c-Playlist Layout.layout-meta.xml b/force-app/main/default/layouts/Playlist__c-Playlist Layout.layout-meta.xml index 1da4283..4583659 100644 --- a/force-app/main/default/layouts/Playlist__c-Playlist Layout.layout-meta.xml +++ b/force-app/main/default/layouts/Playlist__c-Playlist Layout.layout-meta.xml @@ -42,8 +42,8 @@ Public__c - Edit - TotalTracksDuration__c + Readonly + Duration__c diff --git a/force-app/main/default/objects/Playlist__c/fields/TotalTracksDuration__c.field-meta.xml b/force-app/main/default/objects/Playlist__c/fields/Duration__c.field-meta.xml similarity index 78% rename from force-app/main/default/objects/Playlist__c/fields/TotalTracksDuration__c.field-meta.xml rename to force-app/main/default/objects/Playlist__c/fields/Duration__c.field-meta.xml index 048e9e8..a9b81ef 100644 --- a/force-app/main/default/objects/Playlist__c/fields/TotalTracksDuration__c.field-meta.xml +++ b/force-app/main/default/objects/Playlist__c/fields/Duration__c.field-meta.xml @@ -1,8 +1,8 @@ - TotalTracksDuration__c + Duration__c false - + 18 false 0 diff --git a/force-app/main/default/permissionsets/Spotify_App_Basic.permissionset-meta.xml b/force-app/main/default/permissionsets/Spotify_App_Basic.permissionset-meta.xml index 76d3198..0d6ffd9 100644 --- a/force-app/main/default/permissionsets/Spotify_App_Basic.permissionset-meta.xml +++ b/force-app/main/default/permissionsets/Spotify_App_Basic.permissionset-meta.xml @@ -105,23 +105,23 @@ true - true - Playlist__c.Followers__c + false + Playlist__c.Duration__c true true - Playlist__c.Public__c + Playlist__c.Followers__c true true - Playlist__c.SpotifyId__c + Playlist__c.Public__c true true - Playlist__c.TotalTracksDuration__c + Playlist__c.SpotifyId__c true