Skip to content

Commit c22f36e

Browse files
committed
Add MAUI changelog, emit SyncStatus instead of SyncStatusOptions, changelog examples
1 parent 65c19d8 commit c22f36e

3 files changed

Lines changed: 39 additions & 7 deletions

File tree

PowerSync/PowerSync.Common/CHANGELOG.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## 0.0.11-alpha.1
44

5+
- `StatusUpdated` and `StatusChanged` now both emit `SyncStatus` objects instead of just `StatusChanged`.
56
- Converted most instances of a class inheriting from `EventStream<T>` into a class with an `EventManager` property called `Events`. This allows for subscribing to individual events instead of subscribing to all events and then filtering events manually.
67

78
```csharp
@@ -16,9 +17,28 @@ foreach (PowerSyncDBEvent update in listener)
1617
}
1718
}
1819

20+
// Old (async)
21+
var listener = db.ListenAsync(cts.Token);
22+
await foreach (PowerSyncDBEvent update in listener)
23+
{
24+
// Manually filter updates
25+
if (update.StatusChanged != null)
26+
{
27+
Console.WriteLine("status changed: " + update.StatusChanged!);
28+
}
29+
}
30+
1931
// New
2032
var listener = db.Events.OnStatusChanged.Listen(cts.Token);
21-
foreach (PowerSyncDBEvents.StatusChangedEvent update in listener)
33+
await foreach (PowerSyncDBEvents.StatusChanged update in listener)
34+
{
35+
// Events are filtered inherently
36+
Console.WriteLine("status changed: " + update.Status);
37+
}
38+
39+
// New (async) - recommended for most use cases
40+
var listener = db.Events.OnStatusChanged.ListenAsync(cts.Token);
41+
await foreach (PowerSyncDBEvents.StatusChanged update in listener)
2242
{
2343
// Events are filtered inherently
2444
Console.WriteLine("status changed: " + update.Status);

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

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,9 @@ public class StreamingSyncImplementationEvents : EventManager
9393
{
9494
public interface IStreamingSyncImplementationEvent;
9595

96-
public class StatusUpdatedEvent(SyncStatusOptions status) : IStreamingSyncImplementationEvent
96+
public class StatusUpdatedEvent(SyncStatus status) : IStreamingSyncImplementationEvent
9797
{
98-
public SyncStatusOptions Status { get; set; } = status;
98+
public SyncStatus Status { get; set; } = status;
9999
}
100100
public class StatusChangedEvent(SyncStatus status) : IStreamingSyncImplementationEvent
101101
{
@@ -853,12 +853,20 @@ protected void UpdateSyncStatus(SyncStatusOptions options, UpdateSyncStatusOptio
853853
{
854854
SyncStatus = updatedStatus;
855855
logger.LogDebug("[Sync status changed]: {message}", updatedStatus.ToJSON());
856+
857+
// Emit events using new SyncStatus objects to prevent local modifications propagating to StreamingSyncImplementation
858+
856859
// Only trigger this if there was a change
857-
Events.Emit(new StreamingSyncImplementationEvents.StatusChangedEvent(updatedStatus));
858-
}
860+
Events.Emit(new StreamingSyncImplementationEvents.StatusChangedEvent(new SyncStatus(updatedStatus.Options)));
859861

860-
// Trigger this for all updates
861-
Events.Emit(new StreamingSyncImplementationEvents.StatusUpdatedEvent(options));
862+
// Emit StatusUpdated event wrapping a new SyncStatus object (prevents race conditions)
863+
Events.Emit(new StreamingSyncImplementationEvents.StatusUpdatedEvent(new SyncStatus(updatedStatus.Options)));
864+
}
865+
else
866+
{
867+
// Emit StatusUpdated event directly wrapping `updatedStatus` (not exposed elsewhere)
868+
Events.Emit(new StreamingSyncImplementationEvents.StatusUpdatedEvent(updatedStatus));
869+
}
862870
}
863871
catch (Exception ex)
864872
{

PowerSync/PowerSync.Maui/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# PowerSync.Maui Changelog
22

3+
## 0.0.9-alpha.1
4+
5+
- Upstream PowerSync.Common version bump (See Powersync.Common changelog 0.0.11-alpha.1 for more information)
6+
37
## 0.0.8-alpha.1
48

59
- Upstream PowerSync.Common version bump (See Powersync.Common changelog 0.0.10-alpha.1 for more information)

0 commit comments

Comments
 (0)