diff --git a/Opus/Code/Api/PlaylistManager.cs b/Opus/Code/Api/PlaylistManager.cs index f9c6365..1ba36d1 100644 --- a/Opus/Code/Api/PlaylistManager.cs +++ b/Opus/Code/Api/PlaylistManager.cs @@ -1058,7 +1058,6 @@ namespace Opus.Api } catch (System.Net.Http.HttpRequestException) { - MainActivity.instance.Timout(); return tracks; } } @@ -1114,13 +1113,8 @@ namespace Opus.Api else song.Title = null; } - catch (System.Net.Http.HttpRequestException) - { - MainActivity.instance.Timout(); - } + catch (System.Net.Http.HttpRequestException) { } } - else - MainActivity.instance.Timout(); return song; } diff --git a/Opus/Code/Api/Services/Downloader.cs b/Opus/Code/Api/Services/Downloader.cs index 68ccb4e..7fa17bc 100644 --- a/Opus/Code/Api/Services/Downloader.cs +++ b/Opus/Code/Api/Services/Downloader.cs @@ -251,7 +251,7 @@ namespace Opus.Api.Services } catch { - MainActivity.instance.UnknowError(); + MainActivity.instance.UnknowError(ErrorCode.DL1); Cancel(); } } diff --git a/Opus/Code/Api/SongParser.cs b/Opus/Code/Api/SongParser.cs index e4e8822..d8bd6fb 100644 --- a/Opus/Code/Api/SongParser.cs +++ b/Opus/Code/Api/SongParser.cs @@ -172,7 +172,6 @@ namespace Opus.Code.Api catch (System.Net.Http.HttpRequestException) { Console.WriteLine("&Parse time out"); - MainActivity.instance.Timout(); if (MainActivity.instance != null) MainActivity.instance.FindViewById(Resource.Id.ytProgress).Visibility = ViewStates.Gone; song.IsParsed = false; @@ -183,7 +182,7 @@ namespace Opus.Code.Api catch (YoutubeExplode.Exceptions.VideoUnplayableException ex) { Console.WriteLine("&Parse error: " + ex.Message); - MainActivity.instance.Unplayable(song.Title, ex.Message); + MainActivity.instance.Unplayable(ErrorCode.SP2, song.Title, ex.Message); if (MainActivity.instance != null) MainActivity.instance.FindViewById(Resource.Id.ytProgress).Visibility = ViewStates.Gone; @@ -209,7 +208,7 @@ namespace Opus.Code.Api } catch //We use this because when the network is reseted, an unknow error is thrown. We also don't want the app to crash at this state so it's ok to use a global catch. { - MainActivity.instance.UnknowError(null, Snackbar.LengthLong); + MainActivity.instance.UnknowError(ErrorCode.SP1, null, Snackbar.LengthLong); song.IsParsed = false; diff --git a/Opus/Code/Api/YoutubeManager.cs b/Opus/Code/Api/YoutubeManager.cs index 37f0aee..39db79c 100644 --- a/Opus/Code/Api/YoutubeManager.cs +++ b/Opus/Code/Api/YoutubeManager.cs @@ -266,10 +266,7 @@ namespace Opus.Api if (response.Items.Count > 0) return true; } - catch (System.Net.Http.HttpRequestException) - { - MainActivity.instance.Timout(); - } + catch (System.Net.Http.HttpRequestException) { } return false; } @@ -365,7 +362,7 @@ namespace Opus.Api if (ex is System.Net.Http.HttpRequestException) MainActivity.instance.Timout(); else - MainActivity.instance.UnknowError(); + MainActivity.instance.UnknowError(ErrorCode.SM1); return; } diff --git a/Opus/Code/MainActivity.cs b/Opus/Code/MainActivity.cs index 9868bad..b661b54 100644 --- a/Opus/Code/MainActivity.cs +++ b/Opus/Code/MainActivity.cs @@ -349,12 +349,11 @@ namespace Opus public void OnFocusChange(View v, bool hasFocus) { - if (hasFocus /*&& !SearchableActivity.IgnoreMyself*/) + if (hasFocus) { Bundle animation = ActivityOptionsCompat.MakeCustomAnimation(this, Android.Resource.Animation.FadeIn, Android.Resource.Animation.FadeOut).ToBundle(); StartActivity(new Intent(this, typeof(SearchableActivity)), animation); } - SearchableActivity.IgnoreMyself = false; } public void CancelSearch() //SearchableActivity is finishing and no search has been made @@ -544,15 +543,15 @@ namespace Opus #endregion #region Snackbars - public void YoutubeEndPointChanged() - { - FindViewById(Resource.Id.ytProgress).Visibility = ViewStates.Gone; - Snackbar snackBar = Snackbar.Make(FindViewById(Resource.Id.snackBar), Resource.String.youtube_endpoint, Snackbar.LengthLong); - snackBar.View.FindViewById(Resource.Id.snackbar_text).SetTextColor(Color.White); - snackBar.Show(); + //public void YoutubeEndPointChanged() + //{ + // FindViewById(Resource.Id.ytProgress).Visibility = ViewStates.Gone; + // Snackbar snackBar = Snackbar.Make(FindViewById(Resource.Id.snackBar), Resource.String.youtube_endpoint, Snackbar.LengthLong); + // snackBar.View.FindViewById(Resource.Id.snackbar_text).SetTextColor(Color.White); + // snackBar.Show(); - Player.instance.Ready(); - } + // Player.instance.Ready(); + //} public void Timout() { @@ -561,18 +560,18 @@ namespace Opus snackBar.Show(); } - public void UnknowError(Action action = null, int Length = Snackbar.LengthIndefinite) + public void UnknowError(ErrorCode code, Action action = null, int Length = Snackbar.LengthIndefinite) { - Snackbar snackBar = Snackbar.Make(FindViewById(Resource.Id.snackBar), Resource.String.unknow, Length); + Snackbar snackBar = Snackbar.Make(FindViewById(Resource.Id.snackBar), GetString(Resource.String.unknow) + " (" + code + ")", Length); if (action != null) snackBar.SetAction("Try Again", (sender) => { action.Invoke(); snackBar.Dismiss(); }); else - snackBar.SetAction("Dismiss", (sender) => { snackBar.Dismiss(); }); + snackBar.SetAction("Ok", (sender) => { snackBar.Dismiss(); }); snackBar.View.FindViewById(Resource.Id.snackbar_text).SetTextColor(Color.White); snackBar.Show(); } - public void Unplayable(string title, string msg) + public void Unplayable(ErrorCode code, string title, string msg) { if (msg.Contains("country")) { @@ -587,7 +586,7 @@ namespace Opus snackBar.Show(); } else - UnknowError(); + UnknowError(code); } public void NotStreamable(string title) @@ -1282,4 +1281,15 @@ namespace Opus } #endregion } + + /// + /// From where unknow errors are called. For debugging purpose on a deployed version. + /// + public enum ErrorCode + { + SP1, //Song parser 1 + SP2, //Song parser 2 + DL1, //Main downloader loop + SM1 //Song Mix 1 + } } \ No newline at end of file diff --git a/Opus/Code/UI/Fragments/PlaylistTracks.cs b/Opus/Code/UI/Fragments/PlaylistTracks.cs index 8ec5fe3..18989cb 100644 --- a/Opus/Code/UI/Fragments/PlaylistTracks.cs +++ b/Opus/Code/UI/Fragments/PlaylistTracks.cs @@ -332,10 +332,7 @@ namespace Opus.Fragments adapter.NotifyDataSetChanged(); } - catch (System.Net.Http.HttpRequestException) - { - MainActivity.instance.Timout(); - } + catch (System.Net.Http.HttpRequestException) { } } else if (adapter?.tracks.Count != 0) { diff --git a/Opus/Code/UI/Fragments/SearchableActivity.cs b/Opus/Code/UI/Fragments/SearchableActivity.cs index 0ab7487..5357677 100644 --- a/Opus/Code/UI/Fragments/SearchableActivity.cs +++ b/Opus/Code/UI/Fragments/SearchableActivity.cs @@ -23,7 +23,6 @@ namespace Opus.Fragments public class SearchableActivity : AppCompatActivity, IMenuItemOnActionExpandListener { public static SearchableActivity instance; - public static bool IgnoreMyself = false; public SearchView searchView; public string SearchQuery = null; private ListView ListView; diff --git a/Opus/Code/UI/Fragments/YoutubeSearch.cs b/Opus/Code/UI/Fragments/YoutubeSearch.cs index b722f04..1ecfe1a 100644 --- a/Opus/Code/UI/Fragments/YoutubeSearch.cs +++ b/Opus/Code/UI/Fragments/YoutubeSearch.cs @@ -169,14 +169,6 @@ namespace Opus.Fragments public async Task Search(string search, string querryType, bool loadingBar) { - //SearchableActivity.IgnoreMyself = true; - //IMenuItem searchItem = MainActivity.instance.menu.FindItem(Resource.Id.search); - //searchItem.ExpandActionView(); - //SearchView searchView = (SearchView)searchItem.ActionView; - //searchView.SetQuery(search, false); - //searchView.ClearFocus(); - //searchView.Focusable = false; - if (search == null || search == "") return; @@ -191,8 +183,6 @@ namespace Opus.Fragments LoadingView.Visibility = ViewStates.Visible; } - SearchableActivity.IgnoreMyself = false; - if (!await MainActivity.instance.WaitForYoutube()) { ListView.SetAdapter(null); @@ -305,7 +295,6 @@ namespace Opus.Fragments Console.WriteLine("&Exception catched in the youtube search: " + ex.Source + " - " + ex.Message); if(ex is System.Net.Http.HttpRequestException) { - MainActivity.instance.Timout(); EmptyView.Text = GetString(Resource.String.timout); EmptyView.Visibility = ViewStates.Visible; } @@ -347,7 +336,6 @@ namespace Opus.Fragments YoutubeManager.Play(result[position].song); break; case YtKind.Playlist: - SearchableActivity.IgnoreMyself = true; MainActivity.instance.menu.FindItem(Resource.Id.search).CollapseActionView(); MainActivity.instance.FindViewById(Resource.Id.tabs).Visibility = ViewStates.Gone; MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(result[position].playlist)).AddToBackStack("Playlist Track").Commit();