diff --git a/packages/client/src/components/timeline.vue b/packages/client/src/components/timeline.vue index c3ad04c16..4ce9d9113 100644 --- a/packages/client/src/components/timeline.vue +++ b/packages/client/src/components/timeline.vue @@ -10,7 +10,7 @@ import * as sound from '@/scripts/sound'; import { $i } from '@/account'; const props = defineProps<{ - src: string; + src: 'antenna' | 'home' | 'local' | 'social' | 'global' | 'mentions' | 'directs' | 'list' | 'channel'; list?: string; antenna?: string; channel?: string; @@ -55,71 +55,80 @@ let query; let connection; let connection2; -if (props.src === 'antenna') { - endpoint = 'antennas/notes'; - query = { - antennaId: props.antenna, - }; - connection = stream.useChannel('antenna', { - antennaId: props.antenna, - }); - connection.on('note', prepend); -} else if (props.src === 'home') { - endpoint = 'notes/timeline'; - connection = stream.useChannel('homeTimeline'); - connection.on('note', prepend); +switch (props.src) { + case 'antenna': + endpoint = 'antennas/notes'; + query = { + antennaId: props.antenna, + }; + connection = stream.useChannel('antenna', { + antennaId: props.antenna, + }); + connection.on('note', prepend); + break; + case 'home': + endpoint = 'notes/timeline'; + connection = stream.useChannel('homeTimeline'); + connection.on('note', prepend); - connection2 = stream.useChannel('main'); - connection2.on('follow', onChangeFollowing); - connection2.on('unfollow', onChangeFollowing); -} else if (props.src === 'local') { - endpoint = 'notes/local-timeline'; - connection = stream.useChannel('localTimeline'); - connection.on('note', prepend); -} else if (props.src === 'social') { - endpoint = 'notes/hybrid-timeline'; - connection = stream.useChannel('hybridTimeline'); - connection.on('note', prepend); -} else if (props.src === 'global') { - endpoint = 'notes/global-timeline'; - connection = stream.useChannel('globalTimeline'); - connection.on('note', prepend); -} else if (props.src === 'mentions') { - endpoint = 'notes/mentions'; - connection = stream.useChannel('main'); - connection.on('mention', prepend); -} else if (props.src === 'directs') { - endpoint = 'notes/mentions'; - query = { - visibility: 'specified', - }; - const onNote = note => { - if (note.visibility === 'specified') { - prepend(note); - } - }; - connection = stream.useChannel('main'); - connection.on('mention', onNote); -} else if (props.src === 'list') { - endpoint = 'notes/user-list-timeline'; - query = { - listId: props.list, - }; - connection = stream.useChannel('userList', { - listId: props.list, - }); - connection.on('note', prepend); - connection.on('userAdded', onUserAdded); - connection.on('userRemoved', onUserRemoved); -} else if (props.src === 'channel') { - endpoint = 'channels/timeline'; - query = { - channelId: props.channel, - }; - connection = stream.useChannel('channel', { - channelId: props.channel, - }); - connection.on('note', prepend); + connection2 = stream.useChannel('main'); + connection2.on('follow', onChangeFollowing); + connection2.on('unfollow', onChangeFollowing); + break; + case 'local': + endpoint = 'notes/local-timeline'; + connection = stream.useChannel('localTimeline'); + connection.on('note', prepend); + break; + case 'social': + endpoint = 'notes/hybrid-timeline'; + connection = stream.useChannel('hybridTimeline'); + connection.on('note', prepend); + break; + case 'global': + endpoint = 'notes/global-timeline'; + connection = stream.useChannel('globalTimeline'); + connection.on('note', prepend); + break; + case 'mentions': + endpoint = 'notes/mentions'; + connection = stream.useChannel('main'); + connection.on('mention', prepend); + break; + case 'directs': + endpoint = 'notes/mentions'; + query = { + visibility: 'specified', + }; + connection = stream.useChannel('main'); + connection.on('mention', note => { + if (note.visibility === 'specified') { + prepend(note); + } + }); + break; + case 'list': + endpoint = 'notes/user-list-timeline'; + query = { + listId: props.list, + }; + connection = stream.useChannel('userList', { + listId: props.list, + }); + connection.on('note', prepend); + connection.on('userAdded', onUserAdded); + connection.on('userRemoved', onUserRemoved); + break; + case 'channel': + endpoint = 'channels/timeline'; + query = { + channelId: props.channel, + }; + connection = stream.useChannel('channel', { + channelId: props.channel, + }); + connection.on('note', prepend); + break; } const pagination = {