diff --git a/packages/frontend/src/pages/chat/XMessage.vue b/packages/frontend/src/pages/chat/XMessage.vue
index b1be8d5fd4..3eb2ae8092 100644
--- a/packages/frontend/src/pages/chat/XMessage.vue
+++ b/packages/frontend/src/pages/chat/XMessage.vue
@@ -25,8 +25,8 @@ SPDX-License-Identifier: AGPL-3.0-only
- {{ message.toRoom?.name }}
- @{{ message.toUser?.username }}
+ {{ message.toRoom.name }}
+ @{{ message.toUser.username }}
-
+
r.user?.id === $i.id && r.reaction === record.reaction)) {
+ if (!props.message.reactions.some(r => r.user.id === $i.id && r.reaction === record.reaction)) {
sound.playMisskeySfx('reaction');
misskeyApi('chat/messages/react', {
messageId: props.message.id,
diff --git a/packages/frontend/src/pages/chat/room.members.vue b/packages/frontend/src/pages/chat/room.members.vue
index 80e387d179..5a574068cb 100644
--- a/packages/frontend/src/pages/chat/room.members.vue
+++ b/packages/frontend/src/pages/chat/room.members.vue
@@ -14,8 +14,8 @@ SPDX-License-Identifier: AGPL-3.0-only
-
-
+
+
diff --git a/packages/frontend/src/pages/chat/room.vue b/packages/frontend/src/pages/chat/room.vue
index 4932ac722d..664f421c5c 100644
--- a/packages/frontend/src/pages/chat/room.vue
+++ b/packages/frontend/src/pages/chat/room.vue
@@ -178,10 +178,10 @@ async function initialize() {
connection.value = useStream().useChannel('chatUser', {
otherId: user.value.id,
});
- connection.value?.on('message', onMessage);
- connection.value?.on('deleted', onDeleted);
- connection.value?.on('react', onReact);
- connection.value?.on('unreact', onUnreact);
+ connection.value.on('message', onMessage);
+ connection.value.on('deleted', onDeleted);
+ connection.value.on('react', onReact);
+ connection.value.on('unreact', onUnreact);
} else {
const [r, m] = await Promise.all([
misskeyApi('chat/rooms/show', { roomId: props.roomId }),
@@ -272,10 +272,10 @@ function onReact(ctx: Parameters[0] | Parameters[0]) {
const message = messages.value.find(m => m.id === ctx.messageId);
- if (message && ctx.user != null) {
+ if (message) {
const index = message.reactions.findIndex(r => r.reaction === ctx.reaction && r.user.id === ctx.user!.id);
if (index !== -1) {
message.reactions.splice(index, 1);
@@ -318,12 +318,14 @@ async function inviteUser() {
const invitee = await os.selectUser({ includeSelf: false, localOnly: true });
os.apiWithDialog('chat/rooms/invitations/create', {
- roomId: room.value?.id,
+ roomId: room.value.id,
userId: invitee.id,
});
}
async function leaveRoom() {
+ if (room.value == null) return;
+
const { canceled } = await os.confirm({
type: 'warning',
text: i18n.ts.areYouSure,
@@ -331,7 +333,7 @@ async function leaveRoom() {
if (canceled) return;
misskeyApi('chat/rooms/leave', {
- roomId: room.value?.id,
+ roomId: room.value.id,
});
router.push('/chat');
}