import React, { useEffect, useState } from 'react' import { connect } from 'react-redux' import commands from './commands/commands' import Login from './commands/fetchCommands/Login' import Logout from './commands/fetchCommands/Logout' import AlbumGetAll from './commands/fetchCommands/Album/GetAll' import AlbumGetOne from './commands/fetchCommands/Album/GetOne' import AlbumCreate from './commands/fetchCommands/Album/Create' import AlbumUpdate from './commands/fetchCommands/Album/Update' import AlbumDelete from './commands/fetchCommands/Album/Delete' import '../../../styles/general.scss' const IndexConsole = ({ user }) => { const [consoleHistory, setConsoleHistory] = useState('') const [login, setLogin] = useState(false) const [logout, setLogout] = useState(false) const [register, setRegister] = useState(false) const [albumGetAll, setAlbumGetAll] = useState(false) const [albumGetOne, setAlbumGetOne] = useState(false) const [albumCreate, setAlbumCreate] = useState(false) const [albumUpdate, setAlbumUpdate] = useState(false) const [albumDelete, setAlbumDelete] = useState(false) const [trackGetAll, setTrackGetAll] = useState(false) const [trackGetOne, setTrackGetOne] = useState(false) const [trackCreate, setTrackCreate] = useState(false) const [trackUpdate, setTrackUpdate] = useState(false) const [trackDelete, setTrackDelete] = useState(false) const [trackRowGetAll, setTrackRowGetAll] = useState(false) const [trackRowGetOne, setTrackRowGetOne] = useState(false) const [trackRowCreate, setTrackRowCreate] = useState(false) const [trackRowUpdate, setTrackRowUpdate] = useState(false) const [trackRowDelete, setTrackRowDelete] = useState(false) const consoleInput = React.createRef() let consoleUser = user.username !== '' ? user.username + '@00x097 # > ' : 'guest@00x097 * > ' useEffect( () => { if ( user.username !== '' ) { consoleUser = user.username + '@00x097 # > ' } else { consoleUser = 'guest@00x097 * > ' } } ) useEffect( () => resizeConsoleDiv(), []) const resizeConsoleDiv = () => { let consoleDiv = document.getElementById('consoleDiv') consoleDiv.style.height = window.innerHeight - 100 + 'px' } const detectCommand = (event) => { event.preventDefault() let inputValue = consoleInput.current.value consoleUser += inputValue + '\n' let splitCommand = inputValue.split(' ') let choiceCRUD = splitCommand[ splitCommand.length - 1 ] let useCRUD = choiceCRUD === 'album' || choiceCRUD === 'track' || choiceCRUD === 'track-row' || choiceCRUD === 'user' if ( user.username !== '' ) { if ( inputValue === 'help' ){ setConsoleHistory( consoleHistory + consoleUser + commands.helpUser() ) } else if ( inputValue === 'logout' ) { setConsoleHistory( consoleHistory + consoleUser ) setLogout( !logout ) } else if ( useCRUD ) { runCRUD( inputValue, choiceCRUD ) } else if ( inputValue === 'clean' ){ setConsoleHistory( '' ) } else { setConsoleHistory( consoleHistory + consoleUser + commands.undefined(inputValue) ) } } else { if ( inputValue === 'help' ){ setConsoleHistory( consoleHistory + consoleUser + commands.help() ) } else if ( inputValue === 'login' ) { setConsoleHistory( consoleHistory + consoleUser ) setLogin( !login ) } else if ( inputValue === 'register' ) { } else if ( inputValue === 'clean' ){ setConsoleHistory( '' ) } else { setConsoleHistory( consoleHistory + consoleUser + commands.undefined(inputValue) ) } } consoleInput.current.value = '' activateInput() } const runCRUD = ( inputValue, object ) => { if ( inputValue === 'get all ' + object ) { setConsoleHistory( consoleHistory + consoleUser ) getAll( object ) } else if ( inputValue === 'get one ' + object ) { setConsoleHistory( consoleHistory + consoleUser ) getOneForm( object ) } else if ( inputValue === 'create ' + object ) { setConsoleHistory( consoleHistory + consoleUser ) createForm( object ) } else if ( inputValue === 'update ' + object ) { setConsoleHistory( consoleHistory + consoleUser ) updateForm( object ) } else if ( inputValue === 'delete ' + object ) { setConsoleHistory( consoleHistory + consoleUser ) deleteForm( object ) } } const getAll = ( object ) => { if (object === 'album') setAlbumGetAll( !albumGetAll ) if (object === 'track') setTrackGetAll( !trackGetAll ) if (object === 'track-row') setTrackRowGetAll( !trackRowGetAll ) } const getOneForm = ( object ) => { if (object === 'album') setAlbumGetOne( !albumGetOne ) if (object === 'track') setTrackGetOne( !trackGetOne ) if (object === 'track-row') setTrackRowGetOne( !trackRowGetOne ) } const createForm = ( object ) => { if (object === 'album') setAlbumCreate( !albumCreate ) if (object === 'track') setTrackCreate( !trackCreate ) if (object === 'track-row') setTrackRowCreate( !trackRowCreate ) } const updateForm = ( object ) => { if (object === 'album') setAlbumUpdate( !albumUpdate ) if (object === 'track') setTrackUpdate( !trackUpdate ) if (object === 'track-row') setTrackRowUpdate( !trackRowUpdate ) } const deleteForm = ( object ) => { if (object === 'album') setAlbumDelete( !albumDelete ) if (object === 'track') setTrackDelete( !trackDelete ) if (object === 'track-row') setTrackRowDelete( !trackRowDelete ) } const activateInput = () => { document.getElementById('consoleInput').focus() } const checkVisible = ( bool ) => { return bool ? { display: 'block' } : { display: 'none' } } return (
00x097 system (Version 0.1.9)
type 'help' for more commands
type 'start -a' for start app

                    { consoleHistory }
            
{ consoleUser }
) } const mapStateToProps = state => ({ user: state.user }) export default connect(mapStateToProps, )(IndexConsole)