Search Apps Documentation Source Content File Folder Download Copy Actions Download 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}