From 38590f8278dd6f9e98f511485fbf72b80e747f7f Mon Sep 17 00:00:00 2001 From: David Ralph Date: Tue, 13 Oct 2020 13:02:48 +0100 Subject: [PATCH 01/17] fix translation support on event greetings --- src/components/widgets/Greeting.jsx | 6 +++--- src/components/widgets/Quote.jsx | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/components/widgets/Greeting.jsx b/src/components/widgets/Greeting.jsx index 21729bf9..29215912 100644 --- a/src/components/widgets/Greeting.jsx +++ b/src/components/widgets/Greeting.jsx @@ -15,9 +15,9 @@ export default class Greeting extends React.PureComponent { const m = time.getMonth(); const d = time.getDate(); - if (m === 11 && d === 25) message = 'Merry Christmas'; // If it's December 25th, set the greeting string to "Merry Christmas" - else if (m === 0 && d === 1) message = 'Happy new year'; // If the date is January 1st, set the greeting string to "Happy new year" - else if (m === 9 && d === 31) message = 'Happy Halloween'; // If it's October 31st, set the greeting string to "Happy Halloween" + if (m === 11 && d === 25) message = this.props.language.christmas; // If it's December 25th, set the greeting string to "Merry Christmas" + else if (m === 0 && d === 1) message = this.props.language.newyear; // If the date is January 1st, set the greeting string to "Happy new year" + else if (m === 9 && d === 31) message = this.props.language.halloween; // If it's October 31st, set the greeting string to "Happy Halloween" return message; } diff --git a/src/components/widgets/Quote.jsx b/src/components/widgets/Quote.jsx index f8438508..71db3998 100644 --- a/src/components/widgets/Quote.jsx +++ b/src/components/widgets/Quote.jsx @@ -76,9 +76,11 @@ export default class Quote extends React.PureComponent { } render() { - const copy = (localStorage.getItem('copyButton') === 'false') ? null : this.copyQuote()}>; - const tweet = (localStorage.getItem('tweetButton') === 'false') ? null : - window.open(`https://twitter.com/intent/tweet?text=${this.state.quote} - ${this.state.author} on @getmue`, '_blank').focus()}/>; + let copy = this.copyQuote()}>; + if (localStorage.getItem('copyButton') === 'false') copy = null; + + let tweet = window.open(`https://twitter.com/intent/tweet?text=${this.state.quote} - ${this.state.author} on @getmue`, '_blank').focus()}/> + if (localStorage.getItem('tweetButton') === 'false') tweet = null; return (
From 44281c2449125dc4861e573fe96d8429dcab35bf Mon Sep 17 00:00:00 2001 From: David Ralph Date: Tue, 13 Oct 2020 15:30:53 +0100 Subject: [PATCH 02/17] add experimental voice search feature --- package.json | 4 ++-- src/components/modals/Settings.jsx | 1 + src/components/widgets/Greeting.jsx | 2 +- src/components/widgets/Search.jsx | 30 ++++++++++++++++++++++++++++- src/scss/modules/_search.scss | 4 ++++ src/translations/en.json | 3 ++- 6 files changed, 39 insertions(+), 5 deletions(-) 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 (