-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(launchpad): Add backend, service, indexer, db #1432
base: main
Are you sure you want to change the base?
Conversation
❌ Deploy Preview for teritori-dapp failed.
|
❌ Deploy Preview for gno-dapp failed.
|
… in proto message
…-dapp into feat-launchpad-backend
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I put some comments, feel free to answer so i can approve or request changes
string sender = 1; | ||
string network_id = 2; | ||
string project_id = 3; | ||
string proposal_id = 4; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why is there a proposal id, if you want to create a proposal to approve a project request
or maybe i don't understand the purpose of this message
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if this is about approving a project request what about: ApproveProjectRequestProposal
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's about updating the DB after creating+approving a proposal.
ProposeApproveProjectRequest
is called after the proposal has been created, it's not used to create a proposal, we create the proposal on front using DA0 contract.
The flow in front is:
- Make a proposal using DA0 DA0 (onchain)
- Get the proposal id
- Vote "yes" using DA0 DA0 (onchain)
- Trigger ProposeApproveProject to update db (indexer)
This flow is here: https://github.com/TERITORI/teritori-dapp/blob/feat/cosmwasm-launchpad/packages/hooks/launchpad/useProposeApproveProject.ts#L30
I hope it makes sense ^^"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this should be the responsibility of an indexer handler, not triggered by an api call
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this should be the responsibility of an indexer handler, not triggered by an api call
I will need some instructions to make this refacto.
Should we use that as entry point from front ? https://github.com/TERITORI/teritori-dapp/blob/feat/cosmwasm-launchpad/packages/hooks/launchpad/useProposeApproveProject.ts#L30
Which wasm action to listen ? This one ? https://github.com/TERITORI/teritori-dapp/blob/feat-launchpad-backend/go/internal/indexerhandler/handle.go#L325-L328
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it would be the execute action on the dao contract in the top handler, but it's already handled and we need to listen to the submsg here really https://github.com/TERITORI/teritori-dapp/blob/feat-launchpad-backend/go/internal/indexerhandler/dao.go#L264
I'm not sure what is the correct action on the launchpad contract though, it would be the one proposed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hm ok, but we need to handle things before "deploy_collection".
- Either we listen for "propose" (DAO) (Then trigger the indexer launchpad stuff)
- Either we trigger ProposeApproveProject (Launchpad backend) (Then trigger the DAO stuff)
No ?
So, the best should be the first proposition (DAO contract is the entry, and we just trigger sepcific stuff depending on the Proposed action).
Actually, we can listen for "propose" and actions when the proposal is executed ("update_members", "create_post", ect).
But we can"t listen for the things in between, like "propose XXX" (Not just "propose", not just waiting for execution, but "do things if a proposal for XXX is made")
This though comes here: https://github.com/TERITORI/teritori-dapp/blob/feat-launchpad-backend/go/internal/indexerhandler/handle.go#L325
Could we have something like case "propose.deploy_collection
?
What is the NFT Launchpad use case ?
We want to make a proposal + vote "yes" + update project status in DB. The vote and update DB should be placed after "propose" and before "deploy_collection".
go/pkg/launchpad/ipfs.go
Outdated
|
||
switch provider { | ||
case Pinata: | ||
url = "https://api.pinata.cloud/psa" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i like to have const data like this on top of the file in a const so we can reuse-it and modify it easily from one place.I know it's used juste one time here, just personal preference, feel free to do what you feel is right
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
partial
Extracted from #1024
Most work was done by @hthieu1110, thank you mate ❤️
It adds: