コード例 #1
0
        public override async Task <OperationResult <VoidResponse> > ClaimRewards(ClaimRewardsModel model, CancellationToken ct)
        {
            var isConnected = await TryReconnectChain(ct);

            if (!isConnected)
            {
                return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.EnableConnectToBlockchain)));
            }

            var keys = ToKeyArr(model.PostingKey);

            if (keys == null)
            {
                return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.WrongPrivatePostingKey)));
            }

            var assetSteem = new Asset();

            assetSteem.FromOldFormat($"{model.RewardSteem} {Config.Steem}");

            var assetSp = new Asset();

            assetSp.FromOldFormat($"{(model.RewardSp / _vestsExchangeRatio.Value).ToString(CultureInfo.InvariantCulture) } {Config.Vests}");

            var assetSbd = new Asset();

            assetSbd.FromOldFormat($"{model.RewardSbd} {Config.Sbd}");

            var op = new ClaimRewardBalanceOperation(model.Login, assetSteem, assetSbd, assetSp);

            return(await Broadcast(keys, new BaseOperation[] { op }, ct));
        }
コード例 #2
0
        public async Task <OperationResult <VoidResponse> > ClaimRewards(ClaimRewardsModel model, CancellationToken ct)
        {
            var results = Validate(model);

            if (results != null)
            {
                return(new OperationResult <VoidResponse>(results));
            }

            return(await _ditchClient.ClaimRewards(model, ct));
        }
コード例 #3
0
        public async Task <Exception> TryClaimRewards(BalanceModel balance)
        {
            var claimRewardsModel = new ClaimRewardsModel(balance.UserInfo, balance.RewardSteem, balance.RewardSp, balance.RewardSbd);
            var response          = await TryRunTask <ClaimRewardsModel, VoidResponse>(ClaimRewards, CancellationToken.None, claimRewardsModel);

            if (response.IsSuccess)
            {
                Balances.ForEach(x =>
                {
                    if (x.UserInfo.Chain == balance.UserInfo.Chain &&
                        x.UserInfo.Login.Equals(balance.UserInfo.Login, StringComparison.OrdinalIgnoreCase))
                    {
                        x.RewardSteem = x.RewardSbd = x.RewardSp = 0;
                    }
                });
                await TryUpdateAccountInfo(balance.UserInfo);
            }

            return(response.Exception);
        }
コード例 #4
0
 public override Task <OperationResult <VoidResponse> > ClaimRewards(ClaimRewardsModel model, CancellationToken ct)
 {
     throw new NotImplementedException();
 }
コード例 #5
0
 public abstract Task <OperationResult <VoidResponse> > ClaimRewards(ClaimRewardsModel model, CancellationToken ct);
コード例 #6
0
 private Task <OperationResult <VoidResponse> > ClaimRewards(ClaimRewardsModel claimRewardsModel, CancellationToken ct)
 {
     return(Api.ClaimRewards(claimRewardsModel, ct));
 }