@@ -297,6 +297,10 @@ protected async Task StreamingSync(CancellationToken? signal, PowerSyncConnectio
297
297
UpdateSyncStatus ( new SyncStatusOptions
298
298
{
299
299
Connected = false ,
300
+ DataFlow = new SyncDataFlowStatus
301
+ {
302
+ DownloadError = ex
303
+ }
300
304
} ) ;
301
305
302
306
// On error, wait a little before retrying
@@ -466,7 +470,13 @@ protected async Task<StreamingSyncIterationResult> StreamingSyncIteration(Cancel
466
470
{
467
471
Connected = true ,
468
472
LastSyncedAt = DateTime . Now ,
469
- DataFlow = new SyncDataFlowStatus { Downloading = false }
473
+ DataFlow = new SyncDataFlowStatus
474
+ {
475
+ Downloading = false
476
+ }
477
+ } , new UpdateSyncStatusOptions
478
+ {
479
+ ClearDownloadError = true
470
480
} ) ;
471
481
472
482
}
@@ -546,7 +556,9 @@ protected async Task<StreamingSyncIterationResult> StreamingSyncIteration(Cancel
546
556
//
547
557
await DelayRetry ( ) ;
548
558
return new StreamingSyncIterationResult { Retry = true } ;
549
- } else if ( remainingSeconds < 30 ) {
559
+ }
560
+ else if ( remainingSeconds < 30 )
561
+ {
550
562
logger . LogDebug ( "Token will expire soon; reconnect" ) ;
551
563
// Pre-emptively refresh the token
552
564
Options . Remote . InvalidateCredentials ( ) ;
@@ -563,8 +575,13 @@ protected async Task<StreamingSyncIterationResult> StreamingSyncIteration(Cancel
563
575
UpdateSyncStatus ( new SyncStatusOptions
564
576
{
565
577
Connected = true ,
566
- LastSyncedAt = DateTime . Now
567
- } ) ;
578
+ LastSyncedAt = DateTime . Now ,
579
+ } ,
580
+ new UpdateSyncStatusOptions
581
+ {
582
+ ClearDownloadError = true
583
+ }
584
+ ) ;
568
585
}
569
586
else if ( validatedCheckpoint == targetCheckpoint )
570
587
{
@@ -590,8 +607,12 @@ protected async Task<StreamingSyncIterationResult> StreamingSyncIteration(Cancel
590
607
LastSyncedAt = DateTime . Now ,
591
608
DataFlow = new SyncDataFlowStatus
592
609
{
593
- Downloading = false
610
+ Downloading = false ,
594
611
}
612
+ } ,
613
+ new UpdateSyncStatusOptions
614
+ {
615
+ ClearDownloadError = true
595
616
} ) ;
596
617
}
597
618
}
@@ -661,6 +682,14 @@ await locks.ObtainLock(new LockOptions<Task>
661
682
662
683
checkedCrudItem = nextCrudItem ;
663
684
await Options . UploadCrud ( ) ;
685
+ UpdateSyncStatus ( new SyncStatusOptions
686
+ {
687
+ } ,
688
+ new UpdateSyncStatusOptions
689
+ {
690
+ ClearUploadError = true
691
+ } ) ;
692
+
664
693
}
665
694
else
666
695
{
@@ -672,7 +701,14 @@ await locks.ObtainLock(new LockOptions<Task>
672
701
catch ( Exception ex )
673
702
{
674
703
checkedCrudItem = null ;
675
- UpdateSyncStatus ( new SyncStatusOptions { DataFlow = new SyncDataFlowStatus { Uploading = false } } ) ;
704
+ UpdateSyncStatus ( new SyncStatusOptions
705
+ {
706
+ DataFlow = new SyncDataFlowStatus
707
+ {
708
+ Uploading = false ,
709
+ UploadError = ex
710
+ }
711
+ } ) ;
676
712
677
713
await DelayRetry ( ) ;
678
714
@@ -706,7 +742,10 @@ public async Task WaitForReady()
706
742
await Task . CompletedTask ;
707
743
}
708
744
709
- protected void UpdateSyncStatus ( SyncStatusOptions options )
745
+ protected record UpdateSyncStatusOptions (
746
+ bool ? ClearDownloadError = null , bool ? ClearUploadError = null
747
+ ) ;
748
+ protected void UpdateSyncStatus ( SyncStatusOptions options , UpdateSyncStatusOptions ? updateOptions = null )
710
749
{
711
750
var updatedStatus = new SyncStatus ( new SyncStatusOptions
712
751
{
@@ -716,7 +755,9 @@ protected void UpdateSyncStatus(SyncStatusOptions options)
716
755
DataFlow = new SyncDataFlowStatus
717
756
{
718
757
Uploading = options . DataFlow ? . Uploading ?? SyncStatus . DataFlowStatus . Uploading ,
719
- Downloading = options . DataFlow ? . Downloading ?? SyncStatus . DataFlowStatus . Downloading
758
+ Downloading = options . DataFlow ? . Downloading ?? SyncStatus . DataFlowStatus . Downloading ,
759
+ DownloadError = updateOptions ? . ClearDownloadError == true ? null : options . DataFlow ? . DownloadError ?? SyncStatus . DataFlowStatus . DownloadError ,
760
+ UploadError = updateOptions ? . ClearUploadError == true ? null : options . DataFlow ? . UploadError ?? SyncStatus . DataFlowStatus . UploadError ,
720
761
}
721
762
} ) ;
722
763
0 commit comments