Search Apps Documentation Source Content File Folder Download Copy Actions Download

admin.gno

1.27 Kb ยท 60 lines
 1package gnopendao2
 2
 3import (
 4	"chain/banker"
 5	"chain/runtime"
 6)
 7
 8// ============= ADMIN =============
 9
10func SetMarketplaceFee(newFee int64) {
11	caller := runtime.PreviousRealm().Address()
12	if caller != owner {
13		panic("Only owner can modify fees")
14	}
15
16	if newFee < 0 || newFee > 1000 { // Max 10%
17		panic("Fees must be between 0% and 10%")
18	}
19
20	marketplaceFee = newFee
21}
22
23func WithdrawFees() {
24	caller := runtime.PreviousRealm().Address()
25	if caller != owner {
26		panic("Only owner can withdraw fees")
27	}
28
29	// Use NewBanker instead of GetBanker
30	bnkr := banker.NewBanker(banker.BankerTypeRealmSend)
31	realmAddr := runtime.CurrentRealm().Address()
32
33	// Get balance of the realm
34	balance := bnkr.GetCoins(realmAddr)
35
36	if balance.AmountOf("ugnot") > 0 {
37		bnkr.SendCoins(realmAddr, owner, balance)
38	}
39}
40
41// AddAdmin - Add a new admin address
42func AddAdmin(newAdmin address) {
43	caller := runtime.PreviousRealm().Address()
44	if caller != owner {
45		panic("Only owner can add admins")
46	}
47	admins.Set(newAdmin.String(), true)
48}
49
50// RemoveAdmin - Remove an admin address
51func RemoveAdmin(admin address) {
52	caller := runtime.PreviousRealm().Address()
53	if caller != owner {
54		panic("Only owner can remove admins")
55	}
56	if admin == owner {
57		panic("Cannot remove owner as admin")
58	}
59	admins.Remove(admin.String())
60}