V10 (#2826)
* wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * Update CHANGELOG.md * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * Update CHANGELOG.md * Update CHANGELOG.md * wip * Update CHANGELOG.md * wip * wip * wip * wip
This commit is contained in:
		| @@ -98,8 +98,7 @@ export default Vue.extend({ | ||||
| 			hierarchyFolders: [], | ||||
| 			selectedFiles: [], | ||||
| 			uploadings: [], | ||||
| 			connection: null, | ||||
| 			connectionId: null, | ||||
| 			connection: null | ||||
|  | ||||
| 			/** | ||||
| 			 * ドロップされようとしているか | ||||
| @@ -116,8 +115,7 @@ export default Vue.extend({ | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.connection = (this as any).os.streams.driveStream.getConnection(); | ||||
| 		this.connectionId = (this as any).os.streams.driveStream.use(); | ||||
| 		this.connection = (this as any).os.stream.useSharedConnection('drive'); | ||||
|  | ||||
| 		this.connection.on('file_created', this.onStreamDriveFileCreated); | ||||
| 		this.connection.on('file_updated', this.onStreamDriveFileUpdated); | ||||
| @@ -132,12 +130,7 @@ export default Vue.extend({ | ||||
| 		} | ||||
| 	}, | ||||
| 	beforeDestroy() { | ||||
| 		this.connection.off('file_created', this.onStreamDriveFileCreated); | ||||
| 		this.connection.off('file_updated', this.onStreamDriveFileUpdated); | ||||
| 		this.connection.off('file_deleted', this.onStreamDriveFileDeleted); | ||||
| 		this.connection.off('folder_created', this.onStreamDriveFolderCreated); | ||||
| 		this.connection.off('folder_updated', this.onStreamDriveFolderUpdated); | ||||
| 		(this as any).os.streams.driveStream.dispose(this.connectionId); | ||||
| 		this.connection.dispose(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		onContextmenu(e) { | ||||
|   | ||||
| @@ -34,23 +34,18 @@ export default Vue.extend({ | ||||
| 		return { | ||||
| 			u: this.user, | ||||
| 			wait: false, | ||||
| 			connection: null, | ||||
| 			connectionId: null | ||||
| 			connection: null | ||||
| 		}; | ||||
| 	}, | ||||
|  | ||||
| 	mounted() { | ||||
| 		this.connection = (this as any).os.stream.getConnection(); | ||||
| 		this.connectionId = (this as any).os.stream.use(); | ||||
|  | ||||
| 		this.connection = (this as any).os.stream.useSharedConnection('main'); | ||||
| 		this.connection.on('follow', this.onFollow); | ||||
| 		this.connection.on('unfollow', this.onUnfollow); | ||||
| 	}, | ||||
|  | ||||
| 	beforeDestroy() { | ||||
| 		this.connection.off('follow', this.onFollow); | ||||
| 		this.connection.off('unfollow', this.onUnfollow); | ||||
| 		(this as any).os.stream.dispose(this.connectionId); | ||||
| 		this.connection.dispose(); | ||||
| 	}, | ||||
|  | ||||
| 	methods: { | ||||
|   | ||||
| @@ -141,7 +141,6 @@ export default Vue.extend({ | ||||
| 	data() { | ||||
| 		return { | ||||
| 			connection: null, | ||||
| 			connectionId: null, | ||||
| 			widgetAdderSelected: null, | ||||
| 			trash: [] | ||||
| 		}; | ||||
| @@ -176,12 +175,11 @@ export default Vue.extend({ | ||||
| 	}, | ||||
|  | ||||
| 	mounted() { | ||||
| 		this.connection = (this as any).os.stream.getConnection(); | ||||
| 		this.connectionId = (this as any).os.stream.use(); | ||||
| 		this.connection = (this as any).os.stream.useSharedConnection('main'); | ||||
| 	}, | ||||
|  | ||||
| 	beforeDestroy() { | ||||
| 		(this as any).os.stream.dispose(this.connectionId); | ||||
| 		this.connection.dispose(); | ||||
| 	}, | ||||
|  | ||||
| 	methods: { | ||||
|   | ||||
| @@ -93,12 +93,15 @@ import MkNoteMenu from '../../../common/views/components/note-menu.vue'; | ||||
| import MkReactionPicker from '../../../common/views/components/reaction-picker.vue'; | ||||
| import XSub from './notes.note.sub.vue'; | ||||
| import { sum } from '../../../../../prelude/array'; | ||||
| import noteSubscriber from '../../../common/scripts/note-subscriber'; | ||||
|  | ||||
| export default Vue.extend({ | ||||
| 	components: { | ||||
| 		XSub | ||||
| 	}, | ||||
|  | ||||
| 	mixins: [noteSubscriber('note')], | ||||
|  | ||||
| 	props: { | ||||
| 		note: { | ||||
| 			type: Object, | ||||
|   | ||||
| @@ -77,6 +77,7 @@ import MkNoteMenu from '../../../common/views/components/note-menu.vue'; | ||||
| import MkReactionPicker from '../../../common/views/components/reaction-picker.vue'; | ||||
| import XSub from './notes.note.sub.vue'; | ||||
| import { sum } from '../../../../../prelude/array'; | ||||
| import noteSubscriber from '../../../common/scripts/note-subscriber'; | ||||
|  | ||||
| function focus(el, fn) { | ||||
| 	const target = fn(el); | ||||
| @@ -94,6 +95,8 @@ export default Vue.extend({ | ||||
| 		XSub | ||||
| 	}, | ||||
|  | ||||
| 	mixins: [noteSubscriber('note')], | ||||
|  | ||||
| 	props: { | ||||
| 		note: { | ||||
| 			type: Object, | ||||
| @@ -104,9 +107,7 @@ export default Vue.extend({ | ||||
| 	data() { | ||||
| 		return { | ||||
| 			showContent: false, | ||||
| 			isDetailOpened: false, | ||||
| 			connection: null, | ||||
| 			connectionId: null | ||||
| 			isDetailOpened: false | ||||
| 		}; | ||||
| 	}, | ||||
|  | ||||
| @@ -168,86 +169,7 @@ export default Vue.extend({ | ||||
| 		} | ||||
| 	}, | ||||
|  | ||||
| 	created() { | ||||
| 		if (this.$store.getters.isSignedIn) { | ||||
| 			this.connection = (this as any).os.stream.getConnection(); | ||||
| 			this.connectionId = (this as any).os.stream.use(); | ||||
| 		} | ||||
| 	}, | ||||
|  | ||||
| 	mounted() { | ||||
| 		this.capture(true); | ||||
|  | ||||
| 		if (this.$store.getters.isSignedIn) { | ||||
| 			this.connection.on('_connected_', this.onStreamConnected); | ||||
| 		} | ||||
|  | ||||
| 		// Draw map | ||||
| 		if (this.p.geo) { | ||||
| 			const shouldShowMap = this.$store.getters.isSignedIn ? this.$store.state.settings.showMaps : true; | ||||
| 			if (shouldShowMap) { | ||||
| 				(this as any).os.getGoogleMaps().then(maps => { | ||||
| 					const uluru = new maps.LatLng(this.p.geo.coordinates[1], this.p.geo.coordinates[0]); | ||||
| 					const map = new maps.Map(this.$refs.map, { | ||||
| 						center: uluru, | ||||
| 						zoom: 15 | ||||
| 					}); | ||||
| 					new maps.Marker({ | ||||
| 						position: uluru, | ||||
| 						map: map | ||||
| 					}); | ||||
| 				}); | ||||
| 			} | ||||
| 		} | ||||
| 	}, | ||||
|  | ||||
| 	beforeDestroy() { | ||||
| 		this.decapture(true); | ||||
|  | ||||
| 		if (this.$store.getters.isSignedIn) { | ||||
| 			this.connection.off('_connected_', this.onStreamConnected); | ||||
| 			(this as any).os.stream.dispose(this.connectionId); | ||||
| 		} | ||||
| 	}, | ||||
|  | ||||
| 	methods: { | ||||
| 		capture(withHandler = false) { | ||||
| 			if (this.$store.getters.isSignedIn) { | ||||
| 				const data = { | ||||
| 					type: 'capture', | ||||
| 					id: this.p.id | ||||
| 				} as any; | ||||
| 				if ((this.p.visibleUserIds || []).includes(this.$store.state.i.id) || (this.p.mentions || []).includes(this.$store.state.i.id)) { | ||||
| 					data.read = true; | ||||
| 				} | ||||
| 				this.connection.send(data); | ||||
| 				if (withHandler) this.connection.on('note-updated', this.onStreamNoteUpdated); | ||||
| 			} | ||||
| 		}, | ||||
|  | ||||
| 		decapture(withHandler = false) { | ||||
| 			if (this.$store.getters.isSignedIn) { | ||||
| 				this.connection.send({ | ||||
| 					type: 'decapture', | ||||
| 					id: this.p.id | ||||
| 				}); | ||||
| 				if (withHandler) this.connection.off('note-updated', this.onStreamNoteUpdated); | ||||
| 			} | ||||
| 		}, | ||||
|  | ||||
| 		onStreamConnected() { | ||||
| 			this.capture(); | ||||
| 		}, | ||||
|  | ||||
| 		onStreamNoteUpdated(data) { | ||||
| 			const note = data.note; | ||||
| 			if (note.id == this.note.id) { | ||||
| 				this.$emit('update:note', note); | ||||
| 			} else if (note.id == this.note.renoteId) { | ||||
| 				this.note.renote = note; | ||||
| 			} | ||||
| 		}, | ||||
|  | ||||
| 		reply(viaKeyboard = false) { | ||||
| 			(this as any).os.new(MkPostFormWindow, { | ||||
| 				reply: this.p, | ||||
|   | ||||
| @@ -118,10 +118,10 @@ export default Vue.extend({ | ||||
| 			notifications: [], | ||||
| 			moreNotifications: false, | ||||
| 			connection: null, | ||||
| 			connectionId: null, | ||||
| 			getNoteSummary | ||||
| 		}; | ||||
| 	}, | ||||
|  | ||||
| 	computed: { | ||||
| 		_notifications(): any[] { | ||||
| 			return (this.notifications as any).map(notification => { | ||||
| @@ -133,9 +133,9 @@ export default Vue.extend({ | ||||
| 			}); | ||||
| 		} | ||||
| 	}, | ||||
|  | ||||
| 	mounted() { | ||||
| 		this.connection = (this as any).os.stream.getConnection(); | ||||
| 		this.connectionId = (this as any).os.stream.use(); | ||||
| 		this.connection = (this as any).os.stream.useSharedConnection('main'); | ||||
|  | ||||
| 		this.connection.on('notification', this.onNotification); | ||||
|  | ||||
| @@ -153,10 +153,11 @@ export default Vue.extend({ | ||||
| 			this.fetching = false; | ||||
| 		}); | ||||
| 	}, | ||||
|  | ||||
| 	beforeDestroy() { | ||||
| 		this.connection.off('notification', this.onNotification); | ||||
| 		(this as any).os.stream.dispose(this.connectionId); | ||||
| 		this.connection.dispose(); | ||||
| 	}, | ||||
|  | ||||
| 	methods: { | ||||
| 		fetchMoreNotifications() { | ||||
| 			this.fetchingMoreNotifications = true; | ||||
| @@ -177,10 +178,11 @@ export default Vue.extend({ | ||||
| 				this.fetchingMoreNotifications = false; | ||||
| 			}); | ||||
| 		}, | ||||
|  | ||||
| 		onNotification(notification) { | ||||
| 			// TODO: ユーザーが画面を見てないと思われるとき(ブラウザやタブがアクティブじゃないなど)は送信しない | ||||
| 			this.connection.send({ | ||||
| 				type: 'read_notification', | ||||
| 				type: 'readNotification', | ||||
| 				id: notification.id | ||||
| 			}); | ||||
|  | ||||
|   | ||||
| @@ -23,25 +23,25 @@ export default Vue.extend({ | ||||
| 		return { | ||||
| 			fetching: true, | ||||
| 			signins: [], | ||||
| 			connection: null, | ||||
| 			connectionId: null | ||||
| 			connection: null | ||||
| 		}; | ||||
| 	}, | ||||
|  | ||||
| 	mounted() { | ||||
| 		(this as any).api('i/signin_history').then(signins => { | ||||
| 			this.signins = signins; | ||||
| 			this.fetching = false; | ||||
| 		}); | ||||
|  | ||||
| 		this.connection = (this as any).os.stream.getConnection(); | ||||
| 		this.connectionId = (this as any).os.stream.use(); | ||||
| 		this.connection = (this as any).os.stream.useSharedConnection('main'); | ||||
|  | ||||
| 		this.connection.on('signin', this.onSignin); | ||||
| 	}, | ||||
|  | ||||
| 	beforeDestroy() { | ||||
| 		this.connection.off('signin', this.onSignin); | ||||
| 		(this as any).os.stream.dispose(this.connectionId); | ||||
| 		this.connection.dispose(); | ||||
| 	}, | ||||
|  | ||||
| 	methods: { | ||||
| 		onSignin(signin) { | ||||
| 			this.signins.unshift(signin); | ||||
|   | ||||
| @@ -15,7 +15,6 @@ | ||||
|  | ||||
| <script lang="ts"> | ||||
| import Vue from 'vue'; | ||||
| import { HashtagStream } from '../../../common/scripts/streaming/hashtag'; | ||||
|  | ||||
| const fetchLimit = 10; | ||||
|  | ||||
| @@ -35,9 +34,7 @@ export default Vue.extend({ | ||||
| 			fetching: true, | ||||
| 			moreFetching: false, | ||||
| 			existMore: false, | ||||
| 			streamManager: null, | ||||
| 			connection: null, | ||||
| 			connectionId: null, | ||||
| 			date: null, | ||||
| 			baseQuery: { | ||||
| 				includeMyRenotes: this.$store.state.settings.showMyRenotes, | ||||
| @@ -69,69 +66,33 @@ export default Vue.extend({ | ||||
| 			this.query = { | ||||
| 				query: this.tagTl.query | ||||
| 			}; | ||||
| 			this.connection = new HashtagStream((this as any).os, this.$store.state.i, this.tagTl.query); | ||||
| 			this.connection = (this as any).os.stream.connectToChannel('hashtag', { q: this.tagTl.query }); | ||||
| 			this.connection.on('note', prepend); | ||||
| 			this.$once('beforeDestroy', () => { | ||||
| 				this.connection.off('note', prepend); | ||||
| 				this.connection.close(); | ||||
| 			}); | ||||
| 		} else if (this.src == 'home') { | ||||
| 			this.endpoint = 'notes/timeline'; | ||||
| 			const onChangeFollowing = () => { | ||||
| 				this.fetch(); | ||||
| 			}; | ||||
| 			this.streamManager = (this as any).os.stream; | ||||
| 			this.connection = this.streamManager.getConnection(); | ||||
| 			this.connectionId = this.streamManager.use(); | ||||
| 			this.connection = (this as any).os.stream.useSharedConnection('homeTimeline'); | ||||
| 			this.connection.on('note', prepend); | ||||
| 			this.connection.on('follow', onChangeFollowing); | ||||
| 			this.connection.on('unfollow', onChangeFollowing); | ||||
| 			this.$once('beforeDestroy', () => { | ||||
| 				this.connection.off('note', prepend); | ||||
| 				this.connection.off('follow', onChangeFollowing); | ||||
| 				this.connection.off('unfollow', onChangeFollowing); | ||||
| 				this.streamManager.dispose(this.connectionId); | ||||
| 			}); | ||||
| 		} else if (this.src == 'local') { | ||||
| 			this.endpoint = 'notes/local-timeline'; | ||||
| 			this.streamManager = (this as any).os.streams.localTimelineStream; | ||||
| 			this.connection = this.streamManager.getConnection(); | ||||
| 			this.connectionId = this.streamManager.use(); | ||||
| 			this.connection = (this as any).os.stream.useSharedConnection('localTimeline'); | ||||
| 			this.connection.on('note', prepend); | ||||
| 			this.$once('beforeDestroy', () => { | ||||
| 				this.connection.off('note', prepend); | ||||
| 				this.streamManager.dispose(this.connectionId); | ||||
| 			}); | ||||
| 		} else if (this.src == 'hybrid') { | ||||
| 			this.endpoint = 'notes/hybrid-timeline'; | ||||
| 			this.streamManager = (this as any).os.streams.hybridTimelineStream; | ||||
| 			this.connection = this.streamManager.getConnection(); | ||||
| 			this.connectionId = this.streamManager.use(); | ||||
| 			this.connection = (this as any).os.stream.useSharedConnection('hybridTimeline'); | ||||
| 			this.connection.on('note', prepend); | ||||
| 			this.$once('beforeDestroy', () => { | ||||
| 				this.connection.off('note', prepend); | ||||
| 				this.streamManager.dispose(this.connectionId); | ||||
| 			}); | ||||
| 		} else if (this.src == 'global') { | ||||
| 			this.endpoint = 'notes/global-timeline'; | ||||
| 			this.streamManager = (this as any).os.streams.globalTimelineStream; | ||||
| 			this.connection = this.streamManager.getConnection(); | ||||
| 			this.connectionId = this.streamManager.use(); | ||||
| 			this.connection = (this as any).os.stream.useSharedConnection('globalTimeline'); | ||||
| 			this.connection.on('note', prepend); | ||||
| 			this.$once('beforeDestroy', () => { | ||||
| 				this.connection.off('note', prepend); | ||||
| 				this.streamManager.dispose(this.connectionId); | ||||
| 			}); | ||||
| 		} else if (this.src == 'mentions') { | ||||
| 			this.endpoint = 'notes/mentions'; | ||||
| 			this.streamManager = (this as any).os.stream; | ||||
| 			this.connection = this.streamManager.getConnection(); | ||||
| 			this.connectionId = this.streamManager.use(); | ||||
| 			this.connection = (this as any).os.stream.useSharedConnection('main'); | ||||
| 			this.connection.on('mention', prepend); | ||||
| 			this.$once('beforeDestroy', () => { | ||||
| 				this.connection.off('mention', prepend); | ||||
| 				this.streamManager.dispose(this.connectionId); | ||||
| 			}); | ||||
| 		} else if (this.src == 'messages') { | ||||
| 			this.endpoint = 'notes/mentions'; | ||||
| 			this.query = { | ||||
| @@ -142,21 +103,15 @@ export default Vue.extend({ | ||||
| 					prepend(note); | ||||
| 				} | ||||
| 			}; | ||||
| 			this.streamManager = (this as any).os.stream; | ||||
| 			this.connection = this.streamManager.getConnection(); | ||||
| 			this.connectionId = this.streamManager.use(); | ||||
| 			this.connection = (this as any).os.stream.useSharedConnection('main'); | ||||
| 			this.connection.on('mention', onNote); | ||||
| 			this.$once('beforeDestroy', () => { | ||||
| 				this.connection.off('mention', onNote); | ||||
| 				this.streamManager.dispose(this.connectionId); | ||||
| 			}); | ||||
| 		} | ||||
|  | ||||
| 		this.fetch(); | ||||
| 	}, | ||||
|  | ||||
| 	beforeDestroy() { | ||||
| 		this.$emit('beforeDestroy'); | ||||
| 		this.connection.dispose(); | ||||
| 	}, | ||||
|  | ||||
| 	methods: { | ||||
|   | ||||
| @@ -42,8 +42,7 @@ export default Vue.extend({ | ||||
| 	data() { | ||||
| 		return { | ||||
| 			hasGameInvitations: false, | ||||
| 			connection: null, | ||||
| 			connectionId: null | ||||
| 			connection: null | ||||
| 		}; | ||||
| 	}, | ||||
| 	computed: { | ||||
| @@ -53,18 +52,15 @@ export default Vue.extend({ | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		if (this.$store.getters.isSignedIn) { | ||||
| 			this.connection = (this as any).os.stream.getConnection(); | ||||
| 			this.connectionId = (this as any).os.stream.use(); | ||||
| 			this.connection = (this as any).os.stream.useSharedConnection('main'); | ||||
|  | ||||
| 			this.connection.on('reversi_invited', this.onReversiInvited); | ||||
| 			this.connection.on('reversiInvited', this.onReversiInvited); | ||||
| 			this.connection.on('reversi_no_invites', this.onReversiNoInvites); | ||||
| 		} | ||||
| 	}, | ||||
| 	beforeDestroy() { | ||||
| 		if (this.$store.getters.isSignedIn) { | ||||
| 			this.connection.off('reversi_invited', this.onReversiInvited); | ||||
| 			this.connection.off('reversi_no_invites', this.onReversiNoInvites); | ||||
| 			(this as any).os.stream.dispose(this.connectionId); | ||||
| 			this.connection.dispose(); | ||||
| 		} | ||||
| 	}, | ||||
| 	methods: { | ||||
|   | ||||
| @@ -6,7 +6,6 @@ | ||||
|  | ||||
| <script lang="ts"> | ||||
| import Vue from 'vue'; | ||||
| import { UserListStream } from '../../../common/scripts/streaming/user-list'; | ||||
|  | ||||
| const fetchLimit = 10; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo