/
msg_server_delist.go
45 lines (32 loc) · 1.04 KB
/
msg_server_delist.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package keeper
import (
"context"
"strings"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/jackalLabs/canine-chain/x/rns/types"
)
func (k msgServer) Delist(goCtx context.Context, msg *types.MsgDelist) (*types.MsgDelistResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx)
mname := strings.ToLower(msg.Name)
sale, found := k.GetForsale(ctx, mname)
if !found {
return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "Name isn't listed.")
}
n, tld, err := GetNameAndTLD(mname)
if err != nil {
return nil, err
}
name, nfound := k.GetNames(ctx, n, tld)
if !nfound {
return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "Name does not exist or has expired.")
}
if sale.Owner != msg.Creator {
return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "You do not own this listing.")
}
if name.Value != sale.Owner {
return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "This listing has expired.")
}
k.RemoveForsale(ctx, mname)
return &types.MsgDelistResponse{}, nil
}