add loading event logic
This commit is contained in:
		
							parent
							
								
									e90d9de5ed
								
							
						
					
					
						commit
						28e1b19e57
					
				@ -17,6 +17,7 @@ import { Observable } from 'lib0/observable'
 | 
			
		||||
import * as random from 'lib0/random'
 | 
			
		||||
import * as map from 'lib0/map'
 | 
			
		||||
import * as array from 'lib0/array'
 | 
			
		||||
import * as promise from 'lib0/promise'
 | 
			
		||||
 | 
			
		||||
export const generateNewClientId = random.uint32
 | 
			
		||||
 | 
			
		||||
@ -71,6 +72,13 @@ export class Doc extends Observable {
 | 
			
		||||
    this.shouldLoad = shouldLoad
 | 
			
		||||
    this.autoLoad = autoLoad
 | 
			
		||||
    this.meta = meta
 | 
			
		||||
    this.isLoaded = false
 | 
			
		||||
    this.whenLoaded = promise.create(resolve => {
 | 
			
		||||
      this.on('load', () => {
 | 
			
		||||
        this.isLoaded = true
 | 
			
		||||
        resolve(this)
 | 
			
		||||
      })
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
 | 
			
		||||
@ -228,3 +228,19 @@ export const testSubdocsUndo = tc => {
 | 
			
		||||
  undoManager.redo()
 | 
			
		||||
  t.assert(elems.length === 1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @param {t.TestCase} tc
 | 
			
		||||
 */
 | 
			
		||||
export const testLoadDocs = async tc => {
 | 
			
		||||
  const ydoc = new Y.Doc()
 | 
			
		||||
  t.assert(ydoc.isLoaded === false)
 | 
			
		||||
  let loadedEvent = false
 | 
			
		||||
  ydoc.on('load', () => {
 | 
			
		||||
    loadedEvent = true
 | 
			
		||||
  })
 | 
			
		||||
  ydoc.emit('load', [ydoc])
 | 
			
		||||
  await ydoc.whenLoaded
 | 
			
		||||
  t.assert(loadedEvent)
 | 
			
		||||
  t.assert(ydoc.isLoaded)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user