private async Task OnFavorite() { //TODO: o usuário pode escolher desativar pela tela de FavoritedView e AnimeSpecsView as notificações string lang = default; var bdCollection = App.liteDB.GetCollection <FavoritedAnime>(); var taskResult = Task.Run(async() => { if (bdCollection.Exists(p => p.Anime.MalId == AnimeContext.Anime.MalId)) { AnimeContext.IsFavorited = false; bdCollection.Delete(AnimeContext.Anime.MalId); lang = Lang.Lang.RemovedFromFavorite; } else { AnimeContext.IsFavorited = true; AnimeContext.LastUpdateDate = DateTime.Today; AnimeContext.NextStreamDate = await AnimeContext.NextEpisodeDateAsync(); int uniqueId = 0; if (bdCollection.Count() > 0) { uniqueId = bdCollection.Max(p => p.UniqueNotificationID); if (uniqueId == int.MaxValue) { uniqueId = 0; } else if (uniqueId < int.MaxValue) { uniqueId += 1; } } AnimeContext.UniqueNotificationID = uniqueId; AnimeContext.CanGenerateNotifications = AnimeContext.Anime.Airing && AnimeContext.NextStreamDate != null; bdCollection.Upsert(AnimeContext.Anime.MalId, AnimeContext); lang = Lang.Lang.AddedToFavorite; } if (OtherViewModelFunc != null) { //atualiza a coleção observável de CatalogueViewModel await OtherViewModelFunc.Invoke(); } }); await taskResult; DependencyService.Get <IToast>().MakeToastMessageShort(lang); #if DEBUG Console.WriteLine("Animes favoritados no momento"); foreach (var anime in bdCollection.FindAll()) { Console.WriteLine(anime.Anime.Title); } #endif }