Skip to content

Commit

Permalink
Adding private playlists to track collections
Browse files Browse the repository at this point in the history
  • Loading branch information
akrol95 committed Sep 30, 2024
1 parent d716f9a commit c4493e8
Show file tree
Hide file tree
Showing 9 changed files with 65 additions and 9 deletions.
1 change: 1 addition & 0 deletions BMM.Api/Framework/HTTP/ApiUris.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public class ApiUris
public static string TrackCollection = "track_collection/{id}";
public static string TrackCollectionAlbum = "track_collection/{id}/album/{albumId}";
public static string TrackCollectionPlaylist = "track_collection/{id}/playlist/{playlistId}";
public static string TrackCollectionTrackCollection = "track_collection/{id}/track_collection/{playlistId}";
public static string TrackCollectionResetShare = "track_collection/{id}/reset-share";
public static string TrackCollectionUnfollow = "track_collection/{id}/unfollow";
public static string TrackCollectionTopSongs = "track_collection/top-songs";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ public interface ITrackCollectionClient
Task AddAlbumToTrackCollection(int id, int albumId);

Task AddPlaylistToTrackCollection(int id, int playlistId);

Task AddTrackCollectionToTrackCollection(int id, int trackCollectionId);

/// <summary>Deletes the track collection.</summary>
Task<bool> Delete(int id);
Expand Down
10 changes: 10 additions & 0 deletions BMM.Api/Implementation/Clients/TrackCollectionClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,16 @@ public async Task AddPlaylistToTrackCollection(int id, int playlistId)
await RequestIsSuccessful(request);
}

public async Task AddTrackCollectionToTrackCollection(int id, int trackCollectionId)
{
var uri = new UriTemplate(ApiUris.TrackCollectionTrackCollection);
uri.SetParameter("id", id);
uri.SetParameter("playlistId", trackCollectionId);

var request = BuildRequest(uri, HttpMethod.Post);
await RequestIsSuccessful(request);
}

public async Task<bool> Delete(int id)
{
var uri = new UriTemplate(ApiUris.TrackCollection);
Expand Down
20 changes: 20 additions & 0 deletions BMM.Core/Extensions/ActionSheetConfigExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using Acr.UserDialogs;
using BMM.Core.Constants;
using BMM.Core.Helpers;
using BMM.Core.Implementations.Localization;
using BMM.Core.Implementations.Localization.Interfaces;
using BMM.Core.Translation;

namespace BMM.Core.Extensions;

public static class ActionSheetConfigExtensions
{
private static IBMMLanguageBinder TextSource => BMMLanguageBinderLocator.TextSource;

public static ActionSheetConfig AddOptionForAddToTrackCollection(this ActionSheetConfig actionSheetConfig, Func<Task> action)
{
return actionSheetConfig.AddHandled(TextSource[Translations.UserDialogs_AddAllToPlaylist],
async () => await action(),
ImageResourceNames.IconFavorites);
}
}
1 change: 1 addition & 0 deletions BMM.Core/Implementations/Analytics/Event.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,6 @@ public class Event
public const string AlbumAddedToTrackCollection = "added album to track_collection";
public const string TrackAddedToTrackCollection = "added track to track_collection";
public const string PlaylistAddedToTrackCollection = "added playlist to track_collection";
public const string TrackCollectionAddedToTrackCollection = "added track collection to track_collection";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@ public Task AddPlaylistToTrackCollection(int id, int playlistId)
return _client.AddPlaylistToTrackCollection(id, playlistId);
}

public Task AddTrackCollectionToTrackCollection(int id, int trackCollectionId)
{
return _client.AddTrackCollectionToTrackCollection(id, trackCollectionId);
}

public Task<bool> Delete(int id)
{
return _client.Delete(id);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using BMM.Api.Abstraction;
using BMM.Api.Abstraction;
using BMM.Api.Implementation.Clients.Contracts;
using BMM.Api.Implementation.Models;
using BMM.Core.Implementations.Analytics;
Expand Down Expand Up @@ -33,6 +31,11 @@ public Task AddPlaylistToTrackCollection(int id, int playlistId)
return _client.AddPlaylistToTrackCollection(id, playlistId);
}

public Task AddTrackCollectionToTrackCollection(int id, int trackCollectionId)
{
return _client.AddTrackCollectionToTrackCollection(id, trackCollectionId);
}

public Task<bool> Delete(int id)
{
return _client.Delete(id);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,16 @@ public async Task AddToTrackCollection(TrackCollection trackCollection, int id,
{"Origin", origin}
});
}
else if (type == DocumentType.TrackCollection)
{
await _bmmClient.TrackCollection.AddTrackCollectionToTrackCollection(trackCollection.Id, id);
_analytics.LogEvent(Event.TrackCollectionAddedToTrackCollection,
new Dictionary<string, object>
{
{"TrackCollectionId", id},
{"Origin", origin}
});
}
else
{
throw new UnsupportedDocumentTypeException();
Expand Down
16 changes: 10 additions & 6 deletions BMM.Core/ViewModels/Base/BaseViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using BMM.Api.Framework;
using BMM.Api.Implementation.Models;
using BMM.Core.Constants;
using BMM.Core.Extensions;
using BMM.Core.GuardedActions.TrackOptions.Interfaces;
using BMM.Core.GuardedActions.TrackOptions.Parameters;
using BMM.Core.Helpers;
Expand Down Expand Up @@ -237,12 +238,9 @@ protected virtual async Task OptionsAction(Document item)

bmmUserDialogs.ActionSheet(new ActionSheetConfig()
.SetTitle(playlist.Title)
.AddHandled(TextSource[Translations.UserDialogs_AddAllToPlaylist],
async () =>
await AddToTrackCollection(
playlist.Id,
DocumentType.Playlist),
ImageResourceNames.IconFavorites)
.AddOptionForAddToTrackCollection(async () => await AddToTrackCollection(
playlist.Id,
DocumentType.Playlist))
.AddHandled(TextSource[Translations.TrackCollectionViewModel_SharePlaylist],
async () => await Mvx.IoCProvider.Resolve<IShareLink>().Share(playlist),
ImageResourceNames.IconShare)
Expand All @@ -268,6 +266,9 @@ private void ShowActionSheetIfSharedTrackCollection(
{
userDialogs.ActionSheet(new ActionSheetConfig()
.SetTitle(trackCollection.Name)
.AddOptionForAddToTrackCollection(async () => await AddToTrackCollection(
trackCollection.Id,
DocumentType.TrackCollection))
.AddHandled(
TextSource[Translations.TrackCollectionViewModel_RemovePlaylist],
async () => await RemoveSharedPlaylist(trackCollection.Id),
Expand All @@ -283,6 +284,9 @@ private void ShowActionSheetIfPrivateTrackCollection(
{
userDialogs.ActionSheet(new ActionSheetConfig()
.SetTitle(trackCollection.Name)
.AddOptionForAddToTrackCollection(async () => await AddToTrackCollection(
trackCollection.Id,
DocumentType.TrackCollection))
.AddHandled(TextSource[Translations.TrackCollectionViewModel_SharePlaylist],
async () =>
{
Expand Down

0 comments on commit c4493e8

Please sign in to comment.