166 lines
4.0 KiB
JavaScript
166 lines
4.0 KiB
JavaScript
import * as Constants from '../../constants';
|
|
import {createReducer} from 'redux-starter-kit';
|
|
import {
|
|
addRemoteMount2,
|
|
DISPLAY_CONFIGURATION,
|
|
removeRemoteMount3,
|
|
RESET_MOUNTS_STATE,
|
|
SET_ALLOW_MOUNT,
|
|
setAutoMountProcessed,
|
|
setBusy,
|
|
SET_MOUNT_STATE,
|
|
SET_MOUNTED,
|
|
SET_PROVIDER_STATE
|
|
} from '../actions/mount_actions';
|
|
|
|
export const createMountReducer = state => {
|
|
let providerList = [
|
|
...Constants.PROVIDER_LIST,
|
|
...(state.RemoteMounts||['Remotelocalhost:20000']),
|
|
];
|
|
const providerState = providerList.map(provider=> {
|
|
return {
|
|
[provider]: {
|
|
AutoMount: false,
|
|
AutoRestart: false,
|
|
MountLocation: '',
|
|
}
|
|
}
|
|
}).reduce((map, obj) => {
|
|
return {
|
|
...map,
|
|
...obj
|
|
}
|
|
});
|
|
|
|
const mountState = providerList.map(provider => {
|
|
return {
|
|
[provider]: {
|
|
AllowMount: false,
|
|
DriveLetters: [],
|
|
Mounted: false,
|
|
}
|
|
}
|
|
}).reduce((map, obj) => {
|
|
return {
|
|
...map,
|
|
...obj
|
|
}
|
|
});
|
|
|
|
return createReducer({
|
|
AutoMountProcessed: false,
|
|
DisplayConfiguration: null,
|
|
DisplayRemoteConfiguration: false,
|
|
MountsBusy: false,
|
|
MountState: mountState,
|
|
ProviderState: providerState,
|
|
RemoteMounts: state.RemoteMounts ? state.RemoteMounts : ['Remotelocalhost:20000'],
|
|
}, {
|
|
[addRemoteMount2]: (state, action) => {
|
|
let mountState = {...state.MountState};
|
|
mountState[action.payload] = {
|
|
AllowMount: false,
|
|
DriveLetters: [],
|
|
Mounted: false,
|
|
};
|
|
|
|
let providerState = {...state.ProviderState};
|
|
providerState[action.payload] = {
|
|
AutoMount: false,
|
|
AutoRestart: false,
|
|
MountLocation: '',
|
|
};
|
|
return {
|
|
...state,
|
|
MountState: mountState,
|
|
ProviderState: providerState,
|
|
RemoteMounts: [...state.RemoteMounts, action.payload],
|
|
}
|
|
},
|
|
[DISPLAY_CONFIGURATION]: (state, action) => {
|
|
return {
|
|
...state,
|
|
DisplayConfiguration: action.payload.provider,
|
|
DisplayRemoteConfiguration: action.payload.remote,
|
|
};
|
|
},
|
|
[removeRemoteMount3]: (state, action) => {
|
|
let providerState = {...state.ProviderState};
|
|
delete providerState[action.payload];
|
|
const remoteMounts = state.RemoteMounts.filter(i => i !== action.payload);
|
|
return {
|
|
...state,
|
|
ProviderState: providerState,
|
|
RemoteMounts: remoteMounts,
|
|
};
|
|
},
|
|
[RESET_MOUNTS_STATE]: (state, action) => {
|
|
return {
|
|
...state,
|
|
MountsBusy: false,
|
|
MountState: mountState,
|
|
}
|
|
},
|
|
[setAutoMountProcessed]: (state, action) => {
|
|
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
|
|
};
|
|
},
|
|
[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]: {
|
|
...state.ProviderState[action.payload.provider],
|
|
...action.payload.state
|
|
},
|
|
}
|
|
};
|
|
}
|
|
});
|
|
}; |