@@ -35,8 +35,9 @@ export const createPowerSyncPersister = ((
3535 configOrStoreTableName ?: DatabasePersisterConfig | string ,
3636 onSqlCommand ?: ( sql : string , params ?: any [ ] ) => void ,
3737 onIgnoredError ?: ( error : any ) => void ,
38- ) : PowerSyncPersister =>
39- createCustomSqlitePersister (
38+ ) : PowerSyncPersister => {
39+ let tableListener : DatabaseChangeListener | undefined ;
40+ return createCustomSqlitePersister (
4041 store ,
4142 configOrStoreTableName ,
4243 async ( sql : string , params : any [ ] = [ ] ) : Promise < IdObj < any > [ ] > =>
@@ -51,20 +52,27 @@ export const createPowerSyncPersister = ((
5152 } ) ;
5253 ( async ( ) => {
5354 for await ( const update of onChange ) {
54- arrayMap ( update . changedTables , listener ) ;
55+ if ( tableListener ) {
56+ arrayMap ( update . changedTables , tableListener ) ;
57+ }
5558 }
5659 } ) ( ) ;
60+ tableListener = listener ;
5761 return abortController ;
5862 } ,
59- ( abortController : AbortController ) => abortController . abort ( ) ,
63+ ( abortController : AbortController ) => {
64+ tableListener = undefined ;
65+ abortController . abort ( ) ;
66+ } ,
6067 onSqlCommand ,
6168 onIgnoredError ,
6269 ( ) => 0 ,
6370 1 , // StoreOnly,
6471 powerSync ,
6572 'getPowerSync' ,
6673 viewUpsert ,
67- ) as PowerSyncPersister ) as typeof createPowerSyncPersisterDecl ;
74+ ) as PowerSyncPersister ;
75+ } ) as typeof createPowerSyncPersisterDecl ;
6876
6977const viewUpsert : Upsert = async (
7078 executeCommand : DatabaseExecuteCommand ,
@@ -89,9 +97,9 @@ const viewUpsert: Upsert = async (
8997 const unchangingData = objNew (
9098 arrayMap (
9199 await executeCommand (
92- 'SELECT ' +
100+ 'SELECT' +
93101 escapeColumnNames ( rowIdColumnName , ...unchangingColumnNames ) +
94- ' FROM' +
102+ 'FROM' +
95103 escapeId ( tableName ) +
96104 'WHERE' +
97105 escapeId ( rowIdColumnName ) +
0 commit comments