public async Task <OperationResult <VoidResponse> > PowerUpOrDown(PowerUpDownModel model, CancellationToken ct) { var results = Validate(model); if (results != null) { return(new OperationResult <VoidResponse>(results)); } return(await _ditchClient.PowerUpOrDown(model, ct)); }
public override async Task <OperationResult <VoidResponse> > PowerUpOrDown(PowerUpDownModel model, CancellationToken ct) { var isConnected = await TryReconnectChain(ct); if (!isConnected) { return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.EnableConnectToBlockchain))); } var keys = ToKeyArr(model.ActiveKey); if (keys == null) { return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.WrongPrivateActimeKey))); } var result = new OperationResult <VoidResponse>(); BaseOperation op; Asset asset; if (model.PowerAction == PowerAction.PowerUp) { asset = new Asset($"{model.Value.ToString(CultureInfo.InvariantCulture)} GOLOS"); op = new TransferToVestingOperation(model.From, model.To, asset); } else { var vestsExchangeRatio = await GetVestsExchangeRatio(ct); if (!vestsExchangeRatio.IsSuccess) { return(new OperationResult <VoidResponse>(vestsExchangeRatio.Exception)); } asset = new Asset($"{(model.Value / vestsExchangeRatio.Result).ToString("F6", CultureInfo.InvariantCulture)} GESTS"); op = new WithdrawVestingOperation(model.From, asset); } var resp = await _operationManager.BroadcastOperationsSynchronous(keys, ct, op); if (resp.IsError) { result.Exception = new RequestException(resp); } else { result.Result = new VoidResponse(); } return(result); }
public override async Task <OperationResult <VoidResponse> > PowerUpOrDown(PowerUpDownModel model, CancellationToken ct) { var isConnected = await TryReconnectChain(ct); if (!isConnected) { return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.EnableConnectToBlockchain))); } var keys = ToKeyArr(model.ActiveKey); if (keys == null) { return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.WrongPrivateActimeKey))); } var asset = new Asset(); BaseOperation op; if (model.PowerAction == PowerAction.PowerUp) { asset.FromOldFormat($"{model.Value.ToString(CultureInfo.InvariantCulture)} {Config.Steem}"); op = new TransferToVestingOperation(model.From, model.To, asset); } else { var vestsExchangeRatio = await GetVestsExchangeRatio(ct); if (!vestsExchangeRatio.IsSuccess) { return(new OperationResult <VoidResponse>(vestsExchangeRatio.Exception)); } asset.FromOldFormat($"{(model.Value / vestsExchangeRatio.Result).ToString("F6", CultureInfo.InvariantCulture)} {Config.Vests}"); op = new WithdrawVestingOperation(model.Login, asset); } return(await Broadcast(keys, new[] { op }, ct)); }
public abstract Task <OperationResult <VoidResponse> > PowerUpOrDown(PowerUpDownModel model, CancellationToken ct);
private Task <OperationResult <VoidResponse> > PowerDownOrDown(PowerUpDownModel model, CancellationToken ct) { return(Api.PowerUpOrDown(model, ct)); }
public async Task <OperationResult <VoidResponse> > TryPowerUpOrDown(BalanceModel balance, PowerAction powerAction) { var model = new PowerUpDownModel(balance, powerAction); return(await TryRunTask <PowerUpDownModel, VoidResponse>(PowerDownOrDown, OnDisposeCts.Token, model)); }