← Back to Realms

Realm

gno.land/r/akkadia/beta/equipment

Overview

Realm Path
gno.land/r/akkadia/beta/equipment
Exported Functions
26
State Entries
14
Source Files
7
Total Package Entries
66

Exported Functions

26 exported functions

State

14 state entries

Source Code

FILES
config.gno
go
1package equipment
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}
82

Raw Package Data

Raw JSON data