this.handleMountLocationChanged(provider, e.target.value)}
clicked={this.handleMountUnMount}
- items={this.state[provider].DriveLetters}
key={'mi_' + items.length}
- provider={provider}
- mounted={this.state[provider].Mounted}
- title={provider} />
+ provider={provider}/>
));
if (items.length !== this.state.length) {
items.push( {
return {
AutoMountProcessed: state.mounts.AutoMountProcessed,
+ MountState: state.mounts.MountState,
Platform: state.common.Platform,
ProviderState: state.mounts.ProviderState,
}
@@ -349,8 +315,11 @@ const mapStateToProps = state => {
const mapDispatchToProps = dispatch => {
return {
+ setAllowMount: (provider, allow) => dispatch(setAllowMount(provider, allow)),
setAutoMountProcessed: processed => dispatch(setAutoMountProcessed(processed)),
+ setMounted: (provider, mounted) => dispatch(setMounted(provider, mounted)),
setMountsBusy: busy => dispatch(setBusy(busy)),
+ setMountState: (provider, state) => dispatch(setMountState(provider, state)),
setProviderState: (provider, state) => dispatch(setProviderState(provider, state)),
}
};
diff --git a/src/redux/actions/mount_actions.js b/src/redux/actions/mount_actions.js
index fecb1c1..357c801 100644
--- a/src/redux/actions/mount_actions.js
+++ b/src/redux/actions/mount_actions.js
@@ -1,8 +1,43 @@
import {createAction} from 'redux-starter-kit';
export const displayConfiguration = createAction('mounts/displayConfiguration');
+
+export const SET_ALLOW_MOUNT = 'mounts/setAllowMount';
+export const setAllowMount = (provider, allow) => {
+ return {
+ type: SET_ALLOW_MOUNT,
+ payload: {
+ provider,
+ allow
+ }
+ };
+};
+
export const setAutoMountProcessed = createAction('mounts/setAutoMountProcessed');
export const setBusy = createAction('mounts/setBusy');
+
+export const SET_MOUNT_STATE = 'mounts/setMountState';
+export const setMountState = (provider, state) => {
+ return {
+ type: SET_MOUNT_STATE,
+ payload: {
+ provider,
+ state
+ }
+ };
+};
+
+export const SET_MOUNTED = 'mounts/setMounted';
+export const setMounted = (provider, mounted) => {
+ return {
+ type: SET_MOUNTED,
+ payload: {
+ provider,
+ mounted
+ }
+ };
+};
+
export const SET_PROVIDER_STATE = 'mounts/setProviderState';
export const setProviderState = (provider, state) => {
return {
diff --git a/src/redux/reducers/mount_reducer.js b/src/redux/reducers/mount_reducer.js
index 45d587a..fe65ed5 100644
--- a/src/redux/reducers/mount_reducer.js
+++ b/src/redux/reducers/mount_reducer.js
@@ -1,10 +1,10 @@
import * as Constants from '../../constants';
import {createReducer} from 'redux-starter-kit';
-import {displayConfiguration, setAutoMountProcessed, setBusy, SET_PROVIDER_STATE} from '../actions/mount_actions';
+import {displayConfiguration, SET_ALLOW_MOUNT, setAutoMountProcessed, setBusy, SET_MOUNT_STATE, SET_MOUNTED, SET_PROVIDER_STATE} from '../actions/mount_actions';
-const providerState = Constants.PROVIDER_LIST.map(p=> {
+const providerState = Constants.PROVIDER_LIST.map(provider=> {
return {
- [p]: {
+ [provider]: {
AutoMount: false,
AutoRestart: false,
MountLocation: '',
@@ -17,28 +17,92 @@ const providerState = Constants.PROVIDER_LIST.map(p=> {
}
});
+const mountState = Constants.PROVIDER_LIST.map(provider => {
+ return {
+ [provider]: {
+ AllowMount: false,
+ DriveLetters: [],
+ Mounted: false,
+ }
+ }
+}).reduce((map, obj) => {
+ return {
+ ...map,
+ ...obj
+ }
+});
+
export const mountReducer = createReducer({
AutoMountProcessed: false,
DisplayConfiguration: null,
MountsBusy: false,
+ MountState: mountState,
ProviderState: providerState,
}, {
[displayConfiguration]: (state, action) => {
- return {...state, DisplayConfiguration: action.payload};
+ return {
+ ...state,
+ DisplayConfiguration: action.payload
+ };
},
[setAutoMountProcessed]: (state, action) => {
- return {...state, AutoMountProcessed: action.payload};
+ return {
+ ...state,
+ AutoMountProcessed: action.payload
+ };
+ },
+ [SET_ALLOW_MOUNT]: (state, action) => {
+ return {
+ ...state,
+ MountState: {
+ ...state.MountState,
+ [action.payload.provider]: {
+ ...state.MountState[action.payload.provider],
+ AllowMount: action.payload.allow,
+ }
+ }
+ };
},
[setBusy]: (state, action) => {
- return {...state, MountsBusy: action.payload};
+ return {
+ ...state,
+ MountsBusy: action.payload
+ };
+ },
+ [SET_MOUNT_STATE]: (state, action) => {
+ return {
+ ...state,
+ MountState: {
+ ...state.MountState,
+ [action.payload.provider]: {
+ ...state.MountState[action.payload.provider],
+ ...action.payload.state
+ },
+ }
+ };
+ },
+ [SET_MOUNTED]: (state, action) => {
+ return {
+ ...state,
+ MountState: {
+ ...state.MountState,
+ [action.payload.provider]: {
+ ...state.MountState[action.payload.provider],
+ Mounted: action.payload.mounted,
+ }
+ }
+ };
},
[SET_PROVIDER_STATE]: (state, action) => {
return {
...state,
ProviderState: {
...state.ProviderState,
- [action.payload.provider]: action.payload.state,
+ [action.payload.provider]: {
+ ...state.ProviderState[action.payload.provider],
+ ...action.payload.state
+ },
}
- }
+ };
}
});
\ No newline at end of file