Search Apps Documentation Source Content File Folder Download Copy Actions Download

state.gno

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