public HistoryPageViewModel(IShareDataRepository shareDataRepository, INavigationService navigationService, IDataTransferService dataTransferService) { ShareDataList = new ObservableCollection <HistoryItemViewModel>(); _sharedItemsSubscription = shareDataRepository.ShareDataObservable.Subscribe(AddHistoryItem); GoBackCommand = new DelegateCommand(navigationService.GoBack); ReshareCommand = new DelegateCommand <HistoryItemViewModel>(historyItem => ShareLink(dataTransferService, historyItem)); }
public void Initialize() { _windowService = A.Fake <IWindowService>(); _dataTransferService = A.Fake <IDataTransferService>(); _clipboardService = A.Fake <IClipboardService>(); _httpService = A.Fake <IHttpService>(); _schedulerProvider = A.Fake <ISchedulerProvider>(); _textToSpeechService = A.Fake <ITextToSpeechService>(); _applicationSettingsService = new ApplicationSettingsService(new MockApplicationDataContainer()); _uiSettingsService = A.Fake <ISettingsService>(); _shareDataRepository = A.Fake <IShareDataRepository>(); _navigationService = A.Fake <INavigationService>(); A.CallTo(() => _schedulerProvider.Default).Returns(_testScheduler); }
public DataTransferService(IShareDataRepository shareDataRepository) { var dataTransferManager = DataTransferManager.GetForCurrentView(); var sharingDataObservable = Observable.FromEventPattern <TypedEventHandler <DataTransferManager, DataRequestedEventArgs>, DataTransferManager, DataRequestedEventArgs>( h => dataTransferManager.DataRequested += h, h => dataTransferManager.DataRequested -= h) .Select(ev => ev.EventArgs.Request.Data) .Where(_ => _shareData != null); _dataTransferSubscription = sharingDataObservable.Subscribe(ShareTextHandler); ShareTargetObservable = Observable.FromEventPattern <TypedEventHandler <DataTransferManager, TargetApplicationChosenEventArgs>, DataTransferManager, TargetApplicationChosenEventArgs>( h => dataTransferManager.TargetApplicationChosen += h, h => dataTransferManager.TargetApplicationChosen -= h) .Select(ev => ev.EventArgs.ApplicationName); _dataSharedSubscription = sharingDataObservable.Select(shareData => ShareTargetObservable.Select(applicationName => new { ShareData = _shareData, Application = applicationName })) .Switch() .Subscribe(sharedData => HandleSharedData(shareDataRepository, sharedData.ShareData, sharedData.Application)); }
private static void HandleSharedData(IShareDataRepository repository, ShareData data, string applicationName) { data.ApplicationName = applicationName; repository.Add(data); }