| 
									
										
										
										
											2018-01-27 10:46:52 -08:00
										 |  |  | <div class="timeline" role="feed" aria-label="{{label}}"> | 
					
						
							| 
									
										
										
										
											2018-01-16 21:43:31 -08:00
										 |  |  |   <VirtualList component="{{StatusListItem}}" | 
					
						
							| 
									
										
										
										
											2018-01-23 18:15:14 -08:00
										 |  |  |                :makeProps | 
					
						
							| 
									
										
										
										
											2018-01-27 10:46:52 -08:00
										 |  |  |                items="{{$statusIds}}" | 
					
						
							| 
									
										
										
										
											2018-01-21 14:31:59 -08:00
										 |  |  |                on:scrollToBottom="onScrollToBottom()" | 
					
						
							| 
									
										
										
										
											2018-01-27 10:46:52 -08:00
										 |  |  |                shown="{{$initialized}}" | 
					
						
							| 
									
										
										
										
											2018-01-21 16:07:11 -08:00
										 |  |  |                footerComponent="{{LoadingFooter}}" | 
					
						
							| 
									
										
										
										
											2018-01-27 10:46:52 -08:00
										 |  |  |                showFooter="{{$initialized && $runningUpdate}}" | 
					
						
							|  |  |  |                realm="{{$currentInstance + '/' + timeline}}" | 
					
						
							| 
									
										
										
										
											2018-01-24 19:26:08 -08:00
										 |  |  |                on:initializedVisibleItems="initialize()" | 
					
						
							| 
									
										
										
										
											2018-01-21 14:31:59 -08:00
										 |  |  |   /> | 
					
						
							| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  | </div> | 
					
						
							| 
									
										
										
										
											2018-01-16 20:34:09 -08:00
										 |  |  | <style> | 
					
						
							|  |  |  |   .timeline { | 
					
						
							| 
									
										
										
										
											2018-01-19 00:51:51 -08:00
										 |  |  |     min-height: 60vh; | 
					
						
							| 
									
										
										
										
											2018-01-16 20:34:09 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | </style> | 
					
						
							| 
									
										
										
										
											2018-01-08 18:14:21 -08:00
										 |  |  | <script> | 
					
						
							| 
									
										
										
										
											2018-01-28 13:09:39 -08:00
										 |  |  |   import { store } from '../../_store/store' | 
					
						
							| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  |   import StatusListItem from './StatusListItem.html' | 
					
						
							| 
									
										
										
										
											2018-01-21 16:07:11 -08:00
										 |  |  |   import LoadingFooter from './LoadingFooter.html' | 
					
						
							| 
									
										
										
										
											2018-01-27 16:35:44 -08:00
										 |  |  |   import VirtualList from '../virtualList/VirtualList.html' | 
					
						
							|  |  |  |   import { timelines } from '../../_static/timelines' | 
					
						
							|  |  |  |   import { database } from '../../_utils/database/database' | 
					
						
							| 
									
										
										
										
											2018-01-27 17:34:08 -08:00
										 |  |  |   import { initializeTimeline, fetchStatusesOnScrollToBottom, setupTimeline } from '../../_actions/timeline' | 
					
						
							| 
									
										
										
										
											2018-01-18 20:25:34 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-08 18:14:21 -08:00
										 |  |  |   export default { | 
					
						
							| 
									
										
										
										
											2018-01-17 18:35:27 -08:00
										 |  |  |     async oncreate() { | 
					
						
							| 
									
										
										
										
											2018-01-27 17:34:08 -08:00
										 |  |  |       setupTimeline() | 
					
						
							| 
									
										
										
										
											2018-01-24 09:47:31 -08:00
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2018-01-08 18:14:21 -08:00
										 |  |  |     data: () => ({ | 
					
						
							| 
									
										
										
										
											2018-01-17 18:35:27 -08:00
										 |  |  |       StatusListItem: StatusListItem, | 
					
						
							| 
									
										
										
										
											2018-01-27 10:46:52 -08:00
										 |  |  |       LoadingFooter: LoadingFooter | 
					
						
							| 
									
										
										
										
											2018-01-08 18:14:21 -08:00
										 |  |  |     }), | 
					
						
							| 
									
										
										
										
											2018-01-17 18:35:27 -08:00
										 |  |  |     computed: { | 
					
						
							| 
									
										
										
										
											2018-01-28 21:07:31 -08:00
										 |  |  |       makeProps: ($currentInstance, timelineType) => async (statusId) => ({ | 
					
						
							| 
									
										
										
										
											2018-01-28 17:10:03 -08:00
										 |  |  |         timelineType: timelineType, | 
					
						
							|  |  |  |         status: await database.getStatus($currentInstance, statusId) | 
					
						
							|  |  |  |       }), | 
					
						
							| 
									
										
										
										
											2018-01-28 15:44:33 -08:00
										 |  |  |       label: (timeline, $currentInstance, timelineType, timelineValue) => { | 
					
						
							| 
									
										
										
										
											2018-01-21 20:02:32 -08:00
										 |  |  |         if (timelines[timeline]) { | 
					
						
							| 
									
										
										
										
											2018-01-28 15:44:33 -08:00
										 |  |  |           return `${timelines[timeline].label} timeline for ${$currentInstance}` | 
					
						
							| 
									
										
										
										
											2018-01-21 20:02:32 -08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-01-28 15:44:33 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         switch (timelineType) { | 
					
						
							|  |  |  |           case 'tag': | 
					
						
							|  |  |  |             return `#${timelineValue} timeline for ${$currentInstance}` | 
					
						
							|  |  |  |           case 'status': | 
					
						
							|  |  |  |             return 'Status context' | 
					
						
							|  |  |  |           case 'account': | 
					
						
							|  |  |  |             return `Account #${timelineValue} on ${$currentInstance}` | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       timelineType: (timeline) => { | 
					
						
							|  |  |  |         return timeline.split('/')[0] | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       timelineValue: (timeline) => { | 
					
						
							|  |  |  |         return timeline.split('/').slice(-1)[0] | 
					
						
							| 
									
										
										
										
											2018-01-21 20:02:32 -08:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2018-01-17 18:35:27 -08:00
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |     store: () => store, | 
					
						
							|  |  |  |     components: { | 
					
						
							| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  |       VirtualList | 
					
						
							| 
									
										
										
										
											2018-01-15 12:23:28 -08:00
										 |  |  |     }, | 
					
						
							|  |  |  |     methods: { | 
					
						
							| 
									
										
										
										
											2018-01-24 19:26:08 -08:00
										 |  |  |       initialize() { | 
					
						
							| 
									
										
										
										
											2018-01-27 10:46:52 -08:00
										 |  |  |         if (this.store.get('initialized') || !this.store.get('statusIds') || !this.store.get('statusIds').length) { | 
					
						
							| 
									
										
										
										
											2018-01-24 19:26:08 -08:00
										 |  |  |           return | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-01-27 17:34:08 -08:00
										 |  |  |         initializeTimeline() | 
					
						
							| 
									
										
										
										
											2018-01-24 19:26:08 -08:00
										 |  |  |       }, | 
					
						
							| 
									
										
										
										
											2018-01-27 17:34:42 -08:00
										 |  |  |       onScrollToBottom() { | 
					
						
							| 
									
										
										
										
											2018-01-28 15:44:33 -08:00
										 |  |  |         if (!this.store.get('initialized') || | 
					
						
							|  |  |  |             this.store.get('runningUpdate') || | 
					
						
							|  |  |  |             this.get('timelineType') === 'status') { // for status contexts, we've already fetched the whole thread | 
					
						
							| 
									
										
										
										
											2018-01-18 20:25:34 -08:00
										 |  |  |           return | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-01-27 17:34:08 -08:00
										 |  |  |         fetchStatusesOnScrollToBottom() | 
					
						
							| 
									
										
										
										
											2018-01-15 12:23:28 -08:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-01-08 18:14:21 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | </script> |