コード例 #1
0
        public void ImportUserData()
        {
            var json = _clipboardService.GetTextFromClipboard();

            if (string.IsNullOrWhiteSpace(json))
            {
                _okDialog.Show("Zwischenablage ist leer", "Bitte kopiere zunächst deine exportieren Benutzerdaten.");
                return;
            }

            List <AudioDramaUserData> newUserData;

            try
            {
                newUserData = JsonConvert.DeserializeObject <List <AudioDramaUserData> >(json);
            }
            catch (JsonException)
            {
                _okDialog.Show("Zwischenablage fehlerhaft", "Der Text in der Zwischenablage ist nicht valide. " +
                               "Bitte überprüfe, ob du alles richtig kopiert hast.");
                return;
            }

            if (newUserData.GroupBy(x => x.Id).Any(x => x.Count() > 1))
            {
                _okDialog.Show("Zwischenablage fehlerhaft", "Der Text in der Zwischenablage enthält Duplikate. " +
                               "Bitte überprüfe, ob du alles richtig kopiert hast.");
            }

            var oldUserData = _userDataCache.Load();

            _mergedUserDataForImporting = new List <AudioDramaUserData>();

            foreach (var old in oldUserData)
            {
                if (newUserData.All(x => x.Id != old.Id))
                {
                    _mergedUserDataForImporting.Add(old);
                }
            }

            _mergedUserDataForImporting.AddRange(newUserData);

            _yesNoDialog.YesClicked += ImportDataFromClipboard();

            _yesNoDialog.Show(
                "Daten aus Zwischenablage importieren?",
                $"Datensätze: {newUserData.Count}\n" +
                $"Als gehört markiert: {newUserData.Count(x => x.Heard)}\n" +
                $"Als Favorit markiert: {newUserData.Count(x => x.IsFavorite)}");
        }