private void OnFilterMenuSelectionChanged(AnimeStatus status)
 {
     ViewModel.CurrentStatus = (int)status;
     ViewModel.RefreshList();
     _filterMenu.Dismiss(true);
     _filterMenu = null;
 }
Example #2
0
 private void OnUpperFlyoutStatusChanged(AnimeStatus animeStatus)
 {
     ViewModelLocator.AnimeList.CurrentStatus = (int)animeStatus;
     ViewModelLocator.AnimeList.RefreshList();
     _upperFilterMenu.Dismiss(true);
     _upperFilterMenu = null;
 }
Example #3
0
        public void PromptForStatusChange(AnimeStatus to)
        {
            try
            {
                if (MyStatus == to)
                {
                    return;
                }
                if (!Settings.StatusPromptEnable)
                {
                    if (!Settings.StatusPromptProceedOnDisabled)
                    {
                        return;
                    }

                    ChangeStatus(to);
                    return;
                }
                ResourceLocator.MessageDialogProvider.ShowMessageDialogWithInput(
                    $"From : {Utils.Utilities.StatusToString((int)MyStatus, !ParentAbstraction.RepresentsAnime)}\nTo : {Utils.Utilities.StatusToString((int)to,!ParentAbstraction.RepresentsAnime)}",
                    "Would you like to change current status?", "Yes", "No", () => ChangeStatus(to));
            }
            catch (Exception)
            {
                //TODO access denied excpetion? we can try that
            }
        }
Example #4
0
        private async void ChangeStatus(AnimeStatus status)
        {
            LoadingUpdate = true;
            var myPrevStatus = MyStatus;

            MyStatus = status;
            var stat = status;

            if (Settings.SetStartDateOnWatching && stat == AnimeStatus.Watching &&
                (Settings.OverrideValidStartEndDate || ParentAbstraction.MyStartDate == AnimeItemViewModel.InvalidStartEndDate))
            {
                StartDate = DateTimeOffset.Now.ToString("yyyy-MM-dd");
            }
            else if (Settings.SetEndDateOnDropped && stat == AnimeStatus.Dropped &&
                     (Settings.OverrideValidStartEndDate || ParentAbstraction.MyEndDate == AnimeItemViewModel.InvalidStartEndDate))
            {
                EndDate = DateTimeOffset.Now.ToString("yyyy-MM-dd");
            }
            else if (Settings.SetEndDateOnCompleted && stat == AnimeStatus.Completed &&
                     (Settings.OverrideValidStartEndDate || ParentAbstraction.MyEndDate == AnimeItemViewModel.InvalidStartEndDate))
            {
                EndDate = DateTimeOffset.Now.ToString("yyyy-MM-dd");
            }

            //in case of series having one episode
            if (AllEpisodes == 1 && myPrevStatus == AnimeStatus.PlanToWatch && stat == AnimeStatus.Completed)
            {
                if (Settings.SetStartDateOnWatching && (Settings.OverrideValidStartEndDate || ParentAbstraction.MyStartDate == "0000-00-00"))
                {
                    StartDate = DateTimeOffset.Now.ToString("yyyy-MM-dd");
                }
            }

            if (IsRewatching)
            {
                if (AllEpisodes != 0 && MyStatus == AnimeStatus.Completed)
                {
                    MyEpisodes = AllEpisodes;
                }
                IsRewatching = false;
            }

            ViewModelLocator.AnimeDetails.UpdateAnimeReferenceUiBindings(Id);

            var response = await GetAppropriateUpdateQuery().GetRequestResponse();

            if (response != "Updated" && Settings.SelectedApiType == ApiType.Mal)
            {
                MyStatus = myPrevStatus;
            }

            if (MyStatus == AnimeStatus.Completed && _allEpisodes != 0)
            {
                PromptForWatchedEpsChange(_allEpisodes);
            }

            LoadingUpdate = false;
        }
Example #5
0
        public async Task GetTask(ShikimoriClient shikiClient, AnimeStatus status)
        {
            var bag = new ConcurrentBag <SpecialUserAnimeRate>();
            await shikiClient.GetAnimeFull(bag, status).ConfigureAwait(false);

            Trace.WriteLine("await shikiclient passed");
            AnimeList = bag.ToList();
            Trace.WriteLine("animeList passed");
        }
Example #6
0
        public static string ToName(this AnimeStatus status)
        {
            switch (status)
            {
            case AnimeStatus.CurrentlyAiring: return("Wychodzi");

            case AnimeStatus.FinishedAiring: return("Zakończone");

            case AnimeStatus.Proposal:
            case AnimeStatus.NotYetAired: return("Deklaracja");

            default: return("Niesprecyzowane");
            }
        }
Example #7
0
        public void PromptForStatusChange(AnimeStatus to)
        {
            try
            {
                if (MyStatus != AnimeStatus.Completed || !IsRewatching)
                {
                    if (MyStatus == to)
                    {
                        return;
                    }
                }
                if (!Settings.StatusPromptEnable)
                {
                    if (!Settings.StatusPromptProceedOnDisabled)
                    {
                        return;
                    }

                    ChangeStatus(to);
                    return;
                }
                ResourceLocator.MessageDialogProvider.ShowMessageDialogWithInput(
                    $"From : {Utils.Utilities.StatusToString((int)MyStatus, !ParentAbstraction.RepresentsAnime, IsRewatching)}\nTo : {Utils.Utilities.StatusToString((int)to,!ParentAbstraction.RepresentsAnime)}",
                    "Would you like to change current status?", "Yes", "No", async() =>
                {
                    if (to == AnimeStatus.Completed && IsRewatching)
                    {
                        IsRewatching = false;
                        if (AllEpisodes != 0)
                        {
                            MyEpisodes = AllEpisodes;
                        }
                        await GetAppropriateUpdateQuery().GetRequestResponse();
                        AdjustIncrementButtonsVisibility();
                        ViewModelLocator.AnimeDetails.UpdateAnimeReferenceUiBindings(Id);
                    }
                    else
                    {
                        ChangeStatus(to);
                    }
                });
            }
            catch (Exception)
            {
                //TODO access denied excpetion? we can try that
            }
        }
Example #8
0
        private static string AnimeStatusToHum(AnimeStatus status)
        {
            switch (status)
            {
            case AnimeStatus.Watching:
                return("currently-watching");

            case AnimeStatus.PlanToWatch:
                return("plan-to-watch");

            case AnimeStatus.Completed:
                return("completed");

            case AnimeStatus.OnHold:
                return("on-hold");

            case AnimeStatus.Dropped:
                return("dropped");

            default:
                throw new ArgumentOutOfRangeException(nameof(status), status, null);
            }
        }
 public AnimeListFilterFlyoutItem(AnimeStatus status) : base((int)status,TextColorBase)
 {
     Status = (int)status;
     Text = Utilities.StatusToString(Status);
 }
Example #10
0
 public static async Task <ConcurrentBag <SpecialUserAnimeRate> > GetTaskBag(ShikimoriClient shikiClient, AnimeStatus status)
 {
     Trace.WriteLine("await shikiclient passed");
     return(await shikiClient.GetAnimeFullReturn(status).ConfigureAwait(false));
 }
Example #11
0
 private static string AnimeStatusToHum(AnimeStatus status)
 {
     switch (status)
     {
         case AnimeStatus.Watching:
             return "currently-watching";
         case AnimeStatus.PlanToWatch:
             return "plan-to-watch";
         case AnimeStatus.Completed:
             return "completed";
         case AnimeStatus.OnHold:
             return "on-hold";
         case AnimeStatus.Dropped:
             return "dropped";
         default:
             throw new ArgumentOutOfRangeException(nameof(status), status, null);
     }
 }
 // Start is called before the first frame update
 void Awake()
 {
     animeStatus = new AnimeStatus();
     animeStatus = AnimeStatus.walkanddraw;
 }
        private async Task soloMethod(Update upd, TelegramBotClient client, ShikimoriClient shikiClient, AnimeStatus status)
        {
            var userId = upd.CallbackQuery.From.Id;
            var mesId  = upd.CallbackQuery.Message.MessageId;
            var chatId = upd.CallbackQuery.Message.Chat.Id;

            if (Bot.GetUserAnime(userId) is null)
            {
                await Task.Yield();

                var bag = await shikiClient.V2AnimeReturn(status).ConfigureAwait(false);

                await Task.Yield();

                Trace.WriteLine($"var bag {bag.Count} \n {Environment.StackTrace}");
                var lst = new UserAnimeList(bag.ToList(), DateTime.Now, userId);
                Trace.WriteLine($"lst {lst.UpdatedAt}");
                Bot.animeAccountsLists[userId] = new UserAnimeList(bag.ToList(), DateTime.Now, userId);
                Trace.WriteLine("dict");
            }
            var page   = Bot.GetAnimePage(userId);
            var keyb   = Bot.GetKeyboard(KeyboardTarget.AnimeItemsMenu) as AnimeEntriesListKeyboard;
            var markup = await keyb.GetKeyboard(page, MovePage.Current).ConfigureAwait(false);

            Trace.WriteLine("markup");
            await client.EditMessageTextAsync(chatId, mesId, "Anime", replyMarkup : markup).ConfigureAwait(false);

            Trace.WriteLine("edit mes");
        }
Example #14
0
        /// <summary>
        ///     Main refresh function
        /// </summary>
        /// <param name="searchSource">
        ///     If it's from search -> check if there's anuthing to update before refreshing.
        /// </param>
        /// <param name="fakeDelay">
        ///     To make app more responsive micro delays are good to trigger spinners and such.
        /// </param>
        /// <returns></returns>
        public async void RefreshList(bool searchSource = false, bool fakeDelay = false)
        {
            //await Task.Run(() =>
            //{
            var query = ViewModelLocator.GeneralMain.CurrentSearchQuery;

            var queryCondition = !string.IsNullOrWhiteSpace(query) && query.Length > 1;
            if (!_wasPreviousQuery && searchSource && !queryCondition)
                // refresh was requested from search but there's nothing to update
            {
                return;
            }
            if (!queryCondition)
            {
                _prevQuery = null;
                _invalidatePreviousSearchResults = false;
            }

            if(queryCondition && !_wasPreviousQuery)
                SetDesiredStatus((int)AnimeStatus.AllOrAiring);
            else if(!queryCondition && _wasPreviousQuery)
                SetDesiredStatus((int)_prevAnimeStatus);

            _wasPreviousQuery = queryCondition;


            var status = GetDesiredStatus();

            IEnumerable<AnimeItemAbstraction> items;
            if (queryCondition && !_invalidatePreviousSearchResults &&
                _wasPreviousQuery &&
                !string.IsNullOrEmpty(_prevQuery) &&
                query.Length > _prevQuery.Length &&
                query.Substring(0, _prevQuery.Length-1) == _prevQuery) //use previous results if query is more detailed
                items = _animeItemsSet.Union(AnimeItems.Select(model => model.ParentAbstraction));
            else
                switch (WorkMode)
                {
                    case AnimeListWorkModes.Anime:
                        items = AllLoadedAnimeItemAbstractions;
                        break;
                    case AnimeListWorkModes.SeasonalAnime:
                    case AnimeListWorkModes.TopAnime:
                    case AnimeListWorkModes.AnimeByGenre:
                    case AnimeListWorkModes.AnimeByStudio:
                        items = _allLoadedSeasonalAnimeItems;
                        break;
                    case AnimeListWorkModes.Manga:
                        items = AllLoadedMangaItemAbstractions;
                        break;
                    case AnimeListWorkModes.TopManga:
                        items = _allLoadedSeasonalMangaItems;
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
            if(queryCondition)
                _prevQuery = query;
            _animeItemsSet.Clear();

            items = items.Where(item => status == AnimeStatus.AllOrAiring || item.MyStatus == status || (item.IsRewatching && status == AnimeStatus.Watching));

            if(!queryCondition)
                _prevAnimeStatus = status;

            if (queryCondition)
            {
                query = query.ToLower();
                bool alreadyFiltered = false;
                if (MainViewModelBase.AnimeMediaTypeHints.Contains(query))
                {
                    var type = 0;
                    if (query == "tv")
                        type = (int)AnimeType.TV;
                    else if (query == "movie")
                        type = (int)AnimeType.Movie;
                    else if (query == "special")
                        type = (int)AnimeType.Special;
                    else if (query == "ova")
                        type = (int)AnimeType.OVA;
                    items = items.Where(item => item.Type == type);
                    alreadyFiltered = true;
                }
                else if (MainViewModelBase.MangaMediaTypeHints.Contains(query))
                {
                    var type = 0;
                    if (query == "manga")
                        type = (int)MangaType.Manga;
                    else if (query == "novel")
                        type = (int)MangaType.Novel;
                    items = items.Where(item => item.Type == type);
                    alreadyFiltered = true;
                }

                _invalidatePreviousSearchResults = alreadyFiltered; //mangaa will not yield anything more manga
                if (!alreadyFiltered)
                {
                    if (ViewModelLocator.GeneralMain.SearchHints.Count > 0) //if there are any tags to begin with
                        items = items.Where(item => item.Title.ToLower().Contains(query) || item.Tags.Contains(query));
                    else
                        items = items.Where(item => item.Title.ToLower().Contains(query));
                }

            }            
            if (WorkMode == AnimeListWorkModes.TopAnime || WorkMode == AnimeListWorkModes.TopManga)
                items = items.OrderBy(item => item.Index);
            else
                switch (SortOption)
                {
                    case SortOptions.SortTitle:
                        items = items.OrderBy(item => item.Title);
                        break;
                    case SortOptions.SortScore:
                        if (WorkMode != AnimeListWorkModes.SeasonalAnime)
                            items = items.OrderBy(item => item.MyScore).ThenByDescending(item => item.Title);
                        else
                            items = items.OrderBy(item => item.GlobalScore);
                        break;
                    case SortOptions.SortWatched:
                        if (WorkMode == AnimeListWorkModes.SeasonalAnime)
                            items = items.OrderBy(item => item.Index);
                        else
                            items = items.OrderBy(item => item.MyEpisodes);
                        break;
                    case SortOptions.SortLastWatched:
                        items = items.OrderBy(abstraction => abstraction.LastWatched);
                        break;
                    case SortOptions.SortNothing:
                        break;
                    case SortOptions.SortAirDay:
                        var today = (int) DateTime.Now.DayOfWeek;
                        today++;
                        var nonAiringItems = items.Where(abstraction => abstraction.AirDay == -1);
                        var airingItems = items.Where(abstraction => abstraction.AirDay != -1);
                        var airingAfterToday = airingItems.Where(abstraction => abstraction.AirDay >= today);
                        var airingBeforeToday = airingItems.Where(abstraction => abstraction.AirDay < today);
                        if (SortDescending)
                            items =
                                airingAfterToday.OrderByDescending(abstraction => today - abstraction.AirDay)
                                    .Concat(
                                        airingBeforeToday.OrderByDescending(
                                                abstraction => today - abstraction.AirDay)
                                            .Concat(nonAiringItems));
                        else
                            items =
                                airingBeforeToday.OrderBy(abstraction => today - abstraction.AirDay)
                                    .Concat(
                                        airingAfterToday.OrderBy(abstraction => today - abstraction.AirDay)
                                            .Concat(nonAiringItems));

                        break;
                    case SortOptions.SortStartDate:
                        items = items.OrderBy(abstraction => abstraction.MyStartDate);
                        break;
                    case SortOptions.SortEndDate:
                        items = items.OrderBy(abstraction => abstraction.MyEndDate);
                        break;
                    case SortOptions.SortSeason:
                        var itemsWithStartDate = new List<AnimeItemAbstraction>();
                        var itemsWithoutStartDate = new List<AnimeItemAbstraction>();
                        foreach (var item in items)
                        {
                            if (string.IsNullOrEmpty(item.AirStartDate))
                            {
                                itemsWithoutStartDate.Add(item);
                            }
                            else
                            {
                                itemsWithStartDate.Add(item);
                            }
                        }
                        if (SortDescending)
                        {
                            itemsWithStartDate =
                                itemsWithStartDate.OrderByDescending(
                                        item => int.Parse(item.AirStartDate.Substring(0, 4)))
                                    .ThenByDescending(item => Utilities.DateToSeason(item.AirStartDate))
                                    .ThenBy(item => item.Title)
                                    .ToList();
                            items = itemsWithStartDate.Concat(itemsWithoutStartDate.OrderBy(item => item.Title));
                        }
                        else
                        {
                            itemsWithStartDate =
                                itemsWithStartDate.OrderBy(
                                        item => int.Parse(item.AirStartDate.Substring(0, 4)))
                                    .ThenBy(item => Utilities.DateToSeason(item.AirStartDate))
                                    .ThenBy(item => item.Title)
                                    .ToList();
                            items = itemsWithStartDate.Concat(itemsWithoutStartDate.OrderBy(item => item.Title));
                        }
                        break;
                    default:
                        throw new ArgumentOutOfRangeException(nameof(SortOption), SortOption, null);
                }
            //If we are descending then reverse order
            if (SortDescending && SortOption != SortOptions.SortAirDay && SortOption != SortOptions.SortSeason)
                items = items.Reverse();
            //Add all abstractions to current set (spread across pages)
            _animeItemsSet.AddRange(items);
            //});
            //If we have items then we should hide EmptyNotice       
            EmptyNoticeVisibility = _animeItemsSet.Count == 0;

            //How many pages do we have?
            if (fakeDelay)
                await Task.Delay(10);
            UpdatePageSetup();
            UpdateUpperStatus();
        }
 public AnimeListFilterFlyoutItem(AnimeStatus status) : base((int)status, TextColorBase)
 {
     Status = (int)status;
     Text   = XShared.Utils.Utilities.StatusToString(Status);
 }
        public void TestStatus(AnimeStatus value)
        {
            _sut.AnimeStatus = value;

            Assert.Equal(value, _sut.AnimeStatus);
        }
Example #17
0
        public void PromptForStatusChange(AnimeStatus to)
        {
            try
            {
                if (MyStatus == to)
                    return;
                if (!Settings.StatusPromptEnable)
                {
                    if(!Settings.StatusPromptProceedOnDisabled)
                        return;

                    ChangeStatus(to);
                    return;
                }
                ResourceLocator.MessageDialogProvider.ShowMessageDialogWithInput(
                        $"From : {Utilities.StatusToString((int)MyStatus, !ParentAbstraction.RepresentsAnime)}\nTo : {Utilities.StatusToString((int)to,!ParentAbstraction.RepresentsAnime)}",
                        "Would you like to change current status?","Yes","No",() => ChangeStatus(to));
            }
            catch (Exception)
            {
                //TODO access denied excpetion? we can try that 
            }

        }
Example #18
0
        private async void ChangeStatus(AnimeStatus status)
        {
            LoadingUpdate = true;
            var myPrevStatus = MyStatus;
            MyStatus = status;
            var stat =  status;
            if (Settings.SetStartDateOnWatching && stat == AnimeStatus.Watching &&
                (Settings.OverrideValidStartEndDate || ParentAbstraction.MyStartDate == AnimeItemViewModel.InvalidStartEndDate))
                StartDate = DateTimeOffset.Now.ToString("yyyy-MM-dd");
            else if (Settings.SetEndDateOnDropped && stat == AnimeStatus.Dropped &&
                     (Settings.OverrideValidStartEndDate || ParentAbstraction.MyEndDate == AnimeItemViewModel.InvalidStartEndDate))
                EndDate = DateTimeOffset.Now.ToString("yyyy-MM-dd");
            else if (Settings.SetEndDateOnCompleted &&  stat == AnimeStatus.Completed &&
                     (Settings.OverrideValidStartEndDate || ParentAbstraction.MyEndDate == AnimeItemViewModel.InvalidStartEndDate))
                EndDate = DateTimeOffset.Now.ToString("yyyy-MM-dd");

            //in case of series having one episode
            if(AllEpisodes == 1 && myPrevStatus == AnimeStatus.PlanToWatch && stat == AnimeStatus.Completed)
                if(Settings.SetStartDateOnWatching && (Settings.OverrideValidStartEndDate || ParentAbstraction.MyStartDate == "0000-00-00"))
                    StartDate = DateTimeOffset.Now.ToString("yyyy-MM-dd");

            if (IsRewatching)
            {
                if (AllEpisodes != 0 && MyStatus == AnimeStatus.Completed)
                    MyEpisodes = AllEpisodes;
                IsRewatching = false;
            }

            ViewModelLocator.AnimeDetails.UpdateAnimeReferenceUiBindings(Id);

            var response = await GetAppropriateUpdateQuery().GetRequestResponse();
            if (response != "Updated" && Settings.SelectedApiType == ApiType.Mal)
                MyStatus = myPrevStatus;

            if (MyStatus == AnimeStatus.Completed && _allEpisodes != 0)
                 PromptForWatchedEpsChange(_allEpisodes);

            LoadingUpdate = false;
        }
        private async void ChangeStatus(AnimeStatus status)
        {
            LoadingUpdate = true;
            var prevStatus = MyStatus;
            MyStatus = status;

            if (Settings.SetStartDateOnWatching && MyStatus == AnimeStatus.Watching &&
                (Settings.OverrideValidStartEndDate || !StartDateValid))
            {
                _startDateTimeOffset = DateTimeOffset.Now;
                _animeItemReference.StartDate = DateTimeOffset.Now.ToString("yyyy-MM-dd");
                StartDateValid = true;
                RaisePropertyChanged(() => StartDateTimeOffset);
                RaisePropertyChanged(() => MyStartDate);
            }
            else if (Settings.SetEndDateOnDropped && MyStatus == AnimeStatus.Dropped &&
                     (Settings.OverrideValidStartEndDate || !EndDateValid))
            {
                _endDateTimeOffset = DateTimeOffset.Now;
                _animeItemReference.EndDate = DateTimeOffset.Now.ToString("yyyy-MM-dd");
                EndDateValid = true;
                RaisePropertyChanged(() => EndDateTimeOffset);
                RaisePropertyChanged(() => MyEndDate);
            }
            else if (Settings.SetEndDateOnCompleted && MyStatus == AnimeStatus.Completed &&
                     (Settings.OverrideValidStartEndDate || !EndDateValid))
            {
                if (prevStatus == AnimeStatus.PlanToWatch) //we have just insta completed the series
                {
                    _startDateTimeOffset = DateTimeOffset.Now;
                    _animeItemReference.StartDate = DateTimeOffset.Now.ToString("yyyy-MM-dd");
                    StartDateValid = true;
                    RaisePropertyChanged(() => StartDateTimeOffset);
                    RaisePropertyChanged(() => MyStartDate);
                }
                _endDateTimeOffset = DateTimeOffset.Now;
                _animeItemReference.EndDate = DateTimeOffset.Now.ToString("yyyy-MM-dd");
                EndDateValid = true;
                RaisePropertyChanged(() => EndDateTimeOffset);
                RaisePropertyChanged(() => MyEndDate);
            }

            //in case of series having one episode
            if (AllEpisodes == 1 && prevStatus == AnimeStatus.PlanToWatch && MyStatus == AnimeStatus.Completed)
                if (Settings.SetStartDateOnWatching &&
                    (Settings.OverrideValidStartEndDate || _animeItemReference.StartDate == "0000-00-00"))
                {
                    _startDateTimeOffset = DateTimeOffset.Now;
                    _animeItemReference.StartDate = DateTimeOffset.Now.ToString("yyyy-MM-dd");
                    StartDateValid = true;
                    RaisePropertyChanged(() => StartDateTimeOffset);
                    RaisePropertyChanged(() => MyStartDate);
                }

            if (_animeItemReference.IsRewatching)
            {
                if (_animeItemReference.AllEpisodes != 0)
                    MyEpisodes = _animeItemReference.AllEpisodes;
                _animeItemReference.IsRewatching = false;
                RaisePropertyChanged(() => IsRewatching);
                RaisePropertyChanged(() => MyStatusBind);
            }

            if (_animeItemReference.IsRewatching)
            {
                if (_animeItemReference.MyStatus == AnimeStatus.Completed && _animeItemReference.AllEpisodes != 0)
                    _animeItemReference.MyEpisodes = _animeItemReference.AllEpisodes;
            }

            var response = await GetAppropriateUpdateQuery().GetRequestResponse();
            if (response != "Updated" && Settings.SelectedApiType == ApiType.Mal)
                MyStatus = prevStatus;

            if (_animeItemReference is AnimeItemViewModel)
                if (MyStatus == AnimeStatus.Completed && MyEpisodes != AllEpisodes && AllEpisodes != 0)
                {
                    ((AnimeItemViewModel) _animeItemReference).PromptForWatchedEpsChange(AllEpisodes);
                    RaisePropertyChanged(() => MyEpisodesBind);
                }
            LoadingUpdate = false;
        }
Example #20
0
 public async Task GetAnimeFull(ConcurrentBag <SpecialUserAnimeRate> outContainer, AnimeStatus status = AnimeStatus.None)
 {
     await GetAnime(outContainer, status).ConfigureAwait(false);
     await GetInfoForList(outContainer).ConfigureAwait(false);
 }
Example #21
0
 public async Task GetAnime(ConcurrentBag <SpecialUserAnimeRate> outContainer, AnimeStatus status = AnimeStatus.None)
 {
     try
     {
         await UserAnimeRequest.GetSpecialAnime(this.CurrentUser, this.AuthToken, outContainer, status).ConfigureAwait(false);
     }
     catch (TokenExpiredException e)
     {
         RefreshTokenEvent?.Invoke(this.AuthToken);
         ErrorTextEvent?.Invoke(e.Message);
         return;
     }
     catch (Exception e)
     {
         ErrorTextEvent?.Invoke(e.Message);
         return;
     }
 }
        public static DroppyMenuPopup BuildForAnimeStatusSelection(Context context, View parent,
                                                                   Action <AnimeStatus> callback, AnimeStatus currentStatus, bool manga)
        {
            ParamRelativeLayout = new ViewGroup.LayoutParams(DimensionsHelper.DpToPx(150), DimensionsHelper.DpToPx(38));

            var droppyBuilder = new DroppyMenuPopup.Builder(context, parent);

            InjectAnimation(droppyBuilder);

            var listener = new Action <int>(i => callback.Invoke((AnimeStatus)i));

            foreach (AnimeStatus value in Enum.GetValues(typeof(AnimeStatus)))
            {
                if (value == currentStatus)
                {
                    droppyBuilder.AddMenuItem(
                        new DroppyMenuCustomItem(BuildItem(context, Utilities.StatusToString((int)value, manga), listener, (int)value,
                                                           ResourceExtension.BrushSelectedDialogItem, ResourceExtension.AccentColour)));
                }
                else //highlighted
                {
                    droppyBuilder.AddMenuItem(
                        new DroppyMenuCustomItem(BuildItem(context, Utilities.StatusToString((int)value, manga), listener, (int)value)));
                }
            }
            droppyBuilder.SetYOffset(DimensionsHelper.DpToPx(30));
            return(droppyBuilder.Build());
        }
Example #23
0
 public AnimeBuilder WithAnimeStatus(AnimeStatus animeStatus)
 {
     _animeStatus = animeStatus;
     return(this);
 }
 public AnimeSearchManager SetStatus(AnimeStatus status)
 {
     m_status = status;
     return(this);
 }
Example #25
0
 private void SetDisplayMode(AnimeStatus val)
 {
     if (_manuallySelectedViewMode == null)
     {
         switch (val)
         {
             case AnimeStatus.Watching:
                 DisplayMode = Settings.WatchingDisplayMode;
                 break;
             case AnimeStatus.Completed:
                 DisplayMode = Settings.CompletedDisplayMode;
                 break;
             case AnimeStatus.OnHold:
                 DisplayMode = Settings.OnHoldDisplayMode;
                 break;
             case AnimeStatus.Dropped:
                 DisplayMode = Settings.DroppedDisplayMode;
                 break;
             case AnimeStatus.PlanToWatch:
                 DisplayMode = Settings.PlannedDisplayMode;
                 break;
             case AnimeStatus.AllOrAiring:
                 DisplayMode = Settings.AllDisplayMode;
                 break;
             default:
                 throw new ArgumentOutOfRangeException(nameof(val), val, null);
         }
         RaisePropertyChanged(() => DisplayMode);
     }
 }
		public void TestStatus(AnimeStatus value)
		{
			_sut.AnimeStatus = value;

			Assert.Equal(value, _sut.AnimeStatus);
		}
 private void OnFilterMenuSelectionChanged(AnimeStatus status)
 {
     ViewModel.CurrentStatus = (int)status;
     ViewModel.RefreshList();
     _filterMenu.Dismiss(true);
     _filterMenu = null;
 }
        internal static async Task GetSpecialAnime(User user, Token token, ConcurrentBag <SpecialUserAnimeRate> outContainer, AnimeStatus status = AnimeStatus.None)
        {
            using (HttpClient client = ClientWithHeaders(token.AccessToken))
            {
                string url;
                if (!URI.ShikiUrls.TryGetValue(Link.AnimeListV2, out url))
                {
                    throw new NoUriDictionaryException();
                }
                url = (status == AnimeStatus.None) ? string.Format(url, user.Id) : string.Concat(string.Format(url, user.Id), "&status=", AnimeParams.AnimeStatusString[status]);
                var response = await client.GetAsync(url).ConfigureAwait(false);

                if (response.IsSuccessStatusCode)
                {
                    var str = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

                    var array = JsonConvert.DeserializeObject <List <SpecialUserAnimeRate> >(str);
                    outContainer.AddRange(array);
                }
                else if (response.StatusCode == HttpStatusCode.Unauthorized)
                {
                    throw new TokenExpiredException();
                }
                else
                {
                    throw new FailedRequestException();
                }
            }
        }
Example #29
0
 internal static GenericStatus ToGeneric(this AnimeStatus @this) => (GenericStatus)@this;