public static Task <Response <Answer> > QuestionAnswersWithDetail( this INetworkApi api, string questionIds, string site, string order = "desc", string sort = "votes", int page = 1, int pagesize = 10) => api.QuestionAnswers(questionIds, site, order, sort, page, pagesize, filter: Filters.AnswerDetail);
public SearchViewModel(IApplicationViewModel application = null, INetworkApi networkApi = null) : base(application) { this.NetworkApi = networkApi ?? Service <INetworkApi>() ?? Api <INetworkApi>(); LoadSites = ReactiveCommand.CreateFromTask(LoadSitesImpl); LoadAssociatedAccounts = ReactiveCommand.CreateFromTask(LoadAssociatedAccountsImpl); DisplayQuestion = ReactiveCommand.CreateFromTask <QuestionItemViewModel>(DisplayQuestionImpl); var canSearch = this.WhenAnyValue(vm => vm.Query).Select(q => !string.IsNullOrWhiteSpace(q)); Search = ReactiveCommand.CreateFromTask(SearchImpl, canSearch, outputScheduler: RxApp.MainThreadScheduler); suggestedQuestions = Search.ToProperty(this, vm => vm.SuggestedQuestions, initialValue: new ReactiveList <QuestionItemViewModel>()); SetQueryAndFocus = ReactiveCommand.CreateFromTask <string>(SetQueryAndFocusImpl); this.WhenActivated(d => { d(this.WhenAnyValue(vm => vm.Query) .Throttle(TimeSpan.FromMilliseconds(500), RxApp.TaskpoolScheduler) .Select(q => Unit.Default) .InvokeCommand(this, vm => vm.Search)); }); }
public static Task <Response <Question> > QuestionWithDetail( this INetworkApi api, string ids, string site) => api.Question(ids, site, filter: Filters.QuestionDetail);
public QuestionPageViewModel(int questionId, IApplicationViewModel application = null, INetworkApi networkApi = null) : base(application) { NetworkApi = networkApi ?? Api <INetworkApi>(); LoadAnswers = ReactiveCommand.CreateFromTask(LoadAnswersImpl, outputScheduler: RxApp.MainThreadScheduler); LoadQuestions = ReactiveCommand.CreateFromTask(LoadQuestionsImpl, outputScheduler: RxApp.MainThreadScheduler); Load = ReactiveCommand.CreateCombined(new[] { LoadQuestions, LoadAnswers }); Question = new QuestionDetailViewModel(questionId); }
public QuestionsViewModel(IApplicationViewModel application = null, ISearchViewModel search = null, INetworkApi networkApi = null) : base(application) { NetworkApi = networkApi ?? Api <INetworkApi>(); Search = Service(search); LoadQuestions = ReactiveCommand.CreateFromTask(LoadQuestionsImpl); Clear = ReactiveCommand.Create(() => { Questions.Clear(); }); Refresh = ReactiveCommand.CreateFromTask(async() => { await Clear.Execute(); await LoadQuestions.Execute(); }, canExecute: Clear.CanExecute.CombineLatest(LoadQuestions.CanExecute, (canClearExecute, canLoadExecute) => canClearExecute && canLoadExecute)); DisplayQuestion = ReactiveCommand.CreateFromTask(async(QuestionItemViewModel question) => { await Application.Navigate.Handle(new NavigationParams(typeof(QuestionPage), question.Question)); }); this.WhenActivated(d => { SelectedQuestion = null; d(Search.WhenAnyValue(s => s.SelectedSite) .Skip(1) .Select(svm => Unit.Default) .InvokeCommand(this, vm => vm.Refresh)); d(this.WhenAnyValue(s => s.SelectedQuestion) .Skip(1) .Where(question => question != null) .InvokeCommand(this, vm => vm.DisplayQuestion)); }); }