diff --git a/package.json b/package.json index b3f36c9c..72fc4913 100644 --- a/package.json +++ b/package.json @@ -18,13 +18,13 @@ "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", "@muetab/quotes": "^1.0.0", + "lodash.merge": "4.6.2", "react": "^16.13.1", "react-clock": "^2.4.0", "react-dom": "^16.13.1", "react-modal": "^3.11.2", "react-toastify": "^6.0.8", - "supports-webp": "^2.0.1", - "lodash.merge": "4.6.2" + "supports-webp": "^2.0.1" }, "devDependencies": { "react-scripts": "3.4.3", diff --git a/src/components/modals/Settings.jsx b/src/components/modals/Settings.jsx index f5656217..e4202ecb 100644 --- a/src/components/modals/Settings.jsx +++ b/src/components/modals/Settings.jsx @@ -103,6 +103,7 @@ export default class Settings extends React.PureComponent { + diff --git a/src/components/widgets/Greeting.jsx b/src/components/widgets/Greeting.jsx index 29215912..3f986632 100644 --- a/src/components/widgets/Greeting.jsx +++ b/src/components/widgets/Greeting.jsx @@ -6,7 +6,7 @@ export default class Greeting extends React.PureComponent { this.state = { greeting: '' }; - } + } doEvents(time, message) { if (localStorage.getItem('events') === 'false') return message; diff --git a/src/components/widgets/Search.jsx b/src/components/widgets/Search.jsx index 9f143a9c..5deb6be2 100644 --- a/src/components/widgets/Search.jsx +++ b/src/components/widgets/Search.jsx @@ -1,8 +1,26 @@ import React from 'react'; import SearchIcon from '@material-ui/icons/Search'; +import MicIcon from '@material-ui/icons/Mic'; + const searchEngines = require('../../modules/searchEngines.json'); export default class Search extends React.PureComponent { + constructor(...args) { + super(...args); + this.state = { + url: '', + query: '' + }; + } + + startSpeechRecognition() { + if (localStorage.getItem('voiceSearch') === 'false') return; + const voiceSearch = new window.webkitSpeechRecognition(); + voiceSearch.start(); + voiceSearch.onresult = (event) => document.getElementById('searchtext').value = event.results[0][0].transcript; + voiceSearch.onend = () => setTimeout(() => window.location.href = this.state.url + `?${this.state.query}=` + document.getElementById('searchtext').value, 1000); + } + render() { if (localStorage.getItem('searchBar') === 'false') return null; @@ -24,10 +42,20 @@ export default class Search extends React.PureComponent { window.location.href = url + `?${query}=` + value; }; + let microphone = null; + if (localStorage.getItem('voiceSearch') === 'true') { + this.setState({ + url: url, + query: query + }); + microphone = this.startSpeechRecognition()}/>; + } + return (