private void ApplyChangeLocal(RemoteDataChange change) { var fieldInfo = GetFieldInfo(change.FieldName); fieldInfo.SetValue(Object, change.FieldValue); PropertyChanged(change.FieldName); }
public RemoteDataChange CreateRemoveChange(AbstractSharedMessage message) { return(RemoteDataChange.Create( message.FullPath, string.Empty, null, null)); }
public RemoteDataChange CreateMarkProcededChange(AbstractSharedMessage message) { return(RemoteDataChange.Create( string.Format("{0}/{1}", message.FullPath, nameof(message.Proceeded)), nameof(message.Proceeded), true, null)); }
public override RemoteDataChange CreateChange(string fieldName, object fieldValue) { return(RemoteDataChange.Create( _fullPath + fieldName, fieldName, fieldValue, null)); }
public void UpdateChildData(string fieldName, object newValue) { _storage.AddChange(RemoteDataChange.Create( FullPath + fieldName, fieldName, newValue, ApplyChangeLocal)); }
protected override async Task ApplyChangeRemote(RemoteDataChange change) { var changeType = change.FieldValue.GetType(); if (changeType.IsPrimitive || change.FieldValue is String) { await _reference.Root.Child(change.FullPath).SetValueAsync(change.FieldValue); } else { await _reference.Root.Child(change.FullPath).SetRawJsonValueAsync(JsonConvert.SerializeObject(change.FieldValue)); } }
public void AddChange(RemoteDataChange change) { ChangeApplied(change); _pendingChanges.Push(change); }
private void ApplyChangeOnLocalHandler(RemoteDataChange change) { _objectHandler.ApplyChangeLocal(change); PropertyChanged(change.FieldName); }
private void ChangeApplied(RemoteDataChange change) { change.ApplyCallback?.Invoke(change); }
//public abstract Task<TResult> PerformTransaction<TResult>(UpdateFunc<TResult, T> updateFunc) where TResult : struct; //public delegate TRes UpdateFunc<TRes, Tin>(object oldValue, out Tin newValue) where TRes : struct; protected abstract Task ApplyChangeRemote(RemoteDataChange change);
public void ApplyChangeLocal(RemoteDataChange change) { var fieldInfo = typeof(T).GetField(change.FieldName); fieldInfo.SetValue(Object, change.FieldValue); }
public async Task ApplyChange(RemoteDataChange change) { await ApplyChangeRemote(change); }
public void AddChange(RemoteDataChange change) { _storage.AddChange(change); }