[Update] Main Page: Message Logs. Add system message (Word Filter)

This commit is contained in:
Sakamoto Shiina
2024-12-26 15:35:41 +09:00
parent 775e92daf5
commit 92cb5801da
5 changed files with 60 additions and 12 deletions

View File

@@ -5,6 +5,7 @@ import styles from "./MessageContainer.module.scss";
import { MessageSubMenuContainer } from "./message_sub_menu_container/MessageSubMenuContainer"; import { MessageSubMenuContainer } from "./message_sub_menu_container/MessageSubMenuContainer";
import { useMessage } from "@logics_common"; import { useMessage } from "@logics_common";
import { useIsVisibleResendButton } from "@logics_main"; import { useIsVisibleResendButton } from "@logics_main";
export const MessageContainer = ({ messages, status, category, created_at }) => { export const MessageContainer = ({ messages, status, category, created_at }) => {
const { t } = useTranslation(); const { t } = useTranslation();
const { const {
@@ -22,7 +23,6 @@ export const MessageContainer = ({ messages, status, category, created_at }) =>
updateMessageInputValue(messages.original); updateMessageInputValue(messages.original);
}; };
const handleMouseEnter = () => { const handleMouseEnter = () => {
if (!is_locked) { if (!is_locked) {
setIsHovered(true); setIsHovered(true);
@@ -39,15 +39,20 @@ export const MessageContainer = ({ messages, status, category, created_at }) =>
setIsLocked(true); setIsLocked(true);
}; };
const is_translated_exist = messages.translated.length >= 1; const is_translated_exist = messages.translated?.length >= 1;
const is_pending = status === "pending"; const is_pending = status === "pending";
const is_sent_message = category === "sent"; const is_sent_message = category === "sent";
const category_text = is_sent_message ? t("main_page.message_log.sent") : t("main_page.message_log.received"); const is_system_message = category === "system";
const category_text = is_sent_message
? t("main_page.message_log.sent")
: is_system_message
? t("main_page.message_log.system")
: t("main_page.message_log.received");
const message_type_class_name = clsx({ const message_type_class_name = clsx({
[styles.sent_message]: is_sent_message, [styles.sent_message]: is_sent_message,
[styles.is_shown_resend_button]: currentIsVisibleResendButton.data, [styles.received_message]: !is_sent_message && !is_system_message,
[styles.received_message]: !is_sent_message, [styles.system_message]: is_system_message,
}); });
return ( return (
@@ -63,10 +68,13 @@ export const MessageContainer = ({ messages, status, category, created_at }) =>
{is_sent_message && is_pending && <span className={styles.loader}></span>} {is_sent_message && is_pending && <span className={styles.loader}></span>}
</div> </div>
<div className={clsx(styles.message_box, message_type_class_name)}> <div className={clsx(styles.message_box, message_type_class_name)}>
{is_translated_exist {is_system_message ? (
? <WithTranslatedMessages messages={messages} /> <p className={styles.message_main_system}>{messages.message}</p>
: <p className={styles.message_main}>{messages.original}</p> ) : is_translated_exist ? (
} <WithTranslatedMessages messages={messages} />
) : (
<p className={styles.message_main}>{messages.original}</p>
)}
</div> </div>
</div> </div>
{currentIsVisibleResendButton.data && is_sent_message && is_hovered ? ( {currentIsVisibleResendButton.data && is_sent_message && is_hovered ? (

View File

@@ -27,6 +27,11 @@
&.received_message { &.received_message {
align-items: start; align-items: start;
} }
&.system_message {
flex-direction: row;
align-items: center;
gap: 0.6rem;
}
} }
.info_box { .info_box {
@@ -85,3 +90,22 @@
user-select: text; user-select: text;
font-size: 1em; font-size: 1em;
} }
.system_message {
justify-content: center;
text-align: center;
.category {
color: var(--primary_300_color);
}
.message_box {
align-items: center;
}
.message_main_system {
font-size: 1.2rem;
color: var(--dark_500_color);
}
}

View File

@@ -30,6 +30,19 @@ export const useMessage = () => {
}); });
}; };
const addSystemMessageLog = (message) => {
const uuid = crypto.randomUUID();
const date = generateTimeData();
addMessageLogs({
id: uuid,
category: "system",
status: "system",
created_at: date,
messages: {message: message},
});
};
const updateSentMessageLogById = (payload) => { const updateSentMessageLogById = (payload) => {
updateMessageLogs(updateItemById(payload.id, payload.translation)); updateMessageLogs(updateItemById(payload.id, payload.translation));
}; };
@@ -52,6 +65,7 @@ export const useMessage = () => {
return { return {
currentMessageLogs, currentMessageLogs,
sendMessage, sendMessage,
addSystemMessageLog,
updateSentMessageLogById, updateSentMessageLogById,
addSentMessageLog, addSentMessageLog,
addReceivedMessageLog, addReceivedMessageLog,
@@ -85,7 +99,6 @@ const generateMessageObject = (data, category) => {
}; };
}; };
const updateItemById = (id, translated_data) => (current_items) => { const updateItemById = (id, translated_data) => (current_items) => {
return current_items.data.map(item => { return current_items.data.map(item => {
if (item.id === id) { if (item.id === id) {

View File

@@ -93,6 +93,7 @@ export const useReceiveRoutes = () => {
} = useLanguageSettings(); } = useLanguageSettings();
const { updateSelectableLanguageList } = useSelectableLanguageList(); const { updateSelectableLanguageList } = useSelectableLanguageList();
const { const {
addSystemMessageLog,
updateSentMessageLogById, updateSentMessageLogById,
addSentMessageLog, addSentMessageLog,
addReceivedMessageLog, addReceivedMessageLog,
@@ -382,6 +383,8 @@ export const useReceiveRoutes = () => {
return updated_list; return updated_list;
}); });
}, },
"/run/word_filter": (payload) => addSystemMessageLog(payload.message),
"/get/data/speaker_record_timeout": updateSpeakerRecordTimeout, "/get/data/speaker_record_timeout": updateSpeakerRecordTimeout,
"/set/data/speaker_record_timeout": updateSpeakerRecordTimeout, "/set/data/speaker_record_timeout": updateSpeakerRecordTimeout,