diff --git a/src/app/approve/approve.component.ts b/src/app/approve/approve.component.ts index 1a237672..8f83e50a 100644 --- a/src/app/approve/approve.component.ts +++ b/src/app/approve/approve.component.ts @@ -40,6 +40,7 @@ import { TransactionMetadataRegisterAsValidator, TransactionMetadataUnregisterAsValidator, TransactionMetadataStake, + TransactionMetadataUnstake, } from '../../lib/deso/transaction'; import { ExtraData } from '../../types/identity'; import { AccountService } from '../account.service'; @@ -610,6 +611,18 @@ export class ApproveComponent implements OnInit { ); description = `stake ${stakeAmountNanos} $DESO to ${stakeValidatorPublicKey}`; break; + case TransactionMetadataUnstake: + const unstakeMetadata = this.transaction + .metadata as TransactionMetadataUnstake; + const unstakeValidatorPublicKey = this.base58KeyCheck( + unstakeMetadata.validatorPublicKey + ); + publicKeys = [unstakeValidatorPublicKey]; + const unstakeAmountNanos = this.hexNanosToUnitString( + unstakeMetadata.unstakeAmountNanos + ); + description = `unstake ${unstakeAmountNanos} $DESO from ${unstakeValidatorPublicKey}`; + break; } // Set the transaction description based on the description populated with public keys. diff --git a/src/app/identity.service.ts b/src/app/identity.service.ts index b5c3eb2a..6e6abd68 100644 --- a/src/app/identity.service.ts +++ b/src/app/identity.service.ts @@ -38,6 +38,7 @@ import { TransactionMetadataRegisterAsValidator, TransactionMetadataUnregisterAsValidator, TransactionMetadataStake, + TransactionMetadataUnstake, } from '../lib/deso/transaction'; import { SwalHelper } from '../lib/helpers/swal-helper'; import { AccessLevel, PublicUserInfo } from '../types/identity'; @@ -524,6 +525,7 @@ export class IdentityService { case TransactionMetadataRegisterAsValidator: case TransactionMetadataUnregisterAsValidator: case TransactionMetadataStake: + case TransactionMetadataUnstake: return AccessLevel.Full; case TransactionMetadataFollow: diff --git a/src/lib/deso/transaction.ts b/src/lib/deso/transaction.ts index 11154cd7..ac566e46 100644 --- a/src/lib/deso/transaction.ts +++ b/src/lib/deso/transaction.ts @@ -622,6 +622,15 @@ export class TransactionMetadataStake extends TransactionMetadata { stakeAmountNanos: Buffer = Buffer.alloc(0); } +export class TransactionMetadataUnstake extends TransactionMetadata { + @Transcode(VarBuffer) + validatorPublicKey: Buffer = Buffer.alloc(0); + + // TODO: We may want a better way to handle uint256s. + @Transcode(BoolOptional(VarBuffer)) + unstakeAmountNanos: Buffer = Buffer.alloc(0); +} + export const TransactionTypeMetadataMap = { 1: TransactionMetadataBlockReward, 2: TransactionMetadataBasicTransfer, @@ -658,6 +667,7 @@ export const TransactionTypeMetadataMap = { 34: TransactionMetadataRegisterAsValidator, 35: TransactionMetadataUnregisterAsValidator, 36: TransactionMetadataStake, + 37: TransactionMetadataUnstake, }; export class Transaction extends BinaryRecord {