bar20.gno
0.97 Kb ยท 48 lines
1// Package bar20 is similar to gno.land/r/demo/foo20 but exposes a safe-object
2// that can be used by `maketx run`, another contract importing foo20, and in
3// the future when we'll support `maketx call Token.XXX`.
4package bar20
5
6import (
7 "std"
8 "strings"
9
10 "gno.land/p/demo/grc/grc20"
11 "gno.land/p/demo/ufmt"
12 "gno.land/r/demo/grc20reg"
13)
14
15var (
16 Token, adm = grc20.NewToken("Bar", "BAR", 4)
17 UserTeller = Token.CallerTeller()
18)
19
20func init() {
21 cross(grc20reg.Register)(Token, "")
22}
23
24func Faucet() string {
25 crossing()
26
27 caller := std.PreviousRealm().Address()
28 if err := adm.Mint(caller, 1_000_000); err != nil {
29 return "error: " + err.Error()
30 }
31 return "OK"
32}
33
34func Render(path string) string {
35 parts := strings.Split(path, "/")
36 c := len(parts)
37
38 switch {
39 case path == "":
40 return Token.RenderHome()
41 case c == 2 && parts[0] == "balance":
42 owner := std.Address(parts[1])
43 balance := Token.BalanceOf(owner)
44 return ufmt.Sprintf("%d\n", balance)
45 default:
46 return "404\n"
47 }
48}