public SearchActionCreator(ITMDBService tmdbService, IAppStoreContainer storeContainer)
        {
            TMDBService = tmdbService;
            Store       = storeContainer.Store;

            LoadNextPageAction = Store.CreateAsyncActionVoid <string>(async(dispatcher, getState, query) =>
            {
                var state = getState().SearchState;

                if (state.TotalPages != 0 && state.LastLoadedPage == state.TotalPages && query == state.Query)
                {
                    return;
                }

                if (state.Query != query || string.IsNullOrEmpty(query))
                {
                    dispatcher(new ResetSearchResults
                    {
                        Query = query
                    });
                }

                dispatcher(new StartLoadingPage());

                state = getState().SearchState;

                var response = await TMDBService.Search(query, ++state.LastLoadedPage);

                if (response.IsSuccessful)
                {
                    dispatcher(new PageLoaded
                    {
                        Page       = response.Data.Page,
                        TotalPages = response.Data.TotalPages,
                        NewPage    = response.Data.Results
                    });

                    return;
                }

                dispatcher(new FailedToLoadPage
                {
                    Exception = response.ErrorException
                });
            });
        }