Merge branch 'misskey-develop' into merge/2025-03-24

# Conflicts:
#	.github/workflows/storybook.yml
This commit is contained in:
Hazelnoot 2025-03-26 10:54:55 -04:00
commit 11e578c10d
4 changed files with 18 additions and 6 deletions

View file

@ -311,7 +311,7 @@ export type GlobalEvents = {
name: 'notesStream';
payload: Serialized<Packed<'Note'>>;
};
chat: {
chatUser: {
name: `chatUserStream:${MiUser['id']}-${MiUser['id']}`;
payload: EventTypesToEventPayload<ChatEventTypes>;
};

View file

@ -35,7 +35,7 @@ class ChatRoomChannel extends Channel {
}
@bindThis
private async onEvent(data: GlobalEvents['chat']['payload']) {
private async onEvent(data: GlobalEvents['chatRoom']['payload']) {
this.send(data.type, data.body);
}

View file

@ -35,7 +35,7 @@ class ChatUserChannel extends Channel {
}
@bindThis
private async onEvent(data: GlobalEvents['chat']['payload']) {
private async onEvent(data: GlobalEvents['chatUser']['payload']) {
this.send(data.type, data.body);
}

View file

@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<div :class="[$style.root, { [$style.isMe]: isMe }]">
<MkAvatar :class="$style.avatar" :user="message.fromUser" :link="!isMe" :preview="false"/>
<div :class="$style.body">
<div :class="$style.body" @contextmenu.stop="onContextmenu">
<div v-if="!isMe && prefer.s['chat.showSenderName']" :class="$style.header"><MkUserName :user="message.fromUser"/></div>
<MkFukidashi :class="$style.fukidashi" :tail="isMe ? 'right' : 'left'" :accented="isMe">
<div v-if="!message.isDeleted" :class="$style.content">
@ -60,6 +60,7 @@ import { computed, defineAsyncComponent, provide } from 'vue';
import * as mfm from 'mfm-js';
import * as Misskey from 'misskey-js';
import { url } from '@@/js/config.js';
import { isLink } from '@@/js/is-link.js';
import type { MenuItem } from '@/types/menu.js';
import { extractUrlFromMfm } from '@/utility/extract-url-from-mfm.js';
import MkUrlPreview from '@/components/MkUrlPreview.vue';
@ -121,7 +122,14 @@ function onReactionClick(record: Misskey.entities.ChatMessage['reactions'][0]) {
}
}
function showMenu(ev: MouseEvent) {
function onContextmenu(ev: MouseEvent) {
if (ev.target && isLink(ev.target as HTMLElement)) return;
if (window.getSelection()?.toString() !== '') return;
showMenu(ev, true);
}
function showMenu(ev: MouseEvent, contextmenu = false) {
const menu: MenuItem[] = [];
if (!isMe.value) {
@ -177,8 +185,12 @@ function showMenu(ev: MouseEvent) {
});
}
if (contextmenu) {
os.contextMenu(menu, ev);
} else {
os.popupMenu(menu, ev.currentTarget ?? ev.target);
}
}
</script>
<style lang="scss" module>