diff --git a/Opus/Code/Api/SongManager.cs b/Opus/Code/Api/SongManager.cs index e9a0aa3..72bde82 100644 --- a/Opus/Code/Api/SongManager.cs +++ b/Opus/Code/Api/SongManager.cs @@ -1,5 +1,6 @@ using Opus.Api.Services; using Opus.DataStructure; +using Opus.Fragments; using SQLite; using System; using System.Collections.Generic; @@ -126,30 +127,37 @@ namespace Opus.Api /// Add a song to the favorite playlist. /// /// - public static void Fav(Song song) + public async static void Fav(Song song) { - Task.Run(() => + Console.WriteLine("&Fav " + song.Title); + await Task.Run(() => { SQLiteConnection db = new SQLiteConnection(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "Favorites.sqlite")); db.CreateTable(); db.Insert(song); }); + Home.instance?.RefreshFavs(); } /// /// Remove a song from the favorites. /// /// - public static void UnFav(Song song) + public async static void UnFav(Song song) { - Task.Run(() => + Console.WriteLine("&UnFav " + song.Title); + await Task.Run(() => { SQLiteConnection db = new SQLiteConnection(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "Favorites.sqlite")); db.CreateTable(); - db.Table().Delete(x => (x.IsYt && x.YoutubeID == song.YoutubeID) || (!x.IsYt && x.LocalID == song.LocalID)); + if(song.IsYt) + db.Table().Delete(x => x.IsYt && x.YoutubeID == song.YoutubeID); + else + db.Table().Delete(x => !x.IsYt && x.LocalID == song.LocalID); }); + Home.instance?.RefreshFavs(); } /// diff --git a/Opus/Code/DataStructure/Song.cs b/Opus/Code/DataStructure/Song.cs index 0228033..1093fb4 100644 --- a/Opus/Code/DataStructure/Song.cs +++ b/Opus/Code/DataStructure/Song.cs @@ -14,7 +14,7 @@ namespace Opus.DataStructure [Serializable] public class Song { - [PrimaryKey, Unique] + [PrimaryKey, Unique, AutoIncrement] public int Index { get; set; } public string Title { get; set; } diff --git a/Opus/Code/UI/Fragments/Home.cs b/Opus/Code/UI/Fragments/Home.cs index 684bf98..1019b95 100644 --- a/Opus/Code/UI/Fragments/Home.cs +++ b/Opus/Code/UI/Fragments/Home.cs @@ -206,6 +206,11 @@ namespace Opus.Fragments } } + public void RefreshFavs() + { + adapterItems.Find(x => x.SectionTitle == GetString(Resource.String.favorite)).recycler.GetAdapter().NotifyDataSetChanged(); + } + public void NotifyQueueInserted(int position) { if (adapterItems.Count > 0)