From e49cf9277778cec77b35ddaf3d422f3b96d07a18 Mon Sep 17 00:00:00 2001
From: dzungdo <neitdung@gmail.com>
Date: Fri, 19 Jan 2024 10:29:37 +0700
Subject: [PATCH] Redelegate after cancel unbonding

---
 x/multi-staking/keeper/msg_server.go | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/x/multi-staking/keeper/msg_server.go b/x/multi-staking/keeper/msg_server.go
index a9d6dc1b..62b4d7d6 100644
--- a/x/multi-staking/keeper/msg_server.go
+++ b/x/multi-staking/keeper/msg_server.go
@@ -215,6 +215,14 @@ func (k msgServer) CancelUnbondingDelegation(goCtx context.Context, msg *staking
 	cancelBondAmount := cancelMSCoin.BondValue()
 	cancelUnbondingCoin := sdk.NewCoin(k.keeper.stakingKeeper.BondDenom(ctx), cancelBondAmount)
 
+	lockID := types.MultiStakingLockID(msg.DelegatorAddress, msg.ValidatorAddress)
+	lock := k.keeper.GetOrCreateMultiStakingLock(ctx, lockID)
+	err = lock.AddCoinToMultiStakingLock(cancelMSCoin)
+	if err != nil {
+		return nil, err
+	}
+	k.keeper.SetMultiStakingLock(ctx, lock)
+
 	sdkMsg := &stakingtypes.MsgCancelUnbondingDelegation{
 		DelegatorAddress: msg.DelegatorAddress,
 		ValidatorAddress: msg.ValidatorAddress,