 e1d69e236f
			
		
	
	e1d69e236f
	
	
	
		
			
			* update docker image?
* 続
* serial run delete from "${table}" cascade
* use cypress official github action
* refuse install by cypress action
* clean up
* use wait?
* use more wait?
* Revert "use more wait?"
This reverts commit 18d0fcae9c.
* Revert "use wait?"
This reverts commit 5aa8feec9c.
* fix
* test
* test
* log?
* 握りつぶしてみる
* clean up
* env?
* clean up?
* disable video
* add comment
* remove test
* 成功?
* test browser
* nodeインストール無効化
* node16.13.0-chrome95-ff94
* node.js復活
* ?
* ちょっと戻してみる
* chrome?
* cross browser test2
* --shm-size=2g
* artifact?
* misskey.local?
* firefoxはあきらめる
* not headless?
* oops
* fix
* ??
* test1
* if?
* fail-fast: false
* headless: false
* easy error ignoreing describe
* エラーの解消
とちょっとリファクター
* add browser name to artifact
* Install mplayer for FireFox
* no wait?
* タイムアウトを甘くしてみる
* firefoxをあきらめる(n回目)
* remove timeout setting
* wait復活
* Update basic.js
* Update index.js
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
		
	
		
			
				
	
	
		
			144 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
| <XNotes ref="tlComponent" :no-gap="!$store.state.showGapBetweenNotesInTimeline" :pagination="pagination" @queue="emit('queue', $event)"/>
 | |
| </template>
 | |
| 
 | |
| <script lang="ts" setup>
 | |
| import { ref, computed, provide, onUnmounted } from 'vue';
 | |
| import XNotes from './notes.vue';
 | |
| import * as os from '@/os';
 | |
| import { stream } from '@/stream';
 | |
| import * as sound from '@/scripts/sound';
 | |
| import { $i } from '@/account';
 | |
| 
 | |
| const props = defineProps<{
 | |
| 	src: string;
 | |
| 	list?: string;
 | |
| 	antenna?: string;
 | |
| 	channel?: string;
 | |
| 	sound?: boolean;
 | |
| }>();
 | |
| 
 | |
| const emit = defineEmits<{
 | |
| 	(e: 'note'): void;
 | |
| 	(e: 'queue', count: number): void;
 | |
| }>();
 | |
| 
 | |
| provide('inChannel', computed(() => props.src === 'channel'));
 | |
| 
 | |
| const tlComponent: InstanceType<typeof XNotes> = $ref();
 | |
| 
 | |
| const prepend = note => {
 | |
| 	tlComponent.pagingComponent?.prepend(note);
 | |
| 
 | |
| 	emit('note');
 | |
| 
 | |
| 	if (props.sound) {
 | |
| 		sound.play($i && (note.userId === $i.id) ? 'noteMy' : 'note');
 | |
| 	}
 | |
| };
 | |
| 
 | |
| const onUserAdded = () => {
 | |
| 	tlComponent.pagingComponent?.reload();
 | |
| };
 | |
| 
 | |
| const onUserRemoved = () => {
 | |
| 	tlComponent.pagingComponent?.reload();
 | |
| };
 | |
| 
 | |
| const onChangeFollowing = () => {
 | |
| 	if (!tlComponent.pagingComponent?.backed) {
 | |
| 		tlComponent.pagingComponent?.reload();
 | |
| 	}
 | |
| };
 | |
| 
 | |
| let endpoint;
 | |
| 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);
 | |
| 
 | |
| 	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);
 | |
| }
 | |
| 
 | |
| const pagination = {
 | |
| 	endpoint: endpoint,
 | |
| 	limit: 10,
 | |
| 	params: query,
 | |
| };
 | |
| 
 | |
| onUnmounted(() => {
 | |
| 	connection.dispose();
 | |
| 	if (connection2) connection2.dispose();
 | |
| });
 | |
| 
 | |
| /* TODO
 | |
| const timetravel = (date?: Date) => {
 | |
| 	this.date = date;
 | |
| 	this.$refs.tl.reload();
 | |
| };
 | |
| */
 | |
| </script>
 |