Skip to content

Commit 2423a41

Browse files
author
Lazy Nina
committed
Add transcoder for Unstake txn type. Add support for approve component for this new txn type.
1 parent 02b4da4 commit 2423a41

File tree

3 files changed

+25
-2
lines changed

3 files changed

+25
-2
lines changed

src/app/approve/approve.component.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import {
3939
TransactionSpendingLimit,
4040
TransactionMetadataRegisterAsValidator,
4141
TransactionMetadataUnregisterAsValidator,
42-
TransactionMetadataStake,
42+
TransactionMetadataStake, TransactionMetadataUnstake,
4343
} from '../../lib/deso/transaction';
4444
import { ExtraData } from '../../types/identity';
4545
import { AccountService } from '../account.service';
@@ -610,6 +610,18 @@ export class ApproveComponent implements OnInit {
610610
);
611611
description = `stake ${stakeAmountNanos} $DESO to ${stakeValidatorPublicKey}`;
612612
break;
613+
case TransactionMetadataUnstake:
614+
const unstakeMetadata = this.transaction
615+
.metadata as TransactionMetadataUnstake;
616+
const unstakeValidatorPublicKey = this.base58KeyCheck(
617+
unstakeMetadata.validatorPublicKey
618+
);
619+
publicKeys = [unstakeValidatorPublicKey];
620+
const unstakeAmountNanos= this.hexNanosToUnitString(
621+
unstakeMetadata.unstakeAmountNanos
622+
);
623+
description = `unstake ${unstakeAmountNanos} $DESO from ${unstakeValidatorPublicKey}`;
624+
break;
613625
}
614626

615627
// Set the transaction description based on the description populated with public keys.

src/app/identity.service.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import {
3737
TransactionMetadataUpdateProfile,
3838
TransactionMetadataRegisterAsValidator,
3939
TransactionMetadataUnregisterAsValidator,
40-
TransactionMetadataStake,
40+
TransactionMetadataStake, TransactionMetadataUnstake,
4141
} from '../lib/deso/transaction';
4242
import { SwalHelper } from '../lib/helpers/swal-helper';
4343
import { AccessLevel, PublicUserInfo } from '../types/identity';
@@ -524,6 +524,7 @@ export class IdentityService {
524524
case TransactionMetadataRegisterAsValidator:
525525
case TransactionMetadataUnregisterAsValidator:
526526
case TransactionMetadataStake:
527+
case TransactionMetadataUnstake:
527528
return AccessLevel.Full;
528529

529530
case TransactionMetadataFollow:

src/lib/deso/transaction.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,15 @@ export class TransactionMetadataStake extends TransactionMetadata {
620620
stakeAmountNanos: Buffer = Buffer.alloc(0);
621621
}
622622

623+
export class TransactionMetadataUnstake extends TransactionMetadata {
624+
@Transcode(VarBuffer)
625+
validatorPublicKey: Buffer = Buffer.alloc(0);
626+
627+
// TODO: We may want a better way to handle uint256s.
628+
@Transcode(Optional(VarBuffer))
629+
unstakeAmountNanos: Buffer = Buffer.alloc(0);
630+
}
631+
623632
export const TransactionTypeMetadataMap = {
624633
1: TransactionMetadataBlockReward,
625634
2: TransactionMetadataBasicTransfer,
@@ -656,6 +665,7 @@ export const TransactionTypeMetadataMap = {
656665
34: TransactionMetadataRegisterAsValidator,
657666
35: TransactionMetadataUnregisterAsValidator,
658667
36: TransactionMetadataStake,
668+
37: TransactionMetadataUnstake,
659669
};
660670

661671
export class Transaction extends BinaryRecord {

0 commit comments

Comments
 (0)