示例#1
0
        public ListViewModel(IStore <ApplicationState> appStore, IGetPlaceByIdActionCreator downloadPlaceByIdActionCreator) : base(appStore)
        {
            this.downloadPlaceByIdActionCreator = downloadPlaceByIdActionCreator ?? throw new ArgumentNullException(nameof(downloadPlaceByIdActionCreator));

            appStore
            .DistinctUntilChanged(state => new { state.PlacesData.PlacesListState.Status })
            .Subscribe(state =>
            {
                var placesList = state.PlacesData.PlacesListState.Value;
                if (placesList != null && state.PlacesData.PlacesListState.Status == Core.Enums.Status.Success)
                {
                    UpdateList(placesList);
                }
                else if (state.PlacesData.PlacesListState.Status == Core.Enums.Status.Error)
                {
                    IsBusy          = false;
                    IsPromptVisible = true;
                }
                else
                {
                    IsBusy = true;
                }
            }, error => { appStore.Dispatch(new SetErrorAction(error, "ListViewModel in subscription.")); });

            InformationText = "TODO: Add error text to resources.";
        }
        public MapViewModel(IStore <ApplicationState> appStore, IGetPlaceByIdActionCreator downloadPlaceByIdActionCreator) : base(appStore)
        {
            this.downloadPlaceByIdActionCreator = downloadPlaceByIdActionCreator ?? throw new ArgumentNullException(nameof(downloadPlaceByIdActionCreator));

            SetMapTypeFromAppSettings();

            if (subscriptions.Count > 0)
            {
                return;
            }

            var placesListSub = appStore
                                .DistinctUntilChanged(state => new { state.PlacesData.PlacesListState.Status })
                                .SubscribeWithError(state =>
            {
                var placesList = state.PlacesData.PlacesListState.Value;

                if (placesList != null && state.PlacesData.PlacesListState.Status == Core.Enums.Status.Success)
                {
                    UpdateMap(placesList);
                }
                else
                {
                    IsBusy = true;
                }
            }, error => { appStore.Dispatch(new SetErrorAction(error, "MapViewModel in subscription.")); });

            subscriptions.Add(placesListSub);
        }
 public Bootstrapper(
     IStore <ApplicationState> appStore,
     IPermissionActionCreator permissionActionCreator,
     IDeviceLocationActionCreator deviceLocationActionCreator,
     IGetPlaceByIdActionCreator downloadPlaceByIdActionCreator,
     IGetPlacesListActionCreator downloadPlacesListActionCreator,
     ISettingsHelper settingsHelper,
     IErrorLogger errorLogger
     )
 {
     this.appStore = appStore ?? throw new ArgumentNullException(nameof(appStore));
     this.permissionActionCreator         = permissionActionCreator ?? throw new ArgumentNullException(nameof(permissionActionCreator));
     this.deviceLocationActionCreator     = deviceLocationActionCreator ?? throw new ArgumentNullException(nameof(deviceLocationActionCreator));
     this.downloadPlaceByIdActionCreator  = downloadPlaceByIdActionCreator ?? throw new ArgumentNullException(nameof(downloadPlaceByIdActionCreator));
     this.downloadPlacesListActionCreator = downloadPlacesListActionCreator ?? throw new ArgumentNullException(nameof(downloadPlacesListActionCreator));
     this.settingsHelper = settingsHelper ?? throw new ArgumentNullException(nameof(settingsHelper));
     this.errorLogger    = errorLogger ?? throw new ArgumentNullException(nameof(errorLogger));
 }