Skip to content

Commit 6cb2ce6

Browse files
committed
Updated SyncStatus update handling from core instructions.
1 parent dd9a047 commit 6cb2ce6

File tree

3 files changed

+43
-37
lines changed

3 files changed

+43
-37
lines changed

PowerSync/PowerSync.Common/Client/Sync/Stream/CoreInstructions.cs

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Newtonsoft.Json.Linq;
22
using Newtonsoft.Json;
3+
using PowerSync.Common.DB.Crud;
34

45
namespace PowerSync.Common.Client.Sync.Stream;
56

@@ -83,6 +84,7 @@ public class CoreSyncStatus
8384

8485
[JsonProperty("downloading")]
8586
public DownloadProgress? Downloading { get; set; }
87+
8688
}
8789

8890
public class SyncPriorityStatus
@@ -126,4 +128,40 @@ public class FetchCredentials : Instruction
126128

127129
public class CloseSyncStream : Instruction { }
128130
public class FlushFileSystem : Instruction { }
129-
public class DidCompleteSync : Instruction { }
131+
public class DidCompleteSync : Instruction { }
132+
133+
public class CoreInstructionHelpers
134+
{
135+
public static DB.Crud.SyncPriorityStatus PriorityToStatus(SyncPriorityStatus status)
136+
{
137+
return new DB.Crud.SyncPriorityStatus
138+
{
139+
Priority = status.Priority,
140+
HasSynced = status.HasSynced ?? null,
141+
LastSyncedAt = status?.LastSyncedAt != null ? new DateTime(status!.LastSyncedAt) : null
142+
};
143+
}
144+
145+
public static DB.Crud.SyncStatusOptions CoreStatusToSyncStatus(CoreSyncStatus status)
146+
{
147+
var coreCompleteSync =
148+
status.PriorityStatus.FirstOrDefault(s => s.Priority == SyncProgress.FULL_SYNC_PRIORITY);
149+
var completeSync = coreCompleteSync != null ? PriorityToStatus(coreCompleteSync) : null;
150+
151+
return new DB.Crud.SyncStatusOptions
152+
{
153+
Connected = status.Connected,
154+
Connecting = status.Connecting,
155+
DataFlow = new DB.Crud.SyncDataFlowStatus
156+
{
157+
// We expose downloading as a boolean field, the core extension reports download information as a nullable
158+
// download status. When that status is non-null, a download is in progress.
159+
Downloading = status.Downloading != null,
160+
DownloadProgress = status.Downloading?.Buckets
161+
},
162+
LastSyncedAt = completeSync?.LastSyncedAt,
163+
HasSynced = completeSync?.HasSynced,
164+
PriorityStatusEntries = status.PriorityStatus.Select(PriorityToStatus).ToArray()
165+
};
166+
}
167+
}

PowerSync/PowerSync.Common/Client/Sync/Stream/StreamingSyncImplementation.cs

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -537,29 +537,7 @@ async Task HandleInstruction(Instruction instruction)
537537
}
538538
break;
539539
case UpdateSyncStatus syncStatus:
540-
var info = syncStatus.Status;
541-
var coreCompleteSync =
542-
info.PriorityStatus.FirstOrDefault(s => s.Priority == SyncProgress.FULL_SYNC_PRIORITY);
543-
var completeSync = coreCompleteSync != null ? CoreStatusToSyncStatus(coreCompleteSync) : null;
544-
545-
UpdateSyncStatus(new SyncStatusOptions
546-
{
547-
Connected = info.Connected,
548-
Connecting = info.Connecting,
549-
LastSyncedAt = completeSync?.LastSyncedAt,
550-
HasSynced = completeSync?.HasSynced,
551-
PriorityStatusEntries = info.PriorityStatus.Select(CoreStatusToSyncStatus).ToArray(),
552-
DataFlow = new SyncDataFlowStatus
553-
{
554-
Downloading = info.Downloading != null,
555-
DownloadProgress = info.Downloading?.Buckets
556-
}
557-
},
558-
new UpdateSyncStatusOptions
559-
{
560-
ClearDownloadError = true,
561-
}
562-
);
540+
UpdateSyncStatus(CoreInstructionHelpers.CoreStatusToSyncStatus(syncStatus.Status));
563541
break;
564542
case EstablishSyncStream establishSyncStream:
565543
if (receivingLines != null)
@@ -1048,7 +1026,7 @@ protected void UpdateSyncStatus(SyncStatusOptions options, UpdateSyncStatusOptio
10481026
{
10491027
Uploading = options.DataFlow?.Uploading ?? SyncStatus.DataFlowStatus.Uploading,
10501028
Downloading = options.DataFlow?.Downloading ?? SyncStatus.DataFlowStatus.Downloading,
1051-
DownloadProgress = options.DataFlow?.DownloadProgress ?? SyncStatus.DataFlowStatus.DownloadProgress
1029+
DownloadProgress = options.DataFlow?.DownloadProgress ?? SyncStatus.DataFlowStatus.DownloadProgress,
10521030
DownloadError = updateOptions?.ClearDownloadError == true ? null : options.DataFlow?.DownloadError ?? SyncStatus.DataFlowStatus.DownloadError,
10531031
UploadError = updateOptions?.ClearUploadError == true ? null : options.DataFlow?.UploadError ?? SyncStatus.DataFlowStatus.UploadError,
10541032
}
@@ -1071,16 +1049,6 @@ protected void UpdateSyncStatus(SyncStatusOptions options, UpdateSyncStatusOptio
10711049
}
10721050
}
10731051

1074-
private static DB.Crud.SyncPriorityStatus CoreStatusToSyncStatus(SyncPriorityStatus status)
1075-
{
1076-
return new DB.Crud.SyncPriorityStatus
1077-
{
1078-
Priority = status.Priority,
1079-
HasSynced = status.HasSynced ?? null,
1080-
LastSyncedAt = status?.LastSyncedAt != null ? new DateTime(status!.LastSyncedAt) : null
1081-
};
1082-
}
1083-
10841052
private async Task DelayRetry()
10851053
{
10861054
if (Options.RetryDelayMs.HasValue)

PowerSync/PowerSync.Common/DB/Schema/Table.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ public class TableOptions(
1515
{
1616
public Dictionary<string, List<string>> Indexes { get; set; } = indexes ?? [];
1717

18-
public bool LocalOnly { get; } = localOnly ?? false;
18+
public bool LocalOnly { get; set; } = localOnly ?? false;
1919

20-
public bool InsertOnly { get; } = insertOnly ?? false;
20+
public bool InsertOnly { get; set; } = insertOnly ?? false;
2121

2222
public string? ViewName { get; } = viewName;
2323

0 commit comments

Comments
 (0)