diff --git a/src/App.js b/src/App.js index e83fbe1..d623534 100644 --- a/src/App.js +++ b/src/App.js @@ -33,6 +33,8 @@ import { } from './redux/actions/release_version_actions'; import YesNo from './components/YesNo/YesNo'; import {createModalConditionally} from './utils'; +import SkynetImport from './containers/SkynetImport/SkynetImport'; +import {displaySkynetImport} from './redux/actions/skynet_actions'; const Constants = require('./constants'); const Scheduler = require('node-schedule'); @@ -138,6 +140,17 @@ class App extends IPCContainer { !this.props.DismissNewReleasesAvailable && (this.props.NewReleasesAvailable.length > 0); + const showSkynetImport = !showConfig && + !showDependencies && + !this.props.DownloadActive && + !this.props.DisplayError && + !this.props.DisplayInfo && + !showNewReleases && + !this.props.RebootRequired && + !this.props.DisplaySelectAppPlatform && + !showUpgrade && + this.props.DisplayImport; + const configDisplay = createModalConditionally(showConfig, ); const confirmDisplay = createModalConditionally(this.props.DisplayConfirmYesNo, ); const dependencyDisplay = createModalConditionally(showDependencies, , false, this.props.InstallActive); @@ -148,6 +161,7 @@ class App extends IPCContainer { const rebootDisplay = createModalConditionally(this.props.RebootRequired, ); const selectAppPlatformDisplay = createModalConditionally(this.props.DisplaySelectAppPlatform, ); const upgradeDisplay = createModalConditionally(showUpgrade, ); + const importDisplay = createModalConditionally(showSkynetImport, ); let mainContent = []; if (this.props.DisplaySelectAppPlatform || !this.props.AppReady) { @@ -211,6 +225,7 @@ class App extends IPCContainer { {mainContent} + {importDisplay} {newReleasesDisplay} {selectAppPlatformDisplay} {dependencyDisplay} @@ -236,6 +251,7 @@ const mapStateToProps = state => { DisplayConfiguration: state.mounts.DisplayConfiguration, DisplayConfirmYesNo: state.common.DisplayConfirmYesNo, DisplayError: state.error.DisplayError, + DisplayImport: state.skynet.DisplayImport, DisplayInfo: state.error.DisplayInfo, DisplaySelectAppPlatform: state.common.DisplaySelectAppPlatform, DismissNewReleasesAvailable: state.relver.DismissNewReleasesAvailable, diff --git a/src/containers/AddRemoteMount/AddRemoteMount.js b/src/containers/AddRemoteMount/AddRemoteMount.js index 34b8a1a..5cd9252 100644 --- a/src/containers/AddRemoteMount/AddRemoteMount.js +++ b/src/containers/AddRemoteMount/AddRemoteMount.js @@ -62,7 +62,7 @@ export default connect(mapStateToProps, mapDispatchToProps)(class extends Compon const displayAdd = createModalConditionally(this.state.Display, ( - Add Remote Mount + Add Remote Mount diff --git a/src/containers/MountItems/MountItem/MountItem.js b/src/containers/MountItems/MountItem/MountItem.js index 01821f1..51b7443 100644 --- a/src/containers/MountItems/MountItem/MountItem.js +++ b/src/containers/MountItems/MountItem/MountItem.js @@ -32,8 +32,8 @@ const mapStateToProps = (state, ownProps) => { const mapDispatchToProps = dispatch => { return { displayConfiguration: (provider, remote) => dispatch(displayConfiguration(provider, remote)), - displaySkynetExport: () => dispatch(displaySkynetExport()), - displaySkynetImport: () => dispatch(displaySkynetImport()), + displaySkynetExport: display => dispatch(displaySkynetExport(display)), + displaySkynetImport: display => dispatch(displaySkynetImport(display)), removeRemoteMount: provider => dispatch(removeRemoteMount(provider)), setProviderState: (provider, state) => dispatch(setProviderState(provider, state)), } @@ -185,7 +185,7 @@ export default connect(mapStateToProps, mapDispatchToProps)(props => { {(props.provider === 'Skynet') ? ( props.displaySkynetExport() : e => {e.preventDefault();}} + onClick={props.MState.AllowMount ? () => props.displaySkynetExport(true) : e => {e.preventDefault();}} rowSpan={5} style={{...pointer, fontWeight: 'normal'}}> Export @@ -194,7 +194,7 @@ export default connect(mapStateToProps, mapDispatchToProps)(props => { {(props.provider === 'Skynet') ? ( props.displaySkynetImport() : e => {e.preventDefault();}} + onClick={props.MState.AllowMount ? () => props.displaySkynetImport(true) : e => {e.preventDefault();}} rowSpan={5} style={{...pointer, fontWeight: 'normal'}}> Import diff --git a/src/containers/SkynetImport/Format/Format.css b/src/containers/SkynetImport/Format/Format.css new file mode 100644 index 0000000..e69de29 diff --git a/src/containers/SkynetImport/Format/Format.js b/src/containers/SkynetImport/Format/Format.js new file mode 100644 index 0000000..e69de29 diff --git a/src/containers/SkynetImport/ImportList/Import/Import.css b/src/containers/SkynetImport/ImportList/Import/Import.css new file mode 100644 index 0000000..e69de29 diff --git a/src/containers/SkynetImport/ImportList/Import/Import.js b/src/containers/SkynetImport/ImportList/Import/Import.js new file mode 100644 index 0000000..e69de29 diff --git a/src/containers/SkynetImport/ImportList/ImportList.css b/src/containers/SkynetImport/ImportList/ImportList.css new file mode 100644 index 0000000..e69de29 diff --git a/src/containers/SkynetImport/ImportList/ImportList.js b/src/containers/SkynetImport/ImportList/ImportList.js new file mode 100644 index 0000000..e69de29 diff --git a/src/containers/SkynetImport/SkynetImport.css b/src/containers/SkynetImport/SkynetImport.css new file mode 100644 index 0000000..e6d0103 --- /dev/null +++ b/src/containers/SkynetImport/SkynetImport.css @@ -0,0 +1,27 @@ +.SkynetImportTextArea { + display: block; + width: 100%; + margin: 0; + padding: 2px; + border-radius: var(--border_radius); + background: var(--control_background); + border: none; + box-shadow: none; + outline: none; + color: var(--text_color); + box-sizing: border-box; + resize: none; + overflow-y: scroll; + overflow:-moz-scrollbars-horizontal; + white-space: nowrap; +} + +.SkynetImportButtons { + display: flex; + justify-content: space-between; +} + +.SkynetImportHeading { + text-align: center; + padding-bottom: var(--default_spacing); +} diff --git a/src/containers/SkynetImport/SkynetImport.js b/src/containers/SkynetImport/SkynetImport.js new file mode 100644 index 0000000..a2d0e23 --- /dev/null +++ b/src/containers/SkynetImport/SkynetImport.js @@ -0,0 +1,46 @@ +import React from 'react' +import {Component} from 'react'; +import {connect} from 'react-redux'; +import './SkynetImport.css' +import Box from '../../components/UI/Box/Box'; +import Button from '../../components/UI/Button/Button'; +import {displaySkynetImport} from '../../redux/actions/skynet_actions'; + +const mapDispatchToProps = dispatch => { + return { + displaySkynetImport: display => dispatch(displaySkynetImport(display)), + } +}; + +export default connect(null, mapDispatchToProps)(class extends Component { + + state = { + import_list: '', + }; + + render() { + return ( + + + this.props.displaySkynetImport(false)} + style={{cursor: 'pointer'}}>X + + Import List + this.setState({ + ...this.state, + import_list: e.target.value, + })} + value={this.state.import_list} + rows={10} /> + + + Import Syntax... + Next + + + ); + } +}); diff --git a/src/redux/actions/skynet_actions.js b/src/redux/actions/skynet_actions.js index 57077bb..efeac8b 100644 --- a/src/redux/actions/skynet_actions.js +++ b/src/redux/actions/skynet_actions.js @@ -1,13 +1,5 @@ +import {createAction} from '@reduxjs/toolkit'; -export const displaySkynetExport = () => { - return dispatch => { - - }; -}; - -export const displaySkynetImport = () => { - return dispatch => { - - }; -}; +export const displaySkynetExport = createAction('skynet/displaySkynetExport'); +export const displaySkynetImport = createAction('skynet/displaySkynetImport'); diff --git a/src/redux/reducers/skynet_reducer.js b/src/redux/reducers/skynet_reducer.js new file mode 100644 index 0000000..d256aca --- /dev/null +++ b/src/redux/reducers/skynet_reducer.js @@ -0,0 +1,20 @@ +import {createReducer} from '@reduxjs/toolkit'; +import * as Actions from '../actions/skynet_actions'; + +export const skynetReducer = createReducer({ + DisplayExport: false, + DisplayImport: false, +}, { + [Actions.displaySkynetExport]: (state, action) => { + return { + ...state, + DisplayExport: action.payload, + } + }, + [Actions.displaySkynetImport]: (state, action) => { + return { + ...state, + DisplayImport: action.payload, + } + }, +}); diff --git a/src/redux/store/createAppStore.js b/src/redux/store/createAppStore.js index 24fee23..9b446e5 100644 --- a/src/redux/store/createAppStore.js +++ b/src/redux/store/createAppStore.js @@ -5,6 +5,7 @@ import {errorReducer} from '../reducers/error_reducer'; import {installReducer} from '../reducers/install_reducer'; import {createMountReducer} from '../reducers/mount_reducer'; import {releaseVersionReducer} from '../reducers/release_version_reducer'; +import {skynetReducer} from '../reducers/skynet_reducer'; export default function createAppStore(platformInfo, version, state) { const reducer = { @@ -14,6 +15,7 @@ export default function createAppStore(platformInfo, version, state) { install: installReducer, mounts: createMountReducer(state), relver: releaseVersionReducer, + skynet: skynetReducer, }; const middleware = [...getDefaultMiddleware()];