tweak debounce/throttle
This commit is contained in:
		
							parent
							
								
									6d085eea36
								
							
						
					
					
						commit
						91402d06fc
					
				
					 1 changed files with 19 additions and 15 deletions
				
			
		| 
						 | 
				
			
			@ -9,31 +9,35 @@
 | 
			
		|||
<style>
 | 
			
		||||
  .status-article-compose-box {
 | 
			
		||||
    grid-area: compose;
 | 
			
		||||
    background: var(--main-bg);
 | 
			
		||||
  }
 | 
			
		||||
</style>
 | 
			
		||||
<script>
 | 
			
		||||
  import ComposeBox from '../../_components/compose/ComposeBox.html'
 | 
			
		||||
  import { store } from '../../_store/store'
 | 
			
		||||
  import { doubleRAF } from '../../_utils/doubleRAF'
 | 
			
		||||
  import debounce from 'lodash/debounce'
 | 
			
		||||
  import throttle from 'lodash/throttle'
 | 
			
		||||
 | 
			
		||||
  const DEBOUNCE_DELAY = 400
 | 
			
		||||
  const THROTTLE_DELAY = 150
 | 
			
		||||
 | 
			
		||||
  export default {
 | 
			
		||||
    oncreate() {
 | 
			
		||||
      let lastContentWarningShown = false
 | 
			
		||||
      this.observe('composeData', composeData => {
 | 
			
		||||
        doubleRAF(() => {
 | 
			
		||||
      const recalc = () => {
 | 
			
		||||
        requestAnimationFrame(() => {
 | 
			
		||||
          this.fire('recalculateHeight')
 | 
			
		||||
          let contentWarningShown = !!composeData.contentWarningShown
 | 
			
		||||
          if (contentWarningShown !== lastContentWarningShown) {
 | 
			
		||||
            // TODO: this animation lasts 333ms, hence need to recalculate again
 | 
			
		||||
            setTimeout(() => {
 | 
			
		||||
              requestAnimationFrame(() => {
 | 
			
		||||
                this.fire('recalculateHeight')
 | 
			
		||||
              })
 | 
			
		||||
            }, 350)
 | 
			
		||||
          }
 | 
			
		||||
          lastContentWarningShown = contentWarningShown
 | 
			
		||||
        })
 | 
			
		||||
      }, {init: false})
 | 
			
		||||
      }
 | 
			
		||||
      // debounce AND throttle due to 333ms content warning animation
 | 
			
		||||
      const debounced = debounce(recalc, DEBOUNCE_DELAY)
 | 
			
		||||
      const throttled = throttle(() => {
 | 
			
		||||
        debounced()
 | 
			
		||||
        recalc()
 | 
			
		||||
      }, THROTTLE_DELAY, {
 | 
			
		||||
        leading: true,
 | 
			
		||||
        trailing: true
 | 
			
		||||
      })
 | 
			
		||||
      this.observe('composeData', throttled)
 | 
			
		||||
    },
 | 
			
		||||
    components: {
 | 
			
		||||
      ComposeBox
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue