Config Page: Device Tab. threshold component. fix problem that the input component focused out when input something each time. Set threshold data when started python.
82 lines
2.3 KiB
JavaScript
82 lines
2.3 KiB
JavaScript
import {
|
|
useMessageLogsStatus,
|
|
} from "@store";
|
|
|
|
import { useStdoutToPython } from "@logics/useStdoutToPython";
|
|
|
|
export const useMessage = () => {
|
|
const { currentMessageLogsStatus, addMessageLogsStatus, updateMessageLogsStatus } = useMessageLogsStatus();
|
|
const { asyncStdoutToPython } = useStdoutToPython();
|
|
|
|
const sendMessage = (message) => {
|
|
const uuid = crypto.randomUUID();
|
|
const send_message_object = {
|
|
id: uuid,
|
|
message: message,
|
|
};
|
|
asyncStdoutToPython("/controller/callback_messagebox_send", send_message_object);
|
|
|
|
addMessageLogsStatus({
|
|
id: uuid,
|
|
category: "sent",
|
|
status: "pending",
|
|
created_at: generateTimeData(),
|
|
messages: {
|
|
original: message,
|
|
translated: [],
|
|
},
|
|
});
|
|
};
|
|
|
|
const updateSentMessageLogById = (payload) => {
|
|
updateMessageLogsStatus(updateItemById(data.id, payload.translation));
|
|
};
|
|
const addSentMessageLog = (payload) => {
|
|
const message_object = generateMessageObject(payload, "sent");
|
|
addMessageLogsStatus(message_object);
|
|
};
|
|
const addReceivedMessageLog = (payload) => {
|
|
const message_object = generateMessageObject(payload, "received");
|
|
addMessageLogsStatus(message_object);
|
|
};
|
|
|
|
return {
|
|
currentMessageLogsStatus,
|
|
sendMessage,
|
|
updateSentMessageLogById,
|
|
addSentMessageLog,
|
|
addReceivedMessageLog,
|
|
};
|
|
};
|
|
|
|
const generateTimeData = () => {
|
|
const data = new Date().toLocaleTimeString(
|
|
"ja-JP",
|
|
{hour12: false, hour: "2-digit", minute: "2-digit"},
|
|
);
|
|
return data;
|
|
};
|
|
|
|
const generateMessageObject = (data, category) => {
|
|
return {
|
|
id: crypto.randomUUID(),
|
|
created_at: generateTimeData(),
|
|
category: category,
|
|
status: "ok",
|
|
messages: {
|
|
original: data.message,
|
|
translated: data.translation,
|
|
},
|
|
};
|
|
};
|
|
|
|
|
|
const updateItemById = (id, translated_data) => (prev_items) => {
|
|
return prev_items.map(item => {
|
|
if (item.id === id) {
|
|
item.status = "ok";
|
|
item.messages.translated = translated_data;
|
|
}
|
|
return item;
|
|
});
|
|
}; |