]> Repos - mime-chat/commitdiff
add ipcRenderer render-audio event to window object
authorriqo <hernandeze2@xavier.edu>
Fri, 6 Nov 2020 22:06:08 +0000 (16:06 -0600)
committerriqo <hernandeze2@xavier.edu>
Fri, 6 Nov 2020 22:07:19 +0000 (16:07 -0600)
src/background.ts
src/components/AI/index.vue
src/preload.ts

index 92040467474e0d7ca9904d5ef83a23cb46e29253..2aaec657e8478927f2597dd1701c9c1979ccad8f 100644 (file)
@@ -6,7 +6,9 @@ import installExtension, { VUEJS_DEVTOOLS } from "electron-devtools-installer";
 const isDevelopment = process.env.NODE_ENV !== "production";
 import * as path from "path";
 import { SpeechRecorder } from "speech-recorder";
-import WebSocket from "ws";
+
+// TODO: connect To Crimata-BE
+// import WebSocket from "ws";
 
 // const ws = new WebSocket("ws://localhost:8080");
 // ws.on("open", function open() {
@@ -16,18 +18,8 @@ import WebSocket from "ws";
 //   console.log("received message", message);
 // });
 //
-// const recorder = new SpeechRecorder();
-//
-// recorder.start({
-//   onAudio: (audio: object, speech: boolean) => {
-//     if (speech) {
-//       console.log(audio);
-//       ws.send(audio);
-//     }
-//     console.log("recording");
-//     // writeStream.write(audio);
-//   }
-// });
+
+const recorder = new SpeechRecorder();
 
 // Keep a global reference of the window object, if you don't, the window will
 // be closed automatically when the JavaScript object is garbage collected.
@@ -62,6 +54,22 @@ function createWindow() {
     win.loadURL("app://./index.html");
   }
 
+  win.webContents.on('did-finish-load', () => {
+    if (win) {
+      recorder.start({
+        onAudio: (audio: object, speech: boolean) => {
+          if (win) {
+            win.webContents.send('render-audio', { data: audio })
+          }
+          if (speech) {
+            // TODO: send audio to crimata BE
+            // ws.send(audio);
+          }
+        }
+      });
+    }
+  })
+
   win.on("closed", () => {
     win = null;
   });
index 913946126c6049e850ca8633eb9939def013f953..02bb6a9575be824b5e4295fb38c97006850bde0c 100644 (file)
@@ -19,6 +19,7 @@
       <feComposite in="SourceGraphic" />
     </filter>
   </defs>
+
   <g transform="matrix(1, 0, 0, 1, 0, 0)" filter="url(#Rectangle_410)">
     <rect
       id="Rectangle_410-2"
 import { defineComponent } from "vue";
 export default defineComponent({
   name: "AI",
+  setup() {
+    window.ipcRenderer.on("render-audio", (event, audio) => {
+      console.log(audio);
+    });
+  },
 });
 </script>
index a5c911d1f02f5f251dbd00c956e977c6d0efb830..9e33238698645bef7cf307c134d98d35ca8d5ceb 100644 (file)
@@ -1,27 +1,8 @@
 // All of the Node.js APIs are available in the preload process.
 // It has the same sandbox as a Chrome extension.
-import ipcRenderer from "electron";
+import { ipcRenderer } from "electron";
 
-process.once("loaded", () => {
-  window.addEventListener("message", event => {
-    // do something with custom event
-    const message = event.data;
-
-    if (message.myTypeField === "handle-audio-stream") {
-      ipcRenderer.send("audio-stream", message);
-    }
-  });
-});
-
-window.addEventListener("DOMContentLoaded", () => {
-  const replaceText = (selector: string, text: string) => {
-    const element = document.getElementById(selector);
-    if (element) {
-      element.innerText = text;
-    }
-  };
-
-  for (const type of ["chrome", "node", "electron"]) {
-    replaceText(`${type}-version`, (process.versions as any)[type]);
-  }
-});
+interface Window {
+  ipcRenderer: typeof ipcRenderer;
+}
+window.ipcRenderer = ipcRenderer;