adding toast notification and other improvements to logic
This commit is contained in:
Generated
+13
@@ -6255,6 +6255,14 @@
|
|||||||
"warning": "^4.0.1"
|
"warning": "^4.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"react-toasts": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-toasts/-/react-toasts-3.0.3.tgz",
|
||||||
|
"integrity": "sha512-af85o0jS05A1SuurACOnBSRlLf2krPeXMPXL/67qnB1PjoMI8QjKXdGcxkELeNw1DMp8LVvxqdGnP5jiueTlEg==",
|
||||||
|
"requires": {
|
||||||
|
"watchable-stores": "^2.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"react-transition-group": {
|
"react-transition-group": {
|
||||||
"version": "2.5.2",
|
"version": "2.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.5.2.tgz",
|
||||||
@@ -7749,6 +7757,11 @@
|
|||||||
"loose-envify": "^1.0.0"
|
"loose-envify": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"watchable-stores": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/watchable-stores/-/watchable-stores-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-xKzypK+hG6gaZFcmiEvdazbD9Z8+hIlr+frC7Ne4N4LI0zvuPaT5uPrhn2RMxhiwaLVw70rctes+rPUTvwhPNg=="
|
||||||
|
},
|
||||||
"watchpack": {
|
"watchpack": {
|
||||||
"version": "1.6.0",
|
"version": "1.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
"react-dom": "^16.7.0",
|
"react-dom": "^16.7.0",
|
||||||
"react-google-login": "^5.0.4",
|
"react-google-login": "^5.0.4",
|
||||||
"react-router-dom": "^4.3.1",
|
"react-router-dom": "^4.3.1",
|
||||||
|
"react-toasts": "^3.0.3",
|
||||||
"redux-persist": "^5.10.0"
|
"redux-persist": "^5.10.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -5,9 +5,20 @@ const envVars = require('config');
|
|||||||
|
|
||||||
import { GoogleLogin } from 'react-google-login';
|
import { GoogleLogin } from 'react-google-login';
|
||||||
|
|
||||||
import { Button } from '@material-ui/core';
|
import { Button, Card, Typography } from '@material-ui/core';
|
||||||
import { Send } from '@material-ui/icons';
|
import { Send } from '@material-ui/icons';
|
||||||
|
|
||||||
|
import { ToastsContainer, ToastsStore } from 'react-toasts';
|
||||||
|
|
||||||
|
// Old notification elem for manual use
|
||||||
|
// const notification = (
|
||||||
|
// <Card id="notification" className={styles.notificationCont}>
|
||||||
|
// <Typography variant="overline" color="inherit">
|
||||||
|
// Successfully executed command!
|
||||||
|
// </Typography>
|
||||||
|
// </Card>
|
||||||
|
// );
|
||||||
|
|
||||||
const INITIAL_COMMAND_STATE = {
|
const INITIAL_COMMAND_STATE = {
|
||||||
command: 'google',
|
command: 'google',
|
||||||
commandInput: '',
|
commandInput: '',
|
||||||
@@ -65,6 +76,10 @@ class MainCommand extends Component {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
this.mainBar.focus();
|
||||||
|
}
|
||||||
|
|
||||||
googleSignIn = async e => {
|
googleSignIn = async e => {
|
||||||
await console.log('Going through sign in flow');
|
await console.log('Going through sign in flow');
|
||||||
const signInResponse = await gapi.auth2.getAuthInstance().signIn();
|
const signInResponse = await gapi.auth2.getAuthInstance().signIn();
|
||||||
@@ -107,25 +122,34 @@ class MainCommand extends Component {
|
|||||||
newInput = newInput.replace('gmail', '');
|
newInput = newInput.replace('gmail', '');
|
||||||
newCommandInputPlaceholder = 'to | subject | message';
|
newCommandInputPlaceholder = 'to | subject | message';
|
||||||
newNeedGoogleAuth = true;
|
newNeedGoogleAuth = true;
|
||||||
}
|
} else if (
|
||||||
|
newInput.includes('utube') &&
|
||||||
if (newCommand == 'google') {
|
newCommandIcon == envVars.DEFAULT_LOGO
|
||||||
newCommand = 'google';
|
) {
|
||||||
newCommandComplete = true;
|
|
||||||
newCommandInputPlaceholder = 'search for anything';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (newInput.includes('utube')) {
|
|
||||||
newCommand = 'utube';
|
newCommand = 'utube';
|
||||||
newCommandIcon =
|
newCommandIcon =
|
||||||
'https://cdn2.iconfinder.com/data/icons/micon-social-pack/512/youtube-512.png';
|
'https://cdn2.iconfinder.com/data/icons/micon-social-pack/512/youtube-512.png';
|
||||||
newInput = newInput.replace('utube', '');
|
newInput = newInput.replace('utube', '');
|
||||||
newCommandComplete = true;
|
newCommandComplete = true;
|
||||||
newCommandInputPlaceholder = 'search for any video';
|
newCommandInputPlaceholder = 'search for any video';
|
||||||
|
} else if (
|
||||||
|
newInput.includes('red') &&
|
||||||
|
newCommandIcon == envVars.DEFAULT_LOGO
|
||||||
|
) {
|
||||||
|
newCommand = 'reddit';
|
||||||
|
newCommandIcon =
|
||||||
|
'https://cdn2.iconfinder.com/data/icons/micon-social-pack/512/youtube-512.png';
|
||||||
|
newInput = newInput.replace('utube', '');
|
||||||
|
newCommandComplete = true;
|
||||||
|
newCommandInputPlaceholder = 'search for any video';
|
||||||
|
} else if (newCommand == 'google') {
|
||||||
|
newCommand = 'google';
|
||||||
|
newCommandComplete = true;
|
||||||
|
newCommandInputPlaceholder = 'search for anything';
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: helper function to check if input complete and show submit button
|
|
||||||
if (newCommand == 'gmail') {
|
if (newCommand == 'gmail') {
|
||||||
|
// TODO: helper function to check if input complete for current command and show submit button
|
||||||
const gmailSendParts = newInput.split('|');
|
const gmailSendParts = newInput.split('|');
|
||||||
if (gmailSendParts.length == 3) {
|
if (gmailSendParts.length == 3) {
|
||||||
newCommandComplete = true;
|
newCommandComplete = true;
|
||||||
@@ -191,7 +215,10 @@ class MainCommand extends Component {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setState(INITIAL_COMMAND_STATE, () => console.log(this.state));
|
this.setState(INITIAL_COMMAND_STATE, () => {
|
||||||
|
console.log(this.state);
|
||||||
|
ToastsStore.success('Successfully executed command!');
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
@@ -222,6 +249,9 @@ class MainCommand extends Component {
|
|||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
<img className={styles.commandIcon} src={commandIcon} />
|
<img className={styles.commandIcon} src={commandIcon} />
|
||||||
<input
|
<input
|
||||||
|
ref={input => {
|
||||||
|
this.mainBar = input;
|
||||||
|
}}
|
||||||
value={commandInput}
|
value={commandInput}
|
||||||
onChange={this.handleInputChange}
|
onChange={this.handleInputChange}
|
||||||
onKeyDown={this.handleInputKeyDown}
|
onKeyDown={this.handleInputKeyDown}
|
||||||
@@ -242,6 +272,8 @@ class MainCommand extends Component {
|
|||||||
<Send />
|
<Send />
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
<ToastsContainer store={ToastsStore} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,12 +112,22 @@
|
|||||||
top: 0;
|
top: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
opacity: 0.5;
|
opacity: 0.3;
|
||||||
|
|
||||||
z-index: -1;
|
z-index: -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.notificationCont {
|
||||||
|
background-color: #4bb543 !important;
|
||||||
|
color: white;
|
||||||
|
padding: 1em;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
margin: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
.hidden {
|
.hidden {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user