diff --git a/package-lock.json b/package-lock.json index b69e0b4c..f6d3e2e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "eslint-plugin-react": "^7.34.2", "i18next": "^23.11.5", "jotai": "^2.8.3", + "js-base64": "^3.7.7", "react": "^18.2.0", "react-dom": "^18.2.0", "react-i18next": "^14.1.2", @@ -4360,6 +4361,11 @@ } } }, + "node_modules/js-base64": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", + "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", diff --git a/package.json b/package.json index d3e91e6f..6834071a 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "eslint-plugin-react": "^7.34.2", "i18next": "^23.11.5", "jotai": "^2.8.3", + "js-base64": "^3.7.7", "react": "^18.2.0", "react-dom": "^18.2.0", "react-i18next": "^14.1.2", diff --git a/src-python/utils.py b/src-python/utils.py index 05a41b7e..f1ab1c5e 100644 --- a/src-python/utils.py +++ b/src-python/utils.py @@ -73,13 +73,5 @@ def splitList(lst:list, split_count:int, to_shuffle:bool=False): split_lists.append(sub_list) return split_lists -def encodeUtf8(data:str) -> dict: - data = {i: byte for i, byte in enumerate(data.encode('UTF-8'))} - return data - -def decodeUtf8(data:dict) -> str: - data = bytes(data.values()).decode("UTF-8") - return data - def printLog(log:str, data:Any=None) -> None: print(json.dumps({"status":348, "log":log, "data":str(data)}), flush=True) \ No newline at end of file diff --git a/src-python/webui_controller.py b/src-python/webui_controller.py index f10a63fb..12660461 100644 --- a/src-python/webui_controller.py +++ b/src-python/webui_controller.py @@ -5,7 +5,7 @@ from subprocess import Popen from threading import Thread from config import config from model import model -from utils import getKeyByValue, isUniqueStrings, decodeUtf8, encodeUtf8, printLog +from utils import getKeyByValue, isUniqueStrings, printLog # Common class DownloadSoftwareProgressBar: @@ -289,7 +289,7 @@ class ChatMessage: def send(self, data): id = data["id"] - message = decodeUtf8(data["message"]) + message = data["message"] if len(message) > 0: # addSentMessageLog(message) translation = "" @@ -329,8 +329,6 @@ class ChatMessage: translation = f" ({translation})" model.logger.info(f"[SENT] {message}{translation}") - message = encodeUtf8(message) - translation = encodeUtf8(translation) return {"status":200, "result":{ "id":id, diff --git a/src-python/webui_mainloop.py b/src-python/webui_mainloop.py index c38453cc..9adb6b8c 100644 --- a/src-python/webui_mainloop.py +++ b/src-python/webui_mainloop.py @@ -3,7 +3,8 @@ import json import time from config import config import webui_controller as controller -from utils import printLog, encodeUtf8 +from utils import printLog +import base64 config_mapping = { "/config/version": "VERSION", @@ -288,6 +289,8 @@ def main(): if received_data: endpoint = received_data.get("endpoint", None) data = received_data.get("data", None) + if data is not None: + data = json.loads(base64.b64decode(data).decode('utf-8')) with open('process.log', 'a') as f: f.write(f"received_data : endpoint: {endpoint}, data:{data}\n") @@ -367,7 +370,7 @@ if __name__ == "__main__": match endpoint: case "/controller/callback_messagebox_send": - data = {"id":"123456", "message":encodeUtf8("テスト")} + data = {"id":"123456", "message":"テスト"} case "/controller/set_your_language_and_country": data = {"language": "English", "country": "Hong Kong"} case "/controller/set_target_language_and_country": diff --git a/src-ui/logics/useMessage.js b/src-ui/logics/useMessage.js index 8e74c081..ebdb1b19 100644 --- a/src-ui/logics/useMessage.js +++ b/src-ui/logics/useMessage.js @@ -7,14 +7,13 @@ import { useStdoutToPython } from "./useStdoutToPython"; export const useMessage = () => { const { currentMessageLogsStatus, addMessageLogsStatus, updateMessageLogsStatus } = useMessageLogsStatus(); const { asyncStdoutToPython } = useStdoutToPython(); - const encoder = new TextEncoder(); return { sendMessage: (message) => { const uuid = crypto.randomUUID(); const send_message_object = { id: uuid, - message: encoder.encode(message), + message: message, }; asyncStdoutToPython("/controller/callback_messagebox_send", send_message_object); diff --git a/src-ui/logics/useStdoutToPython.js b/src-ui/logics/useStdoutToPython.js index cde6c121..553cf207 100644 --- a/src-ui/logics/useStdoutToPython.js +++ b/src-ui/logics/useStdoutToPython.js @@ -1,9 +1,10 @@ import { store } from "@store"; +import { encode } from 'js-base64' export const useStdoutToPython = () => { const asyncStdoutToPython = async (path, value) => { let send_object = { endpoint: path }; - if (value) send_object.data = value; + if (value) send_object.data = encode(value); // send to python const backend_subprocess = store.backend_subprocess;