From 079604fdcabf31fb8abbafdc62aa9f2151f1a832 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 25 Jun 2024 12:47:00 +0200 Subject: [PATCH] [MIRROR] PDA messenger & message monitor show actual emoji, other fixes (#28346) * PDA messenger & message monitor show actual emoji, other fixes (#83819) ## About The Pull Request Makes pda messages actually appear in the messenger UI, as was supposed to be the case way back in #75820 Does the same for tcomm's message server monitor, making sure anyone trying to view pda messages is actually able to get a cohesive idea of what the message actually contained. Also a couple of other small fixes, listed in the changelogs ![image](https://github.com/tgstation/tgstation/assets/25628932/6ee5fd4a-d1bb-4c0a-9563-18d6b5541540) ![image](https://github.com/tgstation/tgstation/assets/25628932/65f74316-ac2e-4e28-9c5c-8ba4a9c22fcd) Fixes #77856 ## Why It's Good For The Game Consistency, fix bugs ## Changelog :cl: Fluffles fix: emoji show up in the messenger UI fix: emoji show up in the message server monitor UI fix: you can adjust your pda ringtone in-game fix: having an empty pAI in your pda doesn't break ringtones fix: pdas specifically set to not consume power don't constantly switch to messenger fix: you can use the quick-reply button for messages while resting fix: deadchat pda messages show the imprinted sender's name instead of whoever is holding the pda fix: emoji show up in deadchat pda messages /:cl: * PDA messenger & message monitor show actual emoji, other fixes --------- Co-authored-by: FlufflesTheDog --- .../machinery/telecomms/computers/message.dm | 3 +++ .../programs/messenger/messenger_program.dm | 18 ++++++++++-------- .../tgui/interfaces/MessageMonitor.tsx | 7 ++++++- .../interfaces/NtosMessenger/ChatScreen.tsx | 7 ++++--- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm index 1998654df00..a38f18231fb 100644 --- a/code/game/machinery/telecomms/computers/message.dm +++ b/code/game/machinery/telecomms/computers/message.dm @@ -268,6 +268,9 @@ ui = new(user, src, "MessageMonitor", name) ui.open() +/obj/machinery/computer/message_monitor/ui_assets(mob/user) + . = ..() + . += get_asset_datum(/datum/asset/spritesheet/chat) #undef MSG_MON_SCREEN_MAIN #undef MSG_MON_SCREEN_LOGS diff --git a/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm b/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm index 557a610fa75..ae0dc9ea586 100644 --- a/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm +++ b/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm @@ -166,7 +166,8 @@ if("PDA_ringSet") var/mob/living/user = usr var/new_ringtone = tgui_input_text(user, "Enter a new ringtone", "Ringtone", ringtone, encode = FALSE) - if(!in_range(computer, user) || computer.loc != user) + if(!computer.can_interact(user)) + computer.balloon_alert(user, "can't reach!") return FALSE return set_ringtone(new_ringtone, user) @@ -381,6 +382,10 @@ data["sending_virus"] = sending_virus return data +/datum/computer_file/program/messenger/ui_assets(mob/user) + . = ..() + . += get_asset_datum(/datum/asset/spritesheet/chat) + ////////////////////// // MESSAGE HANDLING // ////////////////////// @@ -463,7 +468,7 @@ if(sender && !check_pda_message_against_filter(message, sender)) return null - return message + return emoji_parse(message) /// Sends a message to targets via PDA. When sending to everyone, set `everyone` to true so the message is formatted accordingly /datum/computer_file/program/messenger/proc/send_message(atom/source, message, list/targets, everyone = FALSE) @@ -632,10 +637,8 @@ if(rigged) log_bomber(sender, "sent a rigged PDA message (Name: [fake_name]. Job: [fake_job]) to [english_list(stringified_targets)] [!is_special_character(sender) ? "(SENT BY NON-ANTAG)" : ""]") - message = emoji_parse(message) //already sent- this just shows the sent emoji as one to the sender in the to_chat - // Show it to ghosts - var/ghost_message = span_game_say("[span_name("[source]")] [rigged ? "(as [span_name(fake_name)]) Rigged " : ""]PDA Message --> [span_name("[signal.format_target()]")]: \"[signal.format_message()]\"") + var/ghost_message = span_game_say("[span_name(signal.format_sender())] [rigged ? "(as [span_name(fake_name)]) Rigged " : ""]PDA Message --> [span_name("[signal.format_target()]")]: \"[signal.format_message()]\"") var/list/message_listeners = GLOB.dead_player_list + GLOB.current_observers_list for(var/mob/listener as anything in message_listeners) if(!(get_chat_toggles(listener) & CHAT_GHOSTPDA)) @@ -682,7 +685,7 @@ viewing_messages_of = REF(chat) var/list/mob/living/receievers = list() - if(computer.inserted_pai) + if(computer.inserted_pai && computer.inserted_pai.pai) receievers += computer.inserted_pai.pai if(computer.loc && isliving(computer.loc)) receievers += computer.loc @@ -712,7 +715,6 @@ sender_title = "[sender_title]" var/inbound_message = "[signal.format_message()]" - inbound_message = emoji_parse(inbound_message) var/photo_message = signal.data["photo"] ? " (Photo Attached)" : "" to_chat(messaged_mob, span_infoplain("[icon2html(computer, messaged_mob)] PDA message from [sender_title], \"[inbound_message]\"[photo_message] [reply]")) @@ -731,7 +733,7 @@ if(QDELETED(src)) return - if(!usr.can_perform_action(computer, FORBID_TELEKINESIS_REACH)) + if(!usr.can_perform_action(computer, FORBID_TELEKINESIS_REACH | ALLOW_RESTING)) return // send an activation message and open the messenger diff --git a/tgui/packages/tgui/interfaces/MessageMonitor.tsx b/tgui/packages/tgui/interfaces/MessageMonitor.tsx index ed3afac07a2..fb237bb786d 100644 --- a/tgui/packages/tgui/interfaces/MessageMonitor.tsx +++ b/tgui/packages/tgui/interfaces/MessageMonitor.tsx @@ -133,7 +133,12 @@ const MessageLogsScreen = (props) => { {message.sender} {message.recipient} - {message.message} + + + ))} diff --git a/tgui/packages/tgui/interfaces/NtosMessenger/ChatScreen.tsx b/tgui/packages/tgui/interfaces/NtosMessenger/ChatScreen.tsx index b168b057297..bdbd24adb25 100644 --- a/tgui/packages/tgui/interfaces/NtosMessenger/ChatScreen.tsx +++ b/tgui/packages/tgui/interfaces/NtosMessenger/ChatScreen.tsx @@ -1,5 +1,4 @@ import { BooleanLike } from 'common/react'; -import { decodeHtmlEntities } from 'common/string'; import { Component, createRef, RefObject } from 'react'; import { useBackend } from '../../backend'; @@ -402,12 +401,14 @@ const ChatMessage = (props: ChatMessageProps) => { const { message, everyone, outgoing, photoPath, timestamp, onPreviewImage } = props; - const displayMessage = decodeHtmlEntities(message); + const messageHTML = { + __html: `${message}`, + }; return ( - {displayMessage} +