Esempio n. 1
0
        async Task sync()
        {
            //Only show the spinner if its the first run
            Spinner spinner = Settings.IsFirstRun ? new Spinner("Loading") : null;

            try {
                var songs = await api.GetSongs().ConfigureAwait(false);

                songs.ForEach(song => {
                    song.TitleNorm      = song.Title?.Trim().ToLower() ?? "Unknown Title";
                    song.IndexCharacter = song.TitleNorm.FirstOrDefault().ToString().ToUpper();
                });
                var artists = songs.Select(x => x.Artist).Distinct().Select(x => {
                    var artist = new Artist {
                        Name     = x,
                        NameNorm = x?.Trim().ToLower() ?? "Unknown Artist",
                    };
                    artist.IndexCharacter = artist.NameNorm.FirstOrDefault().ToString().ToUpper();
                    return(artist);
                });
                Database.Main.InsertOrReplaceAll(artists);
                Database.Main.InsertOrReplaceAll(songs);
                Database.Main.ClearMemory();
                Settings.IsFirstRun = false;
                NotificationManager.Shared.ProcSongDatabaseUpdated();
            } catch (Exception ex) {
                //TODO: Log this exceptions
                Console.WriteLine(ex);
            } finally {
                //Kill the spinenr if it exists
                spinner?.Dispose();
            }
        }