1- import { initProvider , ResultData } from './provider' ;
1+ import { initProvider } from './provider' ;
22import * as Y from 'yjs' ;
3- import { collaborationLog } from '@excel/shared' ;
3+ import { collaborationLog , CollaborationProvider } from '@excel/shared' ;
44import { SYNC_FLAG } from '@excel/shared' ;
55import { DEFAULT_UPDATE } from './provider/util' ;
66
@@ -11,7 +11,13 @@ function shouldSkip(isServer: boolean, tran: Y.Transaction) {
1111 return false ;
1212}
1313
14- export async function initCollaboration ( doc : Y . Doc ) : Promise < ResultData > {
14+ export async function initCollaboration (
15+ doc : Y . Doc ,
16+ ) : Promise < {
17+ provider : CollaborationProvider ;
18+ isServer : boolean ;
19+ isInit : boolean ;
20+ } > {
1521 const { provider, isServer } = initProvider ( doc ) ;
1622
1723 doc . on ( 'update' , ( update : Uint8Array , _b , _c , tran ) => {
@@ -24,11 +30,13 @@ export async function initCollaboration(doc: Y.Doc): Promise<ResultData> {
2430 provider . subscribe ( ) ;
2531
2632 const result = await provider . retrieveHistory ( ) ;
33+ let isInit = false ;
2734 if ( result . length > 0 ) {
2835 Y . applyUpdate ( doc , Y . mergeUpdates ( result ) , SYNC_FLAG . SKIP_UPDATE ) ;
2936 } else {
37+ isInit = true ;
3038 Y . applyUpdate ( doc , DEFAULT_UPDATE , SYNC_FLAG . SKIP_UNDO_REDO ) ;
3139 }
3240
33- return { isServer, provider } ;
41+ return { isServer, provider, isInit } ;
3442}
0 commit comments