11import { LoroDoc , VersionVector } from "loro-crdt" ;
22import {
33 CrdtType ,
4- JoinError ,
54 JoinResponseOk ,
6- Ack ,
7- RoomError ,
8- UpdateStatusCode ,
95} from "loro-protocol" ;
106import type { CrdtAdaptorContext , CrdtDocAdaptor } from "./types" ;
117
128export interface LoroAdaptorConfig {
139 onImportError ?: ( error : Error , data : Uint8Array [ ] ) => void ;
14- onAck ?: ( ack : Ack ) => void ;
15- onUpdateStatus ?: ( ack : Ack ) => void ;
16- onRoomError ?: ( err : RoomError ) => void ;
17- // Legacy hook
18- onUpdateError ?: ( status : Ack ) => void ;
1910}
2011
2112export class LoroAdaptor implements CrdtDocAdaptor {
@@ -61,8 +52,6 @@ export class LoroAdaptor implements CrdtDocAdaptor {
6152 return this . doc . version ( ) . compare ( vv ) as 0 | 1 | - 1 | undefined ;
6253 }
6354
64- handleJoinErr ?: ( ( err : JoinError ) => Promise < void > ) | undefined ;
65-
6655 getDoc ( ) : LoroDoc {
6756 return this . doc ;
6857 }
@@ -132,6 +121,10 @@ export class LoroAdaptor implements CrdtDocAdaptor {
132121 // Pending updates may occur when concurrent changes happen
133122 }
134123 } catch ( error ) {
124+ this . config . onImportError ?.(
125+ error instanceof Error ? error : new Error ( String ( error ) ) ,
126+ updates
127+ ) ;
135128 this . ctx ! . onImportError (
136129 error instanceof Error ? error : new Error ( String ( error ) ) ,
137130 updates
@@ -148,18 +141,6 @@ export class LoroAdaptor implements CrdtDocAdaptor {
148141 }
149142 }
150143
151- handleAck ( ack : Ack ) : void {
152- this . config . onAck ?.( ack ) ;
153- if ( ack . status !== UpdateStatusCode . Ok ) {
154- this . config . onUpdateStatus ?.( ack ) ;
155- this . config . onUpdateError ?.( ack ) ;
156- }
157- }
158-
159- handleRoomError ( err : RoomError ) : void {
160- this . config . onRoomError ?.( err ) ;
161- }
162-
163144 destroy ( ) : void {
164145 if ( this . destroyed ) return ;
165146 this . destroyed = true ;
0 commit comments