Skip to content

Commit bc35a95

Browse files
committed
tmp
1 parent 792fcff commit bc35a95

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

src/Components/Components/src/PersistentStateValueProvider.cs

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,7 @@ internal class ComponentSubscription
400400
private object? _lastValue = _uninitializedValue;
401401
private bool _hasPendingInitialValue;
402402
private bool _ignoreUpdatedValues;
403+
private string _storageKey;
403404
private readonly PersistentComponentState _state;
404405
private readonly ComponentState _subscriber;
405406
private readonly string _propertyName;
@@ -488,13 +489,13 @@ private void RestoreProperty()
488489
}
489490

490491
// The key needs to be computed here, do not move this outside of the lambda.
491-
var storageKey = ComputeKey(_subscriber, _propertyName);
492+
_storageKey ??= ComputeKey(_subscriber, _propertyName);
492493

493494
if (_customSerializer != null)
494495
{
495-
if (_state.TryTakeBytes(storageKey, out var data))
496+
if (_state.TryTakeBytes(ComputeKey(_subscriber, _propertyName), out var data))
496497
{
497-
Log.RestoringValueFromState(_logger, storageKey, _propertyType.Name, _propertyName);
498+
Log.RestoringValueFromState(_logger, ComputeKey(_subscriber, _propertyName), _propertyType.Name, _propertyName);
498499
var sequence = new ReadOnlySequence<byte>(data!);
499500
_lastValue = _customSerializer.Restore(_propertyType, sequence);
500501
if (!skipNotifications)
@@ -505,14 +506,14 @@ private void RestoreProperty()
505506
}
506507
else
507508
{
508-
Log.ValueNotFoundInPersistentState(_logger, storageKey, _propertyType.Name, "null", _propertyName);
509+
Log.ValueNotFoundInPersistentState(_logger, ComputeKey(_subscriber, _propertyName), _propertyType.Name, "null", _propertyName);
509510
}
510511
}
511512
else
512513
{
513-
if (_state.TryTakeFromJson(storageKey, _propertyType, out var value))
514+
if (_state.TryTakeFromJson(ComputeKey(_subscriber, _propertyName), _propertyType, out var value))
514515
{
515-
Log.RestoredValueFromPersistentState(_logger, storageKey, _propertyType.Name, "null", _propertyName);
516+
Log.RestoredValueFromPersistentState(_logger, ComputeKey(_subscriber, _propertyName), _propertyType.Name, "null", _propertyName);
516517
_lastValue = value;
517518
if (!skipNotifications)
518519
{
@@ -522,7 +523,7 @@ private void RestoreProperty()
522523
}
523524
else
524525
{
525-
Log.NoValueToRestoreFromState(_logger, storageKey, _propertyType.Name, _propertyName);
526+
Log.NoValueToRestoreFromState(_logger, ComputeKey(_subscriber, _propertyName), _propertyType.Name, _propertyName);
526527
}
527528
}
528529
}
@@ -534,28 +535,28 @@ private void RestoreProperty()
534535
private Task PersistProperty()
535536
{
536537
// The key needs to be computed here, do not move this outside of the lambda.
537-
var storageKey = ComputeKey(_subscriber, _propertyName);
538+
_storageKey ??= ComputeKey(_subscriber, _propertyName);
538539

539540
var property = _propertyGetter.GetValue(_subscriber.Component);
540541
if (property == null)
541542
{
542-
Log.SkippedPersistingNullValue(_logger, storageKey, _propertyType.Name, _subscriber.Component.GetType().Name, _propertyName);
543+
Log.SkippedPersistingNullValue(_logger, ComputeKey(_subscriber, _propertyName), _propertyType.Name, _subscriber.Component.GetType().Name, _propertyName);
543544
return Task.CompletedTask;
544545
}
545546

546547
if (_customSerializer != null)
547548
{
548-
Log.PersistingValueToState(_logger, storageKey, _propertyType.Name, _subscriber.Component.GetType().Name, _propertyName);
549+
Log.PersistingValueToState(_logger, ComputeKey(_subscriber, _propertyName), _propertyType.Name, _subscriber.Component.GetType().Name, _propertyName);
549550

550551
using var writer = new PooledArrayBufferWriter<byte>();
551552
_customSerializer.Persist(_propertyType, property, writer);
552-
_state.PersistAsBytes(storageKey, writer.WrittenMemory.ToArray());
553+
_state.PersistAsBytes(ComputeKey(_subscriber, _propertyName), writer.WrittenMemory.ToArray());
553554
return Task.CompletedTask;
554555
}
555556

556557
// Fallback to JSON serialization
557-
Log.PersistingValueToState(_logger, storageKey, _propertyType.Name, _subscriber.Component.GetType().Name, _propertyName);
558-
_state.PersistAsJson(storageKey, property, _propertyType);
558+
Log.PersistingValueToState(_logger, ComputeKey(_subscriber, _propertyName), _propertyType.Name, _subscriber.Component.GetType().Name, _propertyName);
559+
_state.PersistAsJson(ComputeKey(_subscriber, _propertyName), property, _propertyType);
559560
return Task.CompletedTask;
560561
}
561562

0 commit comments

Comments
 (0)