Skip to content

Commit 0d5d8df

Browse files
Copilotjaviercn
andcommitted
Make PersistAsync method void returning instead of Task returning
Co-authored-by: javiercn <[email protected]>
1 parent 970977b commit 0d5d8df

File tree

6 files changed

+15
-17
lines changed

6 files changed

+15
-17
lines changed

src/Components/Components/src/IPersistentComponentStateSerializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ namespace Microsoft.AspNetCore.Components;
77

88
internal interface IPersistentComponentStateSerializer
99
{
10-
Task PersistAsync(Type type, object value, IBufferWriter<byte> writer);
10+
void PersistAsync(Type type, object value, IBufferWriter<byte> writer);
1111
object Restore(Type type, ReadOnlySequence<byte> data);
1212
}

src/Components/Components/src/PersistentComponentStateSerializer.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ public abstract class PersistentComponentStateSerializer<T> : IPersistentCompone
1616
/// </summary>
1717
/// <param name="value">The value to serialize.</param>
1818
/// <param name="writer">The buffer writer to write the serialized data to.</param>
19-
/// <returns>A task that represents the asynchronous serialization operation.</returns>
20-
public abstract Task PersistAsync(T value, IBufferWriter<byte> writer);
19+
public abstract void PersistAsync(T value, IBufferWriter<byte> writer);
2120

2221
/// <summary>
2322
/// Deserializes a value of type <typeparamref name="T"/> from the provided <paramref name="data"/>.
@@ -30,7 +29,7 @@ public abstract class PersistentComponentStateSerializer<T> : IPersistentCompone
3029
/// <summary>
3130
/// Explicit interface implementation for non-generic serialization.
3231
/// </summary>
33-
Task IPersistentComponentStateSerializer.PersistAsync(Type type, object value, IBufferWriter<byte> writer)
32+
void IPersistentComponentStateSerializer.PersistAsync(Type type, object value, IBufferWriter<byte> writer)
3433
=> PersistAsync((T)value, writer);
3534

3635
/// <summary>

src/Components/Components/src/PersistentStateValueProvider.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,26 +71,27 @@ public void Subscribe(ComponentState subscriber, in CascadingParameterInfo param
7171
// Resolve serializer outside the lambda
7272
var customSerializer = ResolveSerializer(propertyType);
7373

74-
_subscriptions[subscriber] = state.RegisterOnPersisting(async () =>
74+
_subscriptions[subscriber] = state.RegisterOnPersisting(() =>
7575
{
7676
var storageKey = ComputeKey(subscriber, propertyName);
7777
var propertyGetter = ResolvePropertyGetter(subscriber.Component.GetType(), propertyName);
7878
var property = propertyGetter.GetValue(subscriber.Component);
7979
if (property == null)
8080
{
81-
return;
81+
return Task.CompletedTask;
8282
}
8383

8484
if (customSerializer != null)
8585
{
8686
using var writer = new PooledArrayBufferWriter<byte>();
87-
await customSerializer.PersistAsync(propertyType, property, writer);
87+
customSerializer.PersistAsync(propertyType, property, writer);
8888
state.PersistAsBytes(storageKey, writer.WrittenMemory.ToArray());
89-
return;
89+
return Task.CompletedTask;
9090
}
9191

9292
// Fallback to JSON serialization
9393
state.PersistAsJson(storageKey, property, propertyType);
94+
return Task.CompletedTask;
9495
}, subscriber.Renderer.GetComponentRenderMode(subscriber.Component));
9596
}
9697

@@ -331,13 +332,13 @@ private static bool IsSerializableKey(object key)
331332
/// <param name="key">The key to use to persist the state.</param>
332333
/// <param name="instance">The instance to persist.</param>
333334
/// <param name="serializer">The custom serializer to use for serialization.</param>
334-
internal async Task PersistAsync<TValue>(string key, TValue instance, PersistentComponentStateSerializer<TValue> serializer)
335+
internal void PersistAsync<TValue>(string key, TValue instance, PersistentComponentStateSerializer<TValue> serializer)
335336
{
336337
ArgumentNullException.ThrowIfNull(key);
337338
ArgumentNullException.ThrowIfNull(serializer);
338339

339340
using var writer = new PooledArrayBufferWriter<byte>();
340-
await serializer.PersistAsync(instance, writer);
341+
serializer.PersistAsync(instance, writer);
341342
state.PersistAsBytes(key, writer.WrittenMemory.ToArray());
342343
}
343344

src/Components/Components/src/PublicAPI.Unshipped.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Microsoft.AspNetCore.Components.PersistentStateAttribute.PersistentStateAttribut
1818
Microsoft.AspNetCore.Components.Infrastructure.PersistentStateProviderServiceCollectionExtensions
1919
Microsoft.AspNetCore.Components.PersistentComponentStateSerializer<T>
2020
Microsoft.AspNetCore.Components.PersistentComponentStateSerializer<T>.PersistentComponentStateSerializer() -> void
21-
abstract Microsoft.AspNetCore.Components.PersistentComponentStateSerializer<T>.PersistAsync(T value, System.Buffers.IBufferWriter<byte>! writer) -> System.Threading.Tasks.Task!
21+
abstract Microsoft.AspNetCore.Components.PersistentComponentStateSerializer<T>.PersistAsync(T value, System.Buffers.IBufferWriter<byte>! writer) -> void
2222
abstract Microsoft.AspNetCore.Components.PersistentComponentStateSerializer<T>.Restore(System.Buffers.ReadOnlySequence<byte> data) -> T
2323
static Microsoft.AspNetCore.Components.Infrastructure.RegisterPersistentComponentStateServiceCollectionExtensions.AddPersistentServiceRegistration<TService>(Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Microsoft.AspNetCore.Components.IComponentRenderMode! componentRenderMode) -> Microsoft.Extensions.DependencyInjection.IServiceCollection!
2424
static Microsoft.AspNetCore.Components.Infrastructure.ComponentsMetricsServiceCollectionExtensions.AddComponentsMetrics(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection!

src/Components/Components/test/IPersistentComponentStateSerializerTests.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace Microsoft.AspNetCore.Components;
1212
public class IPersistentComponentStateSerializerTests
1313
{
1414
[Fact]
15-
public async Task PersistAsync_CanUseCustomSerializer()
15+
public void PersistAsync_CanUseCustomSerializer()
1616
{
1717
// Arrange
1818
var currentState = new Dictionary<string, byte[]>();
@@ -25,7 +25,7 @@ public async Task PersistAsync_CanUseCustomSerializer()
2525
state.PersistingState = true;
2626

2727
// Act
28-
await stateValueProvider.PersistAsync("test-key", testValue, customSerializer);
28+
stateValueProvider.PersistAsync("test-key", testValue, customSerializer);
2929

3030
// Assert
3131
state.PersistingState = false;
@@ -64,11 +64,10 @@ public void TryTake_CanUseCustomSerializer()
6464

6565
private class TestStringSerializer : PersistentComponentStateSerializer<string>
6666
{
67-
public override Task PersistAsync(string value, IBufferWriter<byte> writer)
67+
public override void PersistAsync(string value, IBufferWriter<byte> writer)
6868
{
6969
var bytes = Encoding.UTF8.GetBytes(value);
7070
writer.Write(bytes);
71-
return Task.CompletedTask;
7271
}
7372

7473
public override string Restore(ReadOnlySequence<byte> data)

src/Components/test/testassets/TestContentPackage/CustomIntSerializer.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@ namespace TestContentPackage;
1313
/// </summary>
1414
public class CustomIntSerializer : PersistentComponentStateSerializer<int>
1515
{
16-
public override Task PersistAsync(int value, IBufferWriter<byte> writer)
16+
public override void PersistAsync(int value, IBufferWriter<byte> writer)
1717
{
1818
var customFormat = $"CUSTOM:{value}";
1919
var bytes = Encoding.UTF8.GetBytes(customFormat);
2020
writer.Write(bytes);
21-
return Task.CompletedTask;
2221
}
2322

2423
public override int Restore(ReadOnlySequence<byte> data)

0 commit comments

Comments
 (0)