From 7813c8a94293de31b2af3a158c7811be70e07197 Mon Sep 17 00:00:00 2001
From: syuilo <Syuilotan@yahoo.co.jp>
Date: Sun, 9 Feb 2020 22:00:38 +0900
Subject: [PATCH] Fix #5896

---
 src/client/components/timeline.vue | 17 ++++++++++++-----
 src/client/scripts/paging.ts       |  4 +++-
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/src/client/components/timeline.vue b/src/client/components/timeline.vue
index f5edb1855..15d0dab99 100644
--- a/src/client/components/timeline.vue
+++ b/src/client/components/timeline.vue
@@ -27,6 +27,7 @@ export default Vue.extend({
 	data() {
 		return {
 			connection: null,
+			connection2: null,
 			pagination: null,
 			baseQuery: {
 				includeMyRenotes: this.$store.state.settings.showMyRenotes,
@@ -40,6 +41,7 @@ export default Vue.extend({
 	created() {
 		this.$once('hook:beforeDestroy', () => {
 			this.connection.dispose();
+			if (this.connection2) this.connection2.dispose();
 		});
 
 		const prepend = note => {
@@ -54,6 +56,12 @@ export default Vue.extend({
 			(this.$refs.tl as any).reload();
 		};
 
+		const onChangeFollowing = () => {
+			if (!this.$refs.tl.backed) {
+				this.$refs.tl.reload();
+			}
+		};
+
 		let endpoint;
 
 		if (this.src == 'antenna') {
@@ -67,13 +75,12 @@ export default Vue.extend({
 			this.connection.on('note', prepend);
 		} else if (this.src == 'home') {
 			endpoint = 'notes/timeline';
-			const onChangeFollowing = () => {
-				this.fetch();
-			};
 			this.connection = this.$root.stream.useSharedConnection('homeTimeline');
 			this.connection.on('note', prepend);
-			this.connection.on('follow', onChangeFollowing);
-			this.connection.on('unfollow', onChangeFollowing);
+
+			this.connection2 = this.$root.stream.useSharedConnection('main');
+			this.connection2.on('follow', onChangeFollowing);
+			this.connection2.on('unfollow', onChangeFollowing);
 		} else if (this.src == 'local') {
 			endpoint = 'notes/local-timeline';
 			this.connection = this.$root.stream.useSharedConnection('localTimeline');
diff --git a/src/client/scripts/paging.ts b/src/client/scripts/paging.ts
index b24d705f1..172558805 100644
--- a/src/client/scripts/paging.ts
+++ b/src/client/scripts/paging.ts
@@ -8,7 +8,8 @@ export default (opts) => ({
 			fetching: true,
 			moreFetching: false,
 			inited: false,
-			more: false
+			more: false,
+			backed: false,
 		};
 	},
 
@@ -78,6 +79,7 @@ export default (opts) => ({
 		async fetchMore() {
 			if (!this.more || this.moreFetching || this.items.length === 0) return;
 			this.moreFetching = true;
+			this.backed = true;
 			let params = typeof this.pagination.params === 'function' ? this.pagination.params(false) : this.pagination.params;
 			if (params && params.then) params = await params;
 			const endpoint = typeof this.pagination.endpoint === 'function' ? this.pagination.endpoint() : this.pagination.endpoint;