Пример #1
0
            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);
                });
            }
Пример #2
0
        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));
        }
Пример #3
0
        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());
        }
Пример #4
0
        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);
            });
        }
Пример #5
0
        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);
            });
        }