private async void OkButtonClick(object sender, RoutedEventArgs e) { string deckName = Utils.GetValidName(deckNameTextBox.Text); string noteName = Utils.GetValidName(noteTypeNameTextBox.Text); bool isValid = await CheckDeckAndNoteName(deckName, noteName); if (!isValid) { return; } isOkPress = true; isError = false; addDeckFlyout.Hide(); long?deckId = collection.Deck.AddOrResuedDeck(deckName, true); if (deckId == null) { await UIHelper.ShowMessageDialog("Unexpected error!"); return; } long modelCopyFromID = modelView.GetSelectedModelId(); ProgressDialog dialog = new ProgressDialog(); dialog.ProgressBarLabel = ""; dialog.ShowInDeterminateStateNoStopAsync("Add new deck"); var task = Task.Run(async() => { var deckJson = collection.Deck.Get(deckId); JsonObject model; if (!String.IsNullOrWhiteSpace(noteName)) { var modelCloneFrom = collection.Models.Get(modelCopyFromID); model = collection.Models.Copy(modelCloneFrom); model["name"] = JsonValue.CreateStringValue(noteName); } else { model = collection.Models.Get(modelCopyFromID); } deckJson["mid"] = model["id"]; model["did"] = JsonValue.CreateNumberValue((long)deckId); collection.Models.Save(model); collection.Deck.Save(deckJson); collection.SaveAndCommit(); await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { dialog.Hide(); NewDeckCreatedEvent?.Invoke((long)deckId); }); }); }
private async void NewDeckCreatedEventHandler(long deckId) { await mainPage.CurrentDispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { deckListViewModel.AddNewDeck(deckId); var deckInfor = deckListViewModel.GetDeck(deckId); deckListViewModel.ResortNonSubdeck(deckInfor); NewDeckCreatedEvent?.Invoke(deckId); }); }