private async Task SaveMediaListItem(IMenuItem menuItem) { menuItem.SetEnabled(false); menuItem.SetActionView(new ProgressBar(Activity) { Indeterminate = true }); var editDto = new MediaListEditDto { MediaId = _media.Id, Status = AniListEnum.GetEnum <MediaListStatus>(_statusSpinner.SelectedItemPosition), Score = _scorePicker.GetValue(), Progress = (int?)_progressPicker.GetValue(), ProgressVolumes = _media.Type == MediaType.Manga ? (int?)_progressVolumesPicker.GetValue() : null, Repeat = (int?)_repeatPicker.GetValue(), Notes = _notesView.Text, Private = _isPrivate, Priority = _priority, CustomLists = _customLists.ToList(), HiddenFromStatusLists = _hideFromStatusLists, StartDate = new FuzzyDate(_startDateView.SelectedDate), FinishDate = new FuzzyDate(_finishDateView.SelectedDate), AdvancedScores = _advancedScores }; if ((_mediaListOptions.ScoreFormat == ScoreFormat.FiveStars || _mediaListOptions.ScoreFormat == ScoreFormat.ThreeSmileys) && !editDto.Score.HasValue) { editDto.Score = 0; } var transition = new Fade(Visibility.ModeOut); transition.SetDuration(300); ExitTransition = transition; await _presenter.SaveMediaListEntry(editDto, () => { menuItem.SetActionView(null); // TODO: there has to be a better way to do this (crashing on this line when minimizing app during save) try { Activity.SupportFragmentManager.PopBackStack(BackstackTag, (int)PopBackStackFlags.Inclusive); DismissAllowingStateLoss(); } catch { _pendingDismiss = true; } }, () => { Snackbar.Make(_coordLayout, "Error occurred while saving list entry", Snackbar.LengthShort) .Show(); menuItem.SetEnabled(true); menuItem.SetActionView(null); }); }
public Task <OneOf <Media.MediaList, IAniListError> > UpdateMediaListEntry(MediaListEditDto editDto, CancellationToken cToken) { var query = new GraphQLQuery { Query = QueryStore.UpdateMediaList, Variables = editDto }; return(GetResponseAsync <Media.MediaList>(query, cToken)); }
public async Task SaveMediaListEntry(MediaListEditDto editDto, Action onSuccess, Action onError) { var mediaUpdateResp = await AniListService.UpdateMediaListEntry(editDto, default); mediaUpdateResp.Switch(mediaList => { onSuccess(); View.DisplaySnackbarMessage("Saved", Snackbar.LengthShort); View.UpdateMediaListItem(mediaList); }).Switch(error => onError()); }
public async Task IncreaseMediaProgress(AniList.Models.MediaModels.MediaList mediaListToUpdate) { var editDto = new MediaListEditDto { MediaId = mediaListToUpdate.Media.Id, Progress = (mediaListToUpdate.Progress ?? 0) + 1 }; var mediaUpdateResp = await AniListService.UpdateMediaListEntry(editDto, default); mediaUpdateResp.Switch(mediaList => { View.DisplaySnackbarMessage($"Updated progress for {mediaList.Media.Title.UserPreferred}", Snackbar.LengthShort); View.UpdateMediaListItem(mediaList); }) .Switch(error => { View.DisplaySnackbarMessage("Error occurred while saving list entry", Snackbar.LengthLong); View.ResetMediaListItem(mediaListToUpdate.Media.Id); }); }
public async Task CompleteMedia(AniList.Models.MediaModels.MediaList mediaListToComplete) { var editDto = new MediaListEditDto { MediaId = mediaListToComplete.Media.Id, Progress = mediaListToComplete.Media.Episodes, Status = MediaListStatus.Completed }; var mediaUpdateResp = await AniListService.UpdateMediaListEntry(editDto, default); mediaUpdateResp.Switch(mediaList => { View.DisplaySnackbarMessage($"Completed {mediaList.Media.Title.UserPreferred}", Snackbar.LengthShort); View.UpdateMediaListItem(mediaList); }) .Switch(error => { View.DisplaySnackbarMessage("Error occurred while saving list entry", Snackbar.LengthLong); View.ResetMediaListItem(mediaListToComplete.Media.Id); }); }