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

state.gno

2.72 Kb · 97 lines
 1package launchpad
 2
 3import (
 4	"errors"
 5
 6	ufmt "gno.land/p/nt/ufmt/v0"
 7	"gno.land/r/gnoswap/launchpad"
 8)
 9
10// Helper functions that access state through launchpadState
11
12func (lp *launchpadV1) getProject(projectID string) (*launchpad.Project, error) {
13	projects := lp.store.GetProjects()
14	project := projects.Get(projectID)
15	if project == nil {
16		return nil, makeErrorWithDetails(errDataNotFound, ufmt.Sprintf("project(%s) not found", projectID))
17	}
18
19	p, ok := project.(*launchpad.Project)
20	if !ok {
21		return nil, makeErrorWithDetails(errDataNotFound, ufmt.Sprintf("project(%s) not found", projectID))
22	}
23
24	return p, nil
25}
26
27func (lp *launchpadV1) getProjectTier(projectID string, tierDuration int64) (*launchpad.ProjectTier, error) {
28	project, err := lp.getProject(projectID)
29	if err != nil {
30		return nil, err
31	}
32
33	tier, err := project.GetTier(tierDuration)
34	if err != nil {
35		return nil, makeErrorWithDetails(errDataNotFound, err.Error())
36	}
37
38	return tier, nil
39}
40
41func (lp *launchpadV1) getProjectTierRewardManager(projectTierID string) (*launchpad.RewardManager, error) {
42	managers := lp.store.GetProjectTierRewardManagers()
43	rewardManager := managers.Get(projectTierID)
44	if rewardManager == nil {
45		return nil, makeErrorWithDetails(errDataNotFound, ufmt.Sprintf("reward manager(%s) not found", projectTierID))
46	}
47
48	manager, ok := rewardManager.(*launchpad.RewardManager)
49	if !ok {
50		return nil, makeErrorWithDetails(errDataNotFound, ufmt.Sprintf("reward manager(%s) not found", projectTierID))
51	}
52
53	return manager, nil
54}
55
56func (lp *launchpadV1) getDepositValue(depositId string) (launchpad.Deposit, error) {
57	deposits := lp.store.GetDeposits()
58	value := deposits.Get(depositId)
59	if value == nil {
60		return launchpad.DefaultDeposit(), errors.New("deposit not found")
61	}
62
63	deposit, ok := value.(launchpad.Deposit)
64	if !ok {
65		return launchpad.DefaultDeposit(), errors.New("invalid deposit type")
66	}
67	return deposit, nil
68}
69
70func (lp *launchpadV1) getDeposit(depositID string) (launchpad.Deposit, error) {
71	deposits := lp.store.GetDeposits()
72	depositI := deposits.Get(depositID)
73	if depositI == nil {
74		return launchpad.DefaultDeposit(), makeErrorWithDetails(errNotExistDeposit, ufmt.Sprintf("(%s)", depositID))
75	}
76
77	deposit, ok := depositI.(launchpad.Deposit)
78	if !ok {
79		return launchpad.DefaultDeposit(), makeErrorWithDetails(errDataNotFound, ufmt.Sprintf("deposit(%s) not found", depositID))
80	}
81	return deposit, nil
82}
83
84func (lp *launchpadV1) mustGetDeposit(depositID string) launchpad.Deposit {
85	deposit, err := lp.getDeposit(depositID)
86	if err != nil {
87		panic(err)
88	}
89
90	return deposit
91}
92
93// nextDepositID increments and returns the next unique deposit ID.
94// This is used when creating new deposits.
95func (lp *launchpadV1) nextDepositID() string {
96	return lp.store.NextDepositID()
97}