Browse Source

Update timeline.vue

Daniel Supernault 6 years ago
parent
commit
888ccc9dce
3 changed files with 32 additions and 3 deletions
  1. BIN
      public/js/components.js
  2. BIN
      public/mix-manifest.json
  3. 32 3
      resources/assets/js/components/Timeline.vue

BIN
public/js/components.js


BIN
public/mix-manifest.json


+ 32 - 3
resources/assets/js/components/Timeline.vue

@@ -92,10 +92,15 @@
 					</form>
 				</div>
 			</div>
-			<infinite-loading @infinite="infiniteTimeline">
+			<!--
+				<infinite-loading @infinite="infiniteTimeline">
 				<div slot="no-more" class="font-weight-bold text-light">No more posts to load</div>
 				<div slot="no-results" class="font-weight-bold text-light">No posts found</div>
-			</infinite-loading>
+				</infinite-loading>
+			-->
+			<div class="pagination d-none">
+				<p class="btn btn-outline-secondary font-weight-bold btn-block" v-on:click="loadMore">Load more posts</p>
+			</div>
 		</div>
 
 		<div class="col-md-4 col-lg-4 pt-2 my-3 order-1 order-md-2">
@@ -265,7 +270,6 @@
 				let localTimeline = '/api/v1/timelines/public?page=1';
 				let apiUrl = this.scope == '/' ? homeTimeline : localTimeline;
 				axios.get(apiUrl).then(res => {
-					$('.timeline .loader').addClass('d-none');
 					let data = res.data;
 					this.feed.push(...data);
 					let ids = data.map(status => status.id);
@@ -273,6 +277,7 @@
 					if(this.page == 1) {
 						this.max_id = Math.max(...ids);
 					}
+					$('.timeline .pagination').removeClass('d-none');
 					this.loading = false;
 				}).catch(err => {
 				});
@@ -304,6 +309,30 @@
 				});
 			},
 
+			loadMore() {
+				let homeTimeline = '/api/v1/timelines/home';
+				let localTimeline = '/api/v1/timelines/public';
+				let apiUrl = this.scope == '/' ? homeTimeline : localTimeline;
+				axios.get(apiUrl, {
+					params: {
+						page: this.page,
+					},
+				}).then(res => {
+					if (res.data.length && this.loading == false) {
+						let data = res.data;
+						this.feed.push(...data);
+						let ids = data.map(status => status.id);
+						this.min_id = Math.min(...ids);
+						if(this.page == 1) {
+							this.max_id = Math.max(...ids);
+						}
+						this.page += 1;
+						this.loading = false;
+					} else {
+					}
+				});
+			},
+
 			fetchNotifications() {
 				axios.get('/api/v1/notifications')
 				.then(res => {