Skip to content Search Apps Documentation Source Content File Folder Download Copy Actions State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

Community realm. Read the code first. Community realm, deployed by its author. Read the code before you interact or send coins.

config.gno

1.68 Kb · 81 lines
 1package item
 2
 3import (
 4	"chain"
 5	"strconv"
 6	"strings"
 7
 8	"gno.land/p/akkadia/beta/accesscontrol"
 9	"gno.land/p/nt/bptree/v0"
10	"gno.land/r/akkadia/beta/admin"
11)
12
13const (
14	SetListLimitEvent     = "SetListLimit"
15	SetMinterRealmEvent   = "SetMinterRealm"
16	UnsetMinterRealmEvent = "UnsetMinterRealm"
17)
18
19var (
20	listLimit    int = 100 // Max items per ListByOwner page
21	minterRealms *bptree.BPTree
22)
23
24func SetListLimit(cur realm, limit int) {
25	accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)
26	if limit < 1 {
27		panic("limit must be at least 1")
28	}
29
30	oldLimit := listLimit
31	listLimit = limit
32
33	chain.Emit(
34		SetListLimitEvent,
35		"oldLimit", strconv.Itoa(oldLimit),
36		"newLimit", strconv.Itoa(limit),
37	)
38}
39
40func GetListLimit() int {
41	return listLimit
42}
43
44func SetMinterRealm(cur realm, pkgPath string) {
45	accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)
46	addr := minterRealmAddress(pkgPath)
47	minterRealms.Set(addr.String(), true)
48	chain.Emit(
49		SetMinterRealmEvent,
50		"pkgPath", pkgPath,
51		"address", addr.String(),
52	)
53}
54
55func UnsetMinterRealm(cur realm, pkgPath string) {
56	accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)
57	addr := minterRealmAddress(pkgPath)
58	if !minterRealms.Has(addr.String()) {
59		panic("package path is not a minter realm")
60	}
61	minterRealms.Remove(addr.String())
62	chain.Emit(
63		UnsetMinterRealmEvent,
64		"pkgPath", pkgPath,
65		"address", addr.String(),
66	)
67}
68
69func IsMinterRealm(addr address) bool {
70	return minterRealms.Has(addr.String())
71}
72
73func minterRealmAddress(pkgPath string) address {
74	if pkgPath == "" {
75		panic("package path is required")
76	}
77	if !strings.HasPrefix(pkgPath, "gno.land/r/") || pkgPath == "gno.land/r/" {
78		panic("invalid package path")
79	}
80	return chain.PackageAddress(pkgPath)
81}