Search Apps Documentation Source Content File Folder Download Copy Actions Download

init.gno

1.13 Kb · 52 lines
 1package v1
 2
 3import (
 4	"gno.land/r/gnoswap/launchpad"
 5)
 6
 7func init(cur realm) {
 8	registerLaunchpadV1(cur)
 9}
10
11func registerLaunchpadV1(cur realm) {
12	launchpad.RegisterInitializer(cross(cur), func(_ int, rlm realm, launchpadStore launchpad.ILaunchpadStore) launchpad.ILaunchpad {
13		err := initStoreData(0, rlm, launchpadStore)
14		if err != nil {
15			panic(err)
16		}
17
18		return NewLaunchpadV1(launchpadStore)
19	})
20}
21
22func initStoreData(_ int, rlm realm, launchpadStore launchpad.ILaunchpadStore) error {
23	if !launchpadStore.HasProjectsKey() {
24		err := launchpadStore.SetProjects(0, rlm, launchpad.NewBPTreeN(16))
25		if err != nil {
26			return err
27		}
28	}
29
30	if !launchpadStore.HasProjectTierRewardManagersKey() {
31		err := launchpadStore.SetProjectTierRewardManagers(0, rlm, launchpad.NewBPTreeN(16))
32		if err != nil {
33			return err
34		}
35	}
36
37	if !launchpadStore.HasDepositCounterStoreKey() {
38		err := launchpadStore.SetDepositCounter(0, rlm, launchpad.NewCounter())
39		if err != nil {
40			return err
41		}
42	}
43
44	if !launchpadStore.HasDepositsKey() {
45		err := launchpadStore.SetDeposits(0, rlm, launchpad.NewBPTreeN(16))
46		if err != nil {
47			return err
48		}
49	}
50
51	return nil
52}