public PriceViewModel( ILogger logger, IDebouncer debouncer, ITradeSearchService tradeSearchService, IPoeNinjaCache poeNinjaCache, IStaticDataService staticDataService, ILanguageProvider languageProvider, IPoePriceInfoClient poePriceInfoClient, INativeClipboard nativeClipboard, IParserService parserService, SidekickSettings settings, IStatDataService statDataService, IItemCategoryService itemCategoryService) { this.logger = logger; this.debouncer = debouncer; this.tradeSearchService = tradeSearchService; this.poeNinjaCache = poeNinjaCache; this.staticDataService = staticDataService; this.languageProvider = languageProvider; this.poePriceInfoClient = poePriceInfoClient; this.nativeClipboard = nativeClipboard; this.parserService = parserService; this.settings = settings; this.statDataService = statDataService; this.itemCategoryService = itemCategoryService; Task.Run(Initialize); PropertyChanged += PriceViewModel_PropertyChanged; }
public BaseView(string id, IServiceProvider serviceProvider, bool closeOnBlur = false, bool closeOnKey = false) { keybindEvents = serviceProvider.GetService <IKeybindEvents>(); settings = serviceProvider.GetService <SidekickSettings>(); windowService = serviceProvider.GetService <IWindowService>(); logger = serviceProvider.GetService <ILogger>(); debouncer = serviceProvider.GetService <IDebouncer>(); IsVisibleChanged += EnsureBounds; Loaded += EnsureBounds; Loaded += BaseWindow_Loaded; SizeChanged += EnsureBounds; if (closeOnBlur && settings.CloseOverlayWithMouse) { Deactivated += BaseBorderlessWindow_Deactivated; } if (closeOnKey) { keybindEvents.OnCloseWindow += KeybindEvents_OnCloseWindow; } this.closeOnBlur = closeOnBlur; this.closeOnKey = closeOnKey; this.id = id; }
public ViewLocator(IViewPreferenceRepository viewPreferenceRepository, IDebouncer debouncer, ILogger <ViewLocator> logger, ISidekickSettings settings, ElectronCookieProtection electronCookieProtection, IHostEnvironment hostEnvironment) { this.viewPreferenceRepository = viewPreferenceRepository; this.debouncer = debouncer; this.logger = logger; this.settings = settings; this.electronCookieProtection = electronCookieProtection; this.hostEnvironment = hostEnvironment; ElectronNET.API.Electron.IpcMain.OnSync("close", (viewName) => { logger.LogError("Force closing the Blazor view {viewName}", viewName); if (Enum.TryParse(viewName as string, true, out View view)) { Close(view); } else { CloseAll(); } return(null); }); }
public async Task given_data_is_non_debouncable_then_Handle_relays_directly( Message message, [Frozen] IDebouncer debouncer, [Frozen] IMessageHandler handler, DebouncingMessageHandler sut) { // Act await sut.Handle(message); // Assert Mock.Get(handler).Verify(x => x.Handle(message), Times.Once()); Expression <Func <IDebouncer, Task <bool> > > callTryConsume = x => x.TryConsume( It.IsAny <IDebouncable>(), It.IsAny <Func <IDebouncable, Task> >()); Mock.Get(debouncer).Verify(callTryConsume, Times.Never()); }
public PriceViewModel( ILogger <PriceViewModel> logger, IDebouncer debouncer, ITradeSearchService tradeSearchService, IItemStaticDataProvider itemStaticDataProvider, IGameLanguageProvider gameLanguageProvider, ISidekickSettings settings, IItemCategoryRepository itemCategoryRepository, IMediator mediator) { this.logger = logger; this.debouncer = debouncer; this.tradeSearchService = tradeSearchService; this.itemStaticDataProvider = itemStaticDataProvider; this.gameLanguageProvider = gameLanguageProvider; this.settings = settings; this.itemCategoryRepository = itemCategoryRepository; this.mediator = mediator; PropertyChanged += PriceViewModel_PropertyChanged; }
public DebouncingMessageHandler( IDebouncer debouncer, IMessageHandler handler) { _debouncer = debouncer; _handler = handler; }
public QueuedLoggerWrapper(FormattedLoggerBase logger, IDebouncer debouncer) { _logger = logger; _debouncer = debouncer; }
public FilterDialogViewModel( Func <Task <IEnumerable <IHierarchyNode> > > hierarchyFactory, Func <TimeSpan, IDebouncer> debouncerFactory, TextFilterFactory textFilterFactory, JoinableTaskFactory joinableTaskFactory ) { if (debouncerFactory is null) { throw new ArgumentNullException(nameof(debouncerFactory)); } _hierarchyFactory = hierarchyFactory ?? throw new ArgumentNullException(nameof(hierarchyFactory)); _textFilterFactory = textFilterFactory ?? throw new ArgumentNullException(nameof(textFilterFactory)); _items = new HierarchyTreeViewItemCollection(Enumerable.Empty <HierarchyTreeViewItem>()); _searchText = ""; _loadingVisibility = Visibility.Visible; _loadedVisibility = Visibility.Collapsed; FocusSearchBoxSource = new FocusSource(); ToggleLoadProjectDependenciesCommand = new DelegateCommand( (_) => LoadProjectDependencies = !LoadProjectDependencies, CanAlwaysExecute, joinableTaskFactory ); CollapseAllCommand = new DelegateCommand <HierarchyTreeViewItem>( CollapseAll, CanAlwaysExecute, joinableTaskFactory ); ExpandAllCommand = new DelegateCommand <HierarchyTreeViewItem>( ExpandAll, CanAlwaysExecute, joinableTaskFactory ); CheckAllCommand = new DelegateCommand( (_) => SetAllChecked(true), CanAlwaysExecute, joinableTaskFactory ); UncheckAllCommand = new DelegateCommand( (_) => SetAllChecked(false), CanAlwaysExecute, joinableTaskFactory ); ToggleRegularExpressionModeCommand = new DelegateCommand( (_) => UseRegularExpressions = !UseRegularExpressions, CanAlwaysExecute, joinableTaskFactory ); FocusSearchBoxCommand = new DelegateCommand( (_) => FocusSearchBoxSource.RequestFocus(), CanAlwaysExecute, joinableTaskFactory ); AcceptCommand = new DelegateCommand( (_) => AcceptSelection(), CanAlwaysExecute, joinableTaskFactory ); // Use a `DispatcherTimer` constructor without a callback // so that the timer doesn't start immediately. We only // want to start the timer when the search text changes. _debouncer = debouncerFactory.Invoke(TimeSpan.FromMilliseconds(500)); _debouncer.Stable += OnSearchStable; }