This commit is contained in:
Timothy Jaeryang Baek 2024-12-30 23:12:50 -08:00
parent f93c2e4a8d
commit 371201d820
3 changed files with 42 additions and 3 deletions

View File

@ -312,6 +312,8 @@ async def update_message_by_id(
try: try:
message = Messages.update_message_by_id(message_id, form_data) message = Messages.update_message_by_id(message_id, form_data)
message = Messages.get_message_by_id(message_id)
if message: if message:
await sio.emit( await sio.emit(
"channel-events", "channel-events",
@ -446,6 +448,7 @@ async def remove_reaction_by_id_and_user_id_and_name(
) )
message = Messages.get_message_by_id(message_id) message = Messages.get_message_by_id(message_id)
await sio.emit( await sio.emit(
"channel-events", "channel-events",
{ {

View File

@ -94,6 +94,8 @@
showUserProfile={messageIdx === 0 || showUserProfile={messageIdx === 0 ||
messageList.at(messageIdx - 1)?.user_id !== message.user_id} messageList.at(messageIdx - 1)?.user_id !== message.user_id}
onDelete={() => { onDelete={() => {
messages = messages.filter((m) => m.id !== message.id);
const res = deleteMessage(localStorage.token, message.channel_id, message.id).catch( const res = deleteMessage(localStorage.token, message.channel_id, message.id).catch(
(error) => { (error) => {
toast.error(error); toast.error(error);
@ -102,6 +104,13 @@
); );
}} }}
onEdit={(content) => { onEdit={(content) => {
messages = messages.map((m) => {
if (m.id === message.id) {
m.content = content;
}
return m;
});
const res = updateMessage(localStorage.token, message.channel_id, message.id, { const res = updateMessage(localStorage.token, message.channel_id, message.id, {
content: content content: content
}).catch((error) => { }).catch((error) => {
@ -111,11 +120,18 @@
}} }}
onReaction={(name) => { onReaction={(name) => {
if ( if (
message.reactions (message?.reactions ?? [])
.find((reaction) => reaction.name === name) .find((reaction) => reaction.name === name)
?.user_ids?.includes($user.id) ?? ?.user_ids?.includes($user.id) ??
false false
) { ) {
messages = messages.map((m) => {
if (m.id === message.id) {
m.reactions = m.reactions.filter((reaction) => reaction.name !== name);
}
return m;
});
const res = removeReaction( const res = removeReaction(
localStorage.token, localStorage.token,
message.channel_id, message.channel_id,
@ -126,6 +142,26 @@
return null; return null;
}); });
} else { } else {
messages = messages.map((m) => {
if (m.id === message.id) {
if (m.reactions) {
const reaction = m.reactions.find((reaction) => reaction.name === name);
if (reaction) {
reaction.user_ids.push($user.id);
reaction.count = reaction.user_ids.length;
} else {
m.reactions.push({
name: name,
user_ids: [$user.id],
count: 1
});
}
}
}
return m;
});
const res = addReaction(localStorage.token, message.channel_id, message.id, name).catch( const res = addReaction(localStorage.token, message.channel_id, message.id, name).catch(
(error) => { (error) => {
toast.error(error); toast.error(error);

View File

@ -266,9 +266,9 @@
>{/if} >{/if}
</div> </div>
{#if message.reactions.length > 0} {#if (message?.reactions ?? []).length > 0}
<div> <div>
<div class="flex items-center gap-1 mt-1 mb-2"> <div class="flex items-center flex-wrap gap-y-1.5 gap-1 mt-1 mb-2">
{#each message.reactions as reaction} {#each message.reactions as reaction}
<Tooltip content={`:${reaction.name}:`}> <Tooltip content={`:${reaction.name}:`}>
<button <button