diff --git a/src/app/approve/approve.component.ts b/src/app/approve/approve.component.ts index 8f83e50a..74d95c1a 100644 --- a/src/app/approve/approve.component.ts +++ b/src/app/approve/approve.component.ts @@ -41,6 +41,7 @@ import { TransactionMetadataUnregisterAsValidator, TransactionMetadataStake, TransactionMetadataUnstake, + TransactionMetadataUnlockStake, } from '../../lib/deso/transaction'; import { ExtraData } from '../../types/identity'; import { AccountService } from '../account.service'; @@ -623,6 +624,17 @@ export class ApproveComponent implements OnInit { ); description = `unstake ${unstakeAmountNanos} $DESO from ${unstakeValidatorPublicKey}`; break; + case TransactionMetadataUnlockStake: + const unlockStakeMetadata = this.transaction + .metadata as TransactionMetadataUnlockStake; + const unlockStakeValidatorPublicKey = this.base58KeyCheck( + unlockStakeMetadata.validatorPublicKey + ); + publicKeys = [unlockStakeValidatorPublicKey]; + description = + `unlock stake from ${unlockStakeValidatorPublicKey}, ` + + `starting from epochs ${unlockStakeMetadata.startEpochNumber} to ${unlockStakeMetadata.endEpochNumber}`; + 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 6e6abd68..90cdac6b 100644 --- a/src/app/identity.service.ts +++ b/src/app/identity.service.ts @@ -39,6 +39,7 @@ import { TransactionMetadataUnregisterAsValidator, TransactionMetadataStake, TransactionMetadataUnstake, + TransactionMetadataUnlockStake, } from '../lib/deso/transaction'; import { SwalHelper } from '../lib/helpers/swal-helper'; import { AccessLevel, PublicUserInfo } from '../types/identity'; @@ -526,6 +527,7 @@ export class IdentityService { case TransactionMetadataUnregisterAsValidator: case TransactionMetadataStake: case TransactionMetadataUnstake: + case TransactionMetadataUnlockStake: return AccessLevel.Full; case TransactionMetadataFollow: diff --git a/src/lib/deso/transaction.ts b/src/lib/deso/transaction.ts index ac566e46..9b9e7dbe 100644 --- a/src/lib/deso/transaction.ts +++ b/src/lib/deso/transaction.ts @@ -631,6 +631,17 @@ export class TransactionMetadataUnstake extends TransactionMetadata { unstakeAmountNanos: Buffer = Buffer.alloc(0); } +export class TransactionMetadataUnlockStake extends TransactionMetadata { + @Transcode(VarBuffer) + validatorPublicKey: Buffer = Buffer.alloc(0); + + @Transcode(Uvarint64) + startEpochNumber: number = 0; + + @Transcode(Uvarint64) + endEpochNumber: number = 0; +} + export const TransactionTypeMetadataMap = { 1: TransactionMetadataBlockReward, 2: TransactionMetadataBasicTransfer, @@ -668,6 +679,7 @@ export const TransactionTypeMetadataMap = { 35: TransactionMetadataUnregisterAsValidator, 36: TransactionMetadataStake, 37: TransactionMetadataUnstake, + 38: TransactionMetadataUnlockStake, }; export class Transaction extends BinaryRecord {