Skip to content

Commit c7e563b

Browse files
Lazy Ninalazynina
authored andcommitted
Add transcoder for Unstake txn type. Add support for approve component for this new txn type.
1 parent 2cd728d commit c7e563b

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

src/app/approve/approve.component.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import {
4040
TransactionMetadataRegisterAsValidator,
4141
TransactionMetadataUnregisterAsValidator,
4242
TransactionMetadataStake,
43+
TransactionMetadataUnstake,
4344
} from '../../lib/deso/transaction';
4445
import { ExtraData } from '../../types/identity';
4546
import { AccountService } from '../account.service';
@@ -610,6 +611,18 @@ export class ApproveComponent implements OnInit {
610611
);
611612
description = `stake ${stakeAmountNanos} $DESO to ${stakeValidatorPublicKey}`;
612613
break;
614+
case TransactionMetadataUnstake:
615+
const unstakeMetadata = this.transaction
616+
.metadata as TransactionMetadataUnstake;
617+
const unstakeValidatorPublicKey = this.base58KeyCheck(
618+
unstakeMetadata.validatorPublicKey
619+
);
620+
publicKeys = [unstakeValidatorPublicKey];
621+
const unstakeAmountNanos = this.hexNanosToUnitString(
622+
unstakeMetadata.unstakeAmountNanos
623+
);
624+
description = `unstake ${unstakeAmountNanos} $DESO from ${unstakeValidatorPublicKey}`;
625+
break;
613626
}
614627

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

src/app/identity.service.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import {
3838
TransactionMetadataRegisterAsValidator,
3939
TransactionMetadataUnregisterAsValidator,
4040
TransactionMetadataStake,
41+
TransactionMetadataUnstake,
4142
} from '../lib/deso/transaction';
4243
import { SwalHelper } from '../lib/helpers/swal-helper';
4344
import { AccessLevel, PublicUserInfo } from '../types/identity';
@@ -524,6 +525,7 @@ export class IdentityService {
524525
case TransactionMetadataRegisterAsValidator:
525526
case TransactionMetadataUnregisterAsValidator:
526527
case TransactionMetadataStake:
528+
case TransactionMetadataUnstake:
527529
return AccessLevel.Full;
528530

529531
case TransactionMetadataFollow:

src/lib/deso/transaction.ts

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

625+
export class TransactionMetadataUnstake extends TransactionMetadata {
626+
@Transcode(VarBuffer)
627+
validatorPublicKey: Buffer = Buffer.alloc(0);
628+
629+
// TODO: We may want a better way to handle uint256s.
630+
@Transcode(BoolOptional(VarBuffer))
631+
unstakeAmountNanos: Buffer = Buffer.alloc(0);
632+
}
633+
625634
export const TransactionTypeMetadataMap = {
626635
1: TransactionMetadataBlockReward,
627636
2: TransactionMetadataBasicTransfer,
@@ -658,6 +667,7 @@ export const TransactionTypeMetadataMap = {
658667
34: TransactionMetadataRegisterAsValidator,
659668
35: TransactionMetadataUnregisterAsValidator,
660669
36: TransactionMetadataStake,
670+
37: TransactionMetadataUnstake,
661671
};
662672

663673
export class Transaction extends BinaryRecord {

0 commit comments

Comments
 (0)