wip
This commit is contained in:
		
							parent
							
								
									8a7264835e
								
							
						
					
					
						commit
						c61d6bd89a
					
				
					 2 changed files with 29 additions and 15 deletions
				
			
		|  | @ -47,21 +47,11 @@ import { $i } from '@/account'; | |||
| const props = defineProps<{ | ||||
| 	message: Misskey.entities.MessagingMessage; | ||||
| 	isGroup?: boolean; | ||||
| 	connection?: Misskey.ChannelConnection<Misskey.Channels['messaging']>; | ||||
| }>(); | ||||
| 
 | ||||
| const isMe = $computed(() => props.message.userId === $i?.id); | ||||
| const urls = $computed(() => props.message.text ? extractUrlFromMfm(mfm.parse(props.message.text)) : []); | ||||
| 
 | ||||
| if (props.connection) { | ||||
| 	props.connection?.on('read', (x) => { | ||||
| 		if (!props.isGroup) { | ||||
| 			props.message.isRead = true; | ||||
| 		} else { | ||||
| 			props.message.reads = [...props.message.reads, x.userId]; | ||||
| 		} | ||||
| 	}); | ||||
| } | ||||
| 
 | ||||
| function del() { | ||||
| 	os.api('messaging/messages/delete', { | ||||
|  |  | |||
|  | @ -47,7 +47,6 @@ import MkPagination from '@/components/ui/pagination.vue'; | |||
| import { Paging } from '@/components/ui/pagination.vue'; | ||||
| import XMessage from './messaging-room.message.vue'; | ||||
| import XForm from './messaging-room.form.vue'; | ||||
| import * as Acct from 'misskey-js/built/acct'; | ||||
| import { isBottom, onScrollBottom, scroll } from '@/scripts/scroll'; | ||||
| import * as os from '@/os'; | ||||
| import { stream } from '@/stream'; | ||||
|  | @ -108,6 +107,7 @@ async function fetch() { | |||
| 	}); | ||||
| 
 | ||||
| 	connection?.on('message', onMessage); | ||||
| 	connection?.on('read', onRead); | ||||
| 	connection?.on('deleted', onDeleted); | ||||
| 	connection?.on('typers', typers => { | ||||
| 		typers = typers.filter(u => u.id !== $i.id); | ||||
|  | @ -192,10 +192,35 @@ function onMessage(message) { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| function onRead(x) { | ||||
| 	if (user) { | ||||
| 		if (!Array.isArray(x)) x = [x]; | ||||
| 		for (const id of x) { | ||||
| 			if (pagingComponent.items.some(x => x.id == id)) { | ||||
| 				const exist = pagingComponent.items.map(x => x.id).indexOf(id); | ||||
| 				pagingComponent.items[exist] = { | ||||
| 					...pagingComponent.items[exist], | ||||
| 					isRead: true, | ||||
| 				}; | ||||
| 			} | ||||
| 		} | ||||
| 	} else if (group) { | ||||
| 		for (const id of x.ids) { | ||||
| 			if (pagingComponent.items.some(x => x.id == id)) { | ||||
| 				const exist = pagingComponent.items.map(x => x.id).indexOf(id); | ||||
| 				pagingComponent.items[exist] = { | ||||
| 					...pagingComponent.items[exist], | ||||
| 					reads: [...pagingComponent.items[exist].reads, x.userId] | ||||
| 				}; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| function onDeleted(id) { | ||||
| 	const msg = messages.find(m => m.id === id); | ||||
| 	const msg = pagingComponent.items.find(m => m.id === id); | ||||
| 	if (msg) { | ||||
| 		messages = messages.filter(m => m.id !== msg.id); | ||||
| 		pagingComponent.prepend(msg); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -204,7 +229,6 @@ function scrollToBottom() { | |||
| } | ||||
| 
 | ||||
| function onIndicatorClick() { | ||||
| 	showIndicator = false; | ||||
| 	scrollToBottom(); | ||||
| } | ||||
| 
 | ||||
|  | @ -223,7 +247,7 @@ function notifyNewMessage() { | |||
| 
 | ||||
| function onVisibilitychange() { | ||||
| 	if (document.hidden) return; | ||||
| 	for (const message of messages) { | ||||
| 	for (const message of pagingComponent.items) { | ||||
| 		if (message.userId !== $i.id && !message.isRead) { | ||||
| 			connection?.send('read', { | ||||
| 				id: message.id | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue