# Minion Safe integration
## minionSafe module
https://github.com/HausDAO/MinionSummonerV2
## minionSafe front end integration (WIP)
https://github.com/santteegt/pokemol-web/tree/feature/minion-safe
## Notes
Deploy minion boost deployment form updates
update settings page to be accessible with vault page
- what setting page? should just be a vault page
update vaults page to look at safe balances
- will require indexing job updates to cache safe balance data instead of minion balance data
subgraph updates to record new safe and module addresses
- new safeAddress on the minion entity
- factory update on new summon event
- update mappings current in neapolitan minion to handle new proposeaction
- likely need new fields to store byte data and maybe unpack it in the subgraph
- check execute action mapping too
minion form updates
- needs to use form legos and encode
proposal details
- rework how action data is displayed
- decode helpers
# NEXT STEPS
- Add safe adddress to subgraph entity
- Deploy subgraphs - sam
- Update index jobs - sam
### MINION LAUNCH
front end code notes
Will need new minion data added to:
chains.js
- factory contract address
Minion lego data:
https://github.com/HausDAO/daohaus-app/blob/feature/legoland/src/data/minions.js
- minion network, setting links, type and content data
a new minion form lego
nifty minion example:
https://github.com/HausDAO/daohaus-app/blob/feature/legoland/src/data/forms.js#L478
- you'll likely need some extra fields - maybe custom fields. checkout how minQurom is done.
- i don't know what else is needed for the safe flow
FYI - here is where the new minion form is loaded:
https://github.com/HausDAO/daohaus-app/blob/feature/legoland/src/pages/Installed.jsx
- Summon Minion button
- opens a form modal with the 1st step as CORE_FORMS.SUMMON_MINION_SELECTOR:
https://github.com/HausDAO/daohaus-app/blob/feature/legoland/src/data/forms.js#L103
- 2nd step is theSummoner:
https://github.com/HausDAO/daohaus-app/blob/feature/legoland/src/components/theSummoner.jsx
If you set up all the legos correctly, you won't need to touch that stuff.
### Minion vault page
#### Transfer forms front end code notes
erc20 and network transfer forms
- in general we can replace the neapolitan minion logic
- https://github.com/HausDAO/daohaus-app/blob/feature/legoland/src/components/minionTransfer.jsx
- update getMinionActionFormLego in
- https://github.com/HausDAO/daohaus-app/blob/feature/legoland/src/utils/vaults.js
- add the safe type
- it will use this form lego
- MINION_SEND_ERC20_TOKEN
- this function `getMinionActionFormLego` will replace with a new tx lego
- create the tx lego
- replace MINION_SEND_ERC20_TOKEN_NEAPOLITAN
- https://github.com/HausDAO/daohaus-app/blob/feature/legoland/src/data/contractTX.js#L585
- we will need a new type of 'gatherArgs' function, i think
- like encodeHex, but it should mimic this:
- https://github.com/HausDAO/MinionSummonerV2/blob/main/test/safe-minion-test.ts#L271
- https://github.com/HausDAO/MinionSummonerV2/blob/fde0500ab4e4ae64352c6b5bdd628b003c5317ed/test/util.ts#L31
___
### Proposal forms
- simple single action proposal form with proper encoding for new proposeAction
- stepper integration for multiple action (w/ jord)
- vault forms
- send erc20
- send network token
- transfer 721
- transfer 1155
- playlist
- payroll form
- simple minion proposal
- stepper forms - multiple actions
### proposal details
- change how we get action and display
- display action data
- execute minion
- use isPassed to check if needing execution