clean up observers
This commit is contained in:
		
							parent
							
								
									81174e636b
								
							
						
					
					
						commit
						3f5f016c32
					
				
					 2 changed files with 14 additions and 17 deletions
				
			
		| 
						 | 
				
			
			@ -67,6 +67,7 @@
 | 
			
		|||
  import { scheduleIdleTask } from '../../_utils/scheduleIdleTask'
 | 
			
		||||
  import { mark, stop } from '../../_utils/marks'
 | 
			
		||||
  import { importPseudoVirtualList } from '../../_utils/asyncModules'
 | 
			
		||||
  import isEqual from 'lodash/isEqual'
 | 
			
		||||
 | 
			
		||||
  export default {
 | 
			
		||||
    oncreate() {
 | 
			
		||||
| 
						 | 
				
			
			@ -138,11 +139,9 @@
 | 
			
		|||
          && timelineValue
 | 
			
		||||
      },
 | 
			
		||||
      itemIdsToAdd: ($itemIdsToAdd) => $itemIdsToAdd,
 | 
			
		||||
      // TODO: hack to avoid getting called too often
 | 
			
		||||
      itemIdsToAddStringified: (itemIdsToAdd) => JSON.stringify(itemIdsToAdd),
 | 
			
		||||
      headerProps: (itemIdsToAdd) => {
 | 
			
		||||
        return {
 | 
			
		||||
          count: (itemIdsToAdd && itemIdsToAdd.length) || 0,
 | 
			
		||||
          count: itemIdsToAdd ? itemIdsToAdd.length : 0,
 | 
			
		||||
          onClick: showMoreItemsForCurrentTimeline
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			@ -188,15 +187,10 @@
 | 
			
		|||
        let instanceName = this.store.get('currentInstance')
 | 
			
		||||
        let timelineName = this.get('timeline')
 | 
			
		||||
        let handleItemIdsToAdd = () => {
 | 
			
		||||
          let itemIdsToAdd = this.get('itemIdsToAdd')
 | 
			
		||||
          if (!itemIdsToAdd || !itemIdsToAdd.length) {
 | 
			
		||||
            return
 | 
			
		||||
          }
 | 
			
		||||
          mark('handleItemIdsToAdd')
 | 
			
		||||
          let scrollTop = this.get('scrollTop')
 | 
			
		||||
          let shouldShowHeader = this.store.get('shouldShowHeader')
 | 
			
		||||
          let showHeader = this.store.get('showHeader')
 | 
			
		||||
          //console.log('handleItemIdsToAdd', (itemIdsToAdd && itemIdsToAdd.length) || 0)
 | 
			
		||||
          if (scrollTop === 0 && !shouldShowHeader && !showHeader) {
 | 
			
		||||
            // if the user is scrolled to the top and we're not showing the header, then
 | 
			
		||||
            // just insert the statuses. this is "chat room mode"
 | 
			
		||||
| 
						 | 
				
			
			@ -207,10 +201,13 @@
 | 
			
		|||
          }
 | 
			
		||||
          stop('handleItemIdsToAdd')
 | 
			
		||||
        }
 | 
			
		||||
        this.observe('itemIdsToAddStringified', itemIdsToAddStringified => {
 | 
			
		||||
          if (itemIdsToAddStringified) {
 | 
			
		||||
            scheduleIdleTask(handleItemIdsToAdd)
 | 
			
		||||
        this.observe('itemIdsToAdd', (newItemIdsToAdd, oldItemIdsToAdd) => {
 | 
			
		||||
          if (!newItemIdsToAdd ||
 | 
			
		||||
              !newItemIdsToAdd.length ||
 | 
			
		||||
              isEqual(newItemIdsToAdd, oldItemIdsToAdd)) {
 | 
			
		||||
            return
 | 
			
		||||
          }
 | 
			
		||||
          scheduleIdleTask(handleItemIdsToAdd)
 | 
			
		||||
        })
 | 
			
		||||
      },
 | 
			
		||||
      setupFocus() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,6 +30,7 @@
 | 
			
		|||
  import { virtualListStore } from './virtualListStore'
 | 
			
		||||
  import throttle from 'lodash/throttle'
 | 
			
		||||
  import { mark, stop } from '../../_utils/marks'
 | 
			
		||||
  import isEqual from 'lodash/isEqual'
 | 
			
		||||
 | 
			
		||||
  const DISTANCE_FROM_BOTTOM_TO_FIRE = 400
 | 
			
		||||
  const SCROLL_EVENT_THROTTLE = 1000
 | 
			
		||||
| 
						 | 
				
			
			@ -52,11 +53,12 @@
 | 
			
		|||
        this.store.setForRealm({showHeader: showHeader})
 | 
			
		||||
        stop('set showHeader')
 | 
			
		||||
      })
 | 
			
		||||
      this.observe('itemsStringified', (itemsStringified) => {
 | 
			
		||||
        let items = typeof itemsStringified === 'undefined' ? undefined :
 | 
			
		||||
          JSON.parse(itemsStringified)
 | 
			
		||||
      this.observe('items', (newItems, oldItems) => {
 | 
			
		||||
        if (!newItems || isEqual(newItems, oldItems)) {
 | 
			
		||||
          return
 | 
			
		||||
        }
 | 
			
		||||
        mark('set items')
 | 
			
		||||
        this.store.setForRealm({items: items})
 | 
			
		||||
        this.store.setForRealm({items: newItems})
 | 
			
		||||
        stop('set items')
 | 
			
		||||
      })
 | 
			
		||||
      this.observe('allVisibleItemsHaveHeight', allVisibleItemsHaveHeight => {
 | 
			
		||||
| 
						 | 
				
			
			@ -102,8 +104,6 @@
 | 
			
		|||
      scrollTop: ($scrollTop) => $scrollTop,
 | 
			
		||||
      // TODO: bug in svelte store, shouldn't need to do this
 | 
			
		||||
      allVisibleItemsHaveHeight: ($allVisibleItemsHaveHeight) => $allVisibleItemsHaveHeight,
 | 
			
		||||
      // TODO: hack to avoid getting called too often
 | 
			
		||||
      itemsStringified: (items) => JSON.stringify(items)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue