public SearchResultLivePageViewModel( ILoggerFactory loggerFactory, ApplicationLayoutManager applicationLayoutManager, NiconicoSession niconicoSession, SearchProvider searchProvider, PageManager pageManager, SearchHistoryRepository searchHistoryRepository, NicoLiveCacheRepository nicoLiveCacheRepository, OpenLiveContentCommand openLiveContentCommand ) : base(loggerFactory.CreateLogger <SearchResultLivePageViewModel>()) { ApplicationLayoutManager = applicationLayoutManager; NiconicoSession = niconicoSession; SearchProvider = searchProvider; PageManager = pageManager; _searchHistoryRepository = searchHistoryRepository; _nicoLiveCacheRepository = nicoLiveCacheRepository; OpenLiveContentCommand = openLiveContentCommand; SelectedSearchSort = new ReactiveProperty <LiveSearchPageSortOrder>(SortOptionItems[0], mode: ReactivePropertyMode.DistinctUntilChanged); SelectedLiveStatus = new ReactiveProperty <LiveStatus>(LiveStatusItems[0], mode: ReactivePropertyMode.DistinctUntilChanged); SelectedProviders = new ObservableCollection <ProviderType>(); IsTagSearch = new ReactiveProperty <bool>(false); IsTimeshiftAvairable = new ReactiveProperty <bool>(false); IsHideMemberOnly = new ReactiveProperty <bool>(false); IsDisableGrouping = new ReactiveProperty <bool>(false); Observable.Merge( SelectedSearchSort.ToUnit(), SelectedLiveStatus.ToUnit(), SelectedProviders.CollectionChangedAsObservable().ToUnit() ) .Subscribe(async _ => { if (_NowNavigatingTo) { return; } if (_query is not null) { if (_query.Keyword == Keyword && _query.SortOrder == SelectedSearchSort.Value && _query.LiveStatus == SelectedLiveStatus.Value && (_query.ProviderTypes?.Any() ?? false) && SelectedProviders.Count == _query.ProviderTypes.Length && SelectedProviders.All(x => _query.ProviderTypes.Contains(x)) ) { return; } } ResetList(); }) .AddTo(_CompositeDisposable); }
public LiveSearchSource( LiveSearchOptionsQuery query, TimeshiftReservationsDetailResponse reservation, SearchProvider searchProvider, NiconicoSession niconicoSession, NicoLiveCacheRepository nicoLiveCacheRepository ) { Query = query; _reservation = reservation; SearchProvider = searchProvider; NiconicoSession = niconicoSession; _nicoLiveCacheRepository = nicoLiveCacheRepository; }