[Refactor] Separate Logics directory.
This commit is contained in:
53
src-ui/logics/useStartPython.js
Normal file
53
src-ui/logics/useStartPython.js
Normal file
@@ -0,0 +1,53 @@
|
||||
import { Command } from "@tauri-apps/api/shell";
|
||||
import { store } from "@store";
|
||||
|
||||
import { useMainFunction } from "./useMainFunction";
|
||||
|
||||
export const useStartPython = () => {
|
||||
const {
|
||||
updateTranslationStatus,
|
||||
updateTranscriptionSendStatus,
|
||||
updateTranscriptionReceiveStatus,
|
||||
} = useMainFunction();
|
||||
|
||||
const routes = {
|
||||
"/controller/callback_toggle_translation": updateTranslationStatus,
|
||||
"/controller/callback_toggle_transcription_send": updateTranscriptionSendStatus,
|
||||
"/controller/callback_toggle_transcription_receive": updateTranscriptionReceiveStatus,
|
||||
};
|
||||
|
||||
const receiveRoutes = (parsed_data) => {
|
||||
if (parsed_data.status === "ok") {
|
||||
const route = routes[parsed_data.id];
|
||||
if (route) {
|
||||
route({ data: parsed_data.data });
|
||||
} else {
|
||||
console.error(`Invalid path: ${parsed_data.id}`);
|
||||
}
|
||||
} else {
|
||||
console.log("Received data status is not 'ok'.", parsed_data);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
const asyncStartPython = async () => {
|
||||
const command = Command.sidecar("bin/test");
|
||||
command.on("error", error => console.error(`error: "${error}"`));
|
||||
command.stdout.on("data", (line) => {
|
||||
let parsed_data = "";
|
||||
try {
|
||||
parsed_data = JSON.parse(line);
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
parsed_data = line;
|
||||
}
|
||||
console.log("from python:", parsed_data);
|
||||
receiveRoutes(parsed_data);
|
||||
});
|
||||
command.stderr.on("data", line => console.error("stderr:", line));
|
||||
const backend_subprocess = await command.spawn();
|
||||
store.backend_subprocess = backend_subprocess;
|
||||
};
|
||||
|
||||
return { asyncStartPython };
|
||||
};
|
||||
Reference in New Issue
Block a user