Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}