aboutsummaryrefslogtreecommitdiff
path: root/src/client/views
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views')
-rw-r--r--src/client/views/GlobalKeyHandler.ts21
-rw-r--r--src/client/views/Main.scss1
-rw-r--r--src/client/views/MainView.tsx11
-rw-r--r--src/client/views/nodes/DocumentView.tsx16
4 files changed, 25 insertions, 24 deletions
diff --git a/src/client/views/GlobalKeyHandler.ts b/src/client/views/GlobalKeyHandler.ts
index c3e6ae6c8..0989e8db1 100644
--- a/src/client/views/GlobalKeyHandler.ts
+++ b/src/client/views/GlobalKeyHandler.ts
@@ -73,9 +73,11 @@ export default class KeyManager {
SelectionManager.DeselectAll();
DictationManager.Controls.stop();
if (main.dictationOverlayVisible) {
+ main.cancelDictationFade();
main.dictationOverlayVisible = false;
+ main.isListening = true;
+ main.dictatedPhrase = "";
main.dictationSuccess = undefined;
- main.cancelDictationFade();
}
break;
case "delete":
@@ -110,22 +112,7 @@ export default class KeyManager {
switch (keyname) {
case " ":
- let main = MainView.Instance;
- main.dictationOverlayVisible = true;
-
- main.isListening = true;
- // let printer = (results: any) => console.log(results);
- let command = await DictationManager.Controls.listen();
- main.isListening = false;
-
- if (!command) {
- break;
- }
-
- main.dictatedPhrase = command = command.toLowerCase();
- main.dictationSuccess = await DictationManager.Commands.execute(command);
- main.initiateDictationFade();
-
+ DictationManager.Controls.listen({ tryExecute: true });
stopPropagation = true;
preventDefault = true;
}
diff --git a/src/client/views/Main.scss b/src/client/views/Main.scss
index 8e57b88c3..f76abaff3 100644
--- a/src/client/views/Main.scss
+++ b/src/client/views/Main.scss
@@ -292,7 +292,6 @@ ul#add-options-list {
width: 100%;
height: 100%;
position: absolute;
- background: darkslategray;
z-index: 999;
transition: 0.5s all ease;
pointer-events: none;
diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx
index 4443eea6d..383efa1e3 100644
--- a/src/client/views/MainView.tsx
+++ b/src/client/views/MainView.tsx
@@ -1,7 +1,7 @@
import { IconName, library } from '@fortawesome/fontawesome-svg-core';
import { faArrowDown, faCloudUploadAlt, faArrowUp, faClone, faCheck, faPlay, faPause, faCaretUp, faLongArrowAltRight, faCommentAlt, faCut, faExclamation, faFilePdf, faFilm, faFont, faGlobeAsia, faPortrait, faMusic, faObjectGroup, faPenNib, faRedoAlt, faTable, faThumbtack, faTree, faUndoAlt, faCat, faBolt } from '@fortawesome/free-solid-svg-icons';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { action, computed, configure, observable, runInAction, reaction, trace } from 'mobx';
+import { action, computed, configure, observable, runInAction, reaction, trace, autorun } from 'mobx';
import { observer } from 'mobx-react';
import "normalize.css";
import * as React from 'react';
@@ -167,6 +167,8 @@ export class MainView extends React.Component {
}
}
+ autorun(() => console.log(`this.isListening = ${this.isListening}`));
+
library.add(faFont);
library.add(faExclamation);
library.add(faPortrait);
@@ -523,7 +525,7 @@ export class MainView extends React.Component {
render() {
let display = this.dictationOverlayVisible;
let success = this.dictationSuccess;
- let result = this.isListening ? "Listening..." : `"${this.dictatedPhrase}"`;
+ let result = this.isListening ? DictationManager.placeholder : `"${this.dictatedPhrase}"`;
return (
<div id="main-div">
<div
@@ -536,7 +538,10 @@ export class MainView extends React.Component {
>{result}</div>
<div
className={"dictation-prompt-overlay"}
- style={{ opacity: display ? 0.4 : 0 }}
+ style={{
+ opacity: display ? 0.4 : 0,
+ backgroundColor: this.isListening ? "red" : "darkslategrey"
+ }}
/>
<DocumentDecorations />
{this.mainContent}
diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx
index 1d9cb3c80..a415aefda 100644
--- a/src/client/views/nodes/DocumentView.tsx
+++ b/src/client/views/nodes/DocumentView.tsx
@@ -38,6 +38,7 @@ import "./DocumentView.scss";
import { FormattedTextBox } from './FormattedTextBox';
import React = require("react");
import { DictationManager } from '../../util/DictationManager';
+import { MainView } from '../MainView';
const JsxParser = require('react-jsx-parser').default; //TODO Why does this need to be imported like this?
library.add(fa.faTrash);
@@ -536,9 +537,18 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
}
listen = async () => {
- let options = { continuous: { indefinite: true }, delimiter: " " };
- let transcript = await DictationManager.Controls.listen(options);
- transcript && (Doc.GetProto(this.props.Document).transcript = transcript);
+ let dataDoc = Doc.GetProto(this.props.Document);
+ let options = {
+ continuous: { indefinite: true },
+ delimiter: " ",
+ interimHandler: (results: string) => {
+ MainView.Instance.isListening = false;
+ MainView.Instance.dictationSuccess = true;
+ MainView.Instance.dictatedPhrase = results;
+ }
+ };
+ let final = await DictationManager.Controls.listen(options);
+ final && (dataDoc.transcript = final);
}
@action