Skip to content

Commit f244281

Browse files
committed
Fix #22 - SerializerSettings were not being passed to PostgresChangesResponse
1 parent ba3b2e5 commit f244281

File tree

5 files changed

+21
-8
lines changed

5 files changed

+21
-8
lines changed

Realtime/PostgresChanges/PostgresChangesResponse.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public PostgresChangesResponse(JsonSerializerSettings serializerSettings) : base
1717
public class PostgresChangesResponse : SocketResponse<PostgresChangesPayload<SocketResponsePayload>>
1818
{
1919
public PostgresChangesResponse(JsonSerializerSettings serializerSettings) : base(serializerSettings)
20-
{ }
20+
{}
2121

2222
/// <summary>
2323
/// Hydrates the referenced record into a Model (if possible).

Realtime/Realtime.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<Version Condition=" '$(Version)' == '' ">$(VersionPrefix)</Version>
3333
</PropertyGroup>
3434
<ItemGroup>
35-
<PackageReference Include="postgrest-csharp" Version="3.1.2" />
35+
<PackageReference Include="postgrest-csharp" Version="3.1.3" />
3636
<PackageReference Include="supabase-core" Version="0.0.2" />
3737
<PackageReference Include="Websocket.Client" Version="4.4.43" />
3838
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />

Realtime/RealtimeChannel.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,10 @@ internal void HandleSocketMessage(SocketResponseEventArgs args)
513513
{
514514
case EventType.PostgresChanges:
515515
var deserialize = JsonConvert.DeserializeObject<PostgresChangesResponse>(args.Response.Json!, Options.SerializerSettings);
516+
516517
deserialize!.Json = args.Response.Json;
518+
deserialize.serializerSettings = Options.SerializerSettings;
519+
517520
var newArgs = new PostgresChangesEventArgs(deserialize!);
518521

519522
// Invoke '*' listener

Realtime/Socket/SocketResponse.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Newtonsoft.Json;
2+
using Newtonsoft.Json.Converters;
23
using Postgrest.Models;
34
using Supabase.Realtime.Interfaces;
45
using Supabase.Realtime.PostgresChanges;
@@ -24,7 +25,8 @@ public SocketResponse(JsonSerializerSettings serializerSettings) : base(serializ
2425
/// </summary>
2526
public class SocketResponse : IRealtimeSocketResponse
2627
{
27-
protected JsonSerializerSettings serializerSettings;
28+
internal JsonSerializerSettings serializerSettings;
29+
2830
public SocketResponse(JsonSerializerSettings serializerSettings)
2931
{
3032
this.serializerSettings = serializerSettings;

RealtimeTests/Channel.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -194,17 +194,25 @@ public async Task ChannelReceivesUpdateCallback()
194194
{
195195
var tsc = new TaskCompletionSource<bool>();
196196

197+
var result = await RestClient.Table<Todo>().Order(x => x.InsertedAt, Postgrest.Constants.Ordering.Descending).Get();
198+
var model = result.Models.First();
199+
var newDetails = $"I'm an updated item ✏️ - {DateTime.Now}";
200+
197201
var channel = SocketClient.Channel("realtime", "public", "todos");
198202

199-
channel.OnUpdate += (s, args) => tsc.SetResult(true);
203+
channel.OnUpdate += (s, args) =>
204+
{
205+
var updated = args.Response.Model<Todo>();
206+
Assert.AreEqual(newDetails, updated.Details);
207+
Assert.AreEqual(model.Id, updated.Id);
208+
Assert.AreEqual(model.UserId, updated.UserId);
209+
tsc.SetResult(true);
210+
};
200211

201212
await channel.Subscribe();
202213

203-
var result = await RestClient.Table<Todo>().Get();
204-
var model = result.Models.Last();
205-
206214
await RestClient.Table<Todo>()
207-
.Set(x => x.Details, "I'm an updated item ✏️")
215+
.Set(x => x.Details, newDetails)
208216
.Match(model)
209217
.Update();
210218

0 commit comments

Comments
 (0)