cosmos-sdk/x/circuit/keeper/genesis.go
ipangpang 1bd4351241
style: remove redundant import alias (#20109)
Signed-off-by: ipangpang <arronipangpang@gmail.com>
2024-04-21 19:03:43 +00:00

68 lines
1.6 KiB
Go

package keeper
import (
"context"
"cosmossdk.io/x/circuit/types"
)
func (k *Keeper) ExportGenesis(ctx context.Context) (data *types.GenesisState, err error) {
var (
permissions []*types.GenesisAccountPermissions
disabledMsgs []string
)
err = k.Permissions.Walk(ctx, nil, func(address []byte, perm types.Permissions) (stop bool, err error) {
add, err := k.addressCodec.BytesToString(address)
if err != nil {
return true, err
}
// Convert the Permissions struct to a GenesisAccountPermissions struct
// and add it to the permissions slice
permissions = append(permissions, &types.GenesisAccountPermissions{
Address: add,
Permissions: &perm,
})
return false, nil
})
if err != nil {
return nil, err
}
err = k.DisableList.Walk(ctx, nil, func(msgUrl string) (stop bool, err error) {
disabledMsgs = append(disabledMsgs, msgUrl)
return false, nil
})
if err != nil {
return nil, err
}
return &types.GenesisState{
AccountPermissions: permissions,
DisabledTypeUrls: disabledMsgs,
}, nil
}
// InitGenesis initializes the circuit module's state from a given genesis state.
func (k *Keeper) InitGenesis(ctx context.Context, genState *types.GenesisState) error {
for _, accounts := range genState.AccountPermissions {
add, err := k.addressCodec.StringToBytes(accounts.Address)
if err != nil {
return err
}
// Set the permissions for the account
if err := k.Permissions.Set(ctx, add, *accounts.Permissions); err != nil {
return err
}
}
for _, url := range genState.DisabledTypeUrls {
// Set the disabled type urls
if err := k.DisableList.Set(ctx, url); err != nil {
return err
}
}
return nil
}