test_basic_nft.gno
1.25 Kb · 65 lines
1package mynft4
2
3import (
4 "strconv"
5 "chain/runtime"
6 "gno.land/p/demo/tokens/grc721"
7 "gno.land/r/pierre115/nftregistry3"
8)
9
10type NFTCollection interface {
11 grc721.IGRC721
12 Mint(to address, tid grc721.TokenID) error
13 Getter() grc721.NFTGetter
14}
15
16var (
17 nft NFTCollection
18 nextTokenId = 1
19)
20
21func init() {
22 nft = grc721.NewBasicNFT("Test NFT Collection 4", "TEST4")
23}
24
25// Register registers this collection on the NFT registry
26func Register(_ realm) {
27 nftregistry3.RegisterCollection(
28 "Test NFT Collection 4",
29 "TEST4",
30 "art",
31 "My awesome NFT collection",
32 "https://example.com",
33 false, // ← supportsMetadata - BasicNFT ne supporte pas les metadata avancées
34 nft.Getter(),
35 )
36}
37
38func MintNFT(_ realm) int {
39 caller := runtime.PreviousRealm().Address()
40 tokenId := grc721.TokenID(strconv.Itoa(nextTokenId))
41
42 err := nft.Mint(caller, tokenId)
43 if err != nil {
44 panic(err.Error())
45 }
46
47 nextTokenId++
48 return nextTokenId - 1
49}
50
51func SetApprovalForAll(_ realm, operator address, approved bool) {
52 err := nft.SetApprovalForAll(operator, approved)
53 if err != nil {
54 panic(err.Error())
55 }
56}
57
58func Getter() grc721.NFTGetter {
59 return nft.Getter()
60}
61
62func Render(path string) string {
63 output := "# My test collection\n\n"
64 output += "## test 4\n\n"
65 return output
66}