diff --git a/src/constants.js b/src/constants.js index 8c7b70e..9913ff9 100644 --- a/src/constants.js +++ b/src/constants.js @@ -159,8 +159,8 @@ exports.IPC_Install_Upgrade_Reply = 'install_upgrade_reply'; exports.IPC_Mount_Drive = 'mount_drive'; exports.IPC_Mount_Drive_Reply = 'mount_drive_reply'; -exports.IPC_Remove_Remote_Mount = 'remove_remote_mount'; -exports.IPC_Remove_Remote_Mount_Reply = 'remove_remote_mount_reply'; +exports.IPC_Remove_Mount = 'remove_mount'; +exports.IPC_Remove_Mount_Reply = 'remove_mount_reply'; exports.IPC_Reboot_System = 'reboot_system'; diff --git a/src/containers/MountItems/MountItem/MountItem.js b/src/containers/MountItems/MountItem/MountItem.js index 0bcb7a6..b763f97 100644 --- a/src/containers/MountItems/MountItem/MountItem.js +++ b/src/containers/MountItems/MountItem/MountItem.js @@ -10,7 +10,7 @@ import configureImage from '../../../assets/images/configure.png'; import RootElem from '../../../components/UI/RootElem/RootElem'; import { displayConfiguration, - removeRemoteMount, + removeMount, setProviderState } from '../../../redux/actions/mount_actions'; import { @@ -34,7 +34,7 @@ const mapDispatchToProps = dispatch => { displayConfiguration: (provider, remote, s3) => dispatch(displayConfiguration(provider, remote, s3)), displaySkynetExport: display => dispatch(displaySkynetExport(display)), displaySkynetImport: display => dispatch(displaySkynetImport(display)), - removeRemoteMount: provider => dispatch(removeRemoteMount(provider)), + removeMount: provider => dispatch(removeMount(provider)), setProviderState: (provider, state) => dispatch(setProviderState(provider, state)), } }; @@ -155,14 +155,14 @@ export default connect(mapStateToProps, mapDispatchToProps)(props => { ); let removeControl; - if (props.remote) { + if (props.allowRemove) { const removeDisabled = !props.MState.AllowMount || props.MState.Mounted; const removeStyle = { cursor: removeDisabled ? 'no-drop' : 'pointer' }; const handleRemoveMount = () => { if (!removeDisabled) { - props.removeRemoteMount(props.provider); + props.removeMount(props.provider); } }; removeControl = ( diff --git a/src/redux/actions/mount_actions.js b/src/redux/actions/mount_actions.js index 8d41331..18fc6ba 100644 --- a/src/redux/actions/mount_actions.js +++ b/src/redux/actions/mount_actions.js @@ -95,31 +95,36 @@ export const displayConfiguration = (provider, remote, s3) => { }; }; -export const removeRemoteMount = provider => { +export const removeMount = provider => { return dispatch => { - dispatch(confirmYesNo('Delete [' + provider.substr(6) + ']?')) + const isRemote = provider.startsWith('Remote'); + dispatch(confirmYesNo('Delete [' + provider.substr(isRemote ? 6 : 2) + ']?')) .then(confirmed => { if (confirmed) { - dispatch(removeRemoteMount2(provider)); + dispatch(removeMount2(provider)); } }); }; }; -const removeRemoteMount2 = provider => { +const removeMount2 = provider => { return dispatch => { const ipcRenderer = getIPCRenderer(); - ipcRenderer.once(Constants.IPC_Remove_Remote_Mount_Reply, (_, arg) => { + ipcRenderer.once(Constants.IPC_Remove_Mount_Reply, (_, arg) => { if (arg.data.Success) { - dispatch(removeRemoteMount3(provider)); + dispatch(removeMount3(provider)); dispatch(saveState()); } }); - ipcRenderer.send(Constants.IPC_Remove_Remote_Mount, provider.substr(6)); + const isRemote = provider.startsWith('Remote'); + ipcRenderer.send(Constants.IPC_Remove_Mount, { + Remote: isRemote, + Name: provider.substr(isRemote ? 6 : 2) + }); }; }; -export const removeRemoteMount3 = createAction('mounts/removeRemoteMount3'); +export const removeMount3 = createAction('mounts/removeMount3'); export const RESET_MOUNTS_STATE = 'mounts/resetMountsState'; export const resetMountsState = () => { diff --git a/src/redux/reducers/mount_reducer.js b/src/redux/reducers/mount_reducer.js index a55d692..8648a76 100644 --- a/src/redux/reducers/mount_reducer.js +++ b/src/redux/reducers/mount_reducer.js @@ -5,7 +5,7 @@ import { addRemoteMount2, addS3Mount2, DISPLAY_CONFIGURATION, - removeRemoteMount3, + removeMount3, RESET_MOUNTS_STATE, SET_ALLOW_MOUNT, SET_AUTO_MOUNT_PROCESSED, @@ -126,7 +126,7 @@ export const createMountReducer = state => { DisplayS3Configuration: action.payload.s3, }; }, - [removeRemoteMount3]: (state, action) => { + [removeMount3]: (state, action) => { let mountState = {...state.MountState}; delete mountState[action.payload]; @@ -138,12 +138,15 @@ export const createMountReducer = state => { const remoteMounts = state.RemoteMounts.filter(i => i !== action.payload); + const s3Mounts = + state.S3Mounts.filter(i => i !== action.payload); return { ...state, AutoMountProcessed: autoMountProcessed, MountState: mountState, ProviderState: providerState, RemoteMounts: remoteMounts, + S3Mounts: s3Mounts, }; }, [RESET_MOUNTS_STATE]: (state, action) => { diff --git a/src/renderer/ipc/MountsIPC.js b/src/renderer/ipc/MountsIPC.js index fced82c..ef1cdeb 100644 --- a/src/renderer/ipc/MountsIPC.js +++ b/src/renderer/ipc/MountsIPC.js @@ -20,29 +20,29 @@ const clearManualMountDetection = provider => { const monitorMount = (sender, provider, providerList, version, pid, location) => { manualMountDetection[provider] = setInterval(() => { helpers - .detectRepertoryMounts(version, providerList) - .then(result => { - if (result[provider].PID !== pid) { - if (result[provider].PID === -1) { - clearManualMountDetection(provider); - sender.send(Constants.IPC_Unmount_Drive_Reply, { - data: { - Expected: expectedUnmount[provider], - Location: location, - Provider: provider, - Error: Error(provider + ' Unmounted').toString(), - Success: false, - } - }); - } else { - pid = result[provider].PID; - } + .detectRepertoryMounts(version, providerList) + .then(result => { + if (result[provider].PID !== pid) { + if (result[provider].PID === -1) { + clearManualMountDetection(provider); + sender.send(Constants.IPC_Unmount_Drive_Reply, { + data: { + Expected: expectedUnmount[provider], + Location: location, + Provider: provider, + Error: Error(provider + ' Unmounted').toString(), + Success: false, + } + }); + } else { + pid = result[provider].PID; } - }) - .catch(e => { - console.log(e); - }); - },6000); + } + }) + .catch(e => { + console.log(e); + }); + }, 6000); }; const unmountAllDrives = () => { @@ -149,52 +149,52 @@ const addListeners = (ipcMain, {setTrayImage, standardIPCReply}) => { }; helpers - .detectRepertoryMounts(data.Version, providerList) - .then((results) => { - let storageData = {}; - let locations = {}; - for (const provider of providerList) { - storageData[provider] = results[provider] ? results[provider] : { - Active: false, - Location: '', - PID: -1, - }; - locations[provider] = storageData[provider].Location; + .detectRepertoryMounts(data.Version, providerList) + .then((results) => { + let storageData = {}; + let locations = {}; + for (const provider of providerList) { + storageData[provider] = results[provider] ? results[provider] : { + Active: false, + Location: '', + PID: -1, + }; + locations[provider] = storageData[provider].Location; - if (storageData[provider].PID !== -1) { - expectedUnmount[provider] = false; - if (firstMountCheck) { - monitorMount(event.sender, provider, providerList, data.Version, storageData[provider].PID, storageData[provider].Location); - } + if (storageData[provider].PID !== -1) { + expectedUnmount[provider] = false; + if (firstMountCheck) { + monitorMount(event.sender, provider, providerList, data.Version, storageData[provider].PID, storageData[provider].Location); } } + } - if (os.platform() === 'win32') { - grabDriveLetters(locations); - } + if (os.platform() === 'win32') { + grabDriveLetters(locations); + } - setImage(locations); - if (firstMountCheck) { - firstMountCheck = false; - } - standardIPCReply(event, Constants.IPC_Detect_Mount_Reply, { - Active: storageData[provider].Active, - DriveLetters: driveLetters[provider], - Location: locations[provider], - PID: storageData[provider].PID, - Provider: provider, - }); - }) - .catch(error => { - if (os.platform() === 'win32') { - grabDriveLetters({}); - } - setImage({}); - standardIPCReply(event, Constants.IPC_Detect_Mount_Reply, { - DriveLetters: driveLetters[provider], - Provider: provider, - }, error); + setImage(locations); + if (firstMountCheck) { + firstMountCheck = false; + } + standardIPCReply(event, Constants.IPC_Detect_Mount_Reply, { + Active: storageData[provider].Active, + DriveLetters: driveLetters[provider], + Location: locations[provider], + PID: storageData[provider].PID, + Provider: provider, }); + }) + .catch(error => { + if (os.platform() === 'win32') { + grabDriveLetters({}); + } + setImage({}); + standardIPCReply(event, Constants.IPC_Detect_Mount_Reply, { + DriveLetters: driveLetters[provider], + Provider: provider, + }, error); + }); }); ipcMain.on(Constants.IPC_Mount_Drive, (event, data) => { @@ -241,15 +241,17 @@ const addListeners = (ipcMain, {setTrayImage, standardIPCReply}) => { } }); - ipcMain.on(Constants.IPC_Remove_Remote_Mount, (event, data) => { - data = data.replace(':', '_'); - const dataDirectory = path.resolve(path.join(helpers.getDataDirectory(), '..', 'remote', data)); + ipcMain.on(Constants.IPC_Remove_Mount, (event, data) => { + if (data.Remote) { + data.Name = data.Name.replace(':', '_'); + } + const dataDirectory = path.resolve(path.join(helpers.getDataDirectory(), '..', data.Remote ? 'remote' : 's3', data.Name)); try { helpers.removeDirectoryRecursively(dataDirectory); - standardIPCReply(event, Constants.IPC_Remove_Remote_Mount_Reply, {DataDirectory: dataDirectory}); + standardIPCReply(event, Constants.IPC_Remove_Mount_Reply, {DataDirectory: dataDirectory}); } catch (e) { - standardIPCReply(event, Constants.IPC_Remove_Remote_Mount_Reply, {DataDirectory: dataDirectory}, e); + standardIPCReply(event, Constants.IPC_Remove_Mount_Reply, {DataDirectory: dataDirectory}, e); } }); @@ -264,12 +266,12 @@ const addListeners = (ipcMain, {setTrayImage, standardIPCReply}) => { expectedUnmount[data.Provider] = true; helpers .stopMountProcess(data.Version, data.Provider, data.Remote, data.S3) - .then(result => { - console.log(result); - }) - .catch(e => { - console.log(e); - }); + .then(result => { + console.log(result); + }) + .catch(e => { + console.log(e); + }); }); };