---
# System prepended metadata

title: Uberhaus Build
tags: [Product]

---

---
tags: Product
---

# Uberhaus Build


### Delegate form

Delegate field address:
- MEMBER ONLY
- can't be current delegate
    - check minion entity for this child dao graph data
- must be a child dao member
    - child dao member data
- must not be an uberhaus member or current delegate of an uberhaus member
    - uberhaus graph data / members + delegatekey

unerhausminion function
```
function nominateDelegate(
    address targetDao, //default would be UberHaus  
    address nominee,
    uint256 retireTime,
    string calldata details
)
```


### Rage quit form

- MEMBER ONLY

- uberhauminion needs shares or loot in uberhaus dao
    - get shares/loot of uberhaus minion has in uberhaus - uberhaus data

uberhausminion function
```
function proposeAction(
    address targetDao, // defaults to childDAO
    address actionTo,
    address token,
    uint256 actionValue,
    bytes calldata actionData,
    string calldata details
)
```
actionData is a hash of rage quit function w/


need validation on the proposal detail execute button
- canRageQuit: if the uberhausminion has a yes vote on an open proposal in uberhaus




### Withdraws

- uberhausminion has a token balance in the uberhaus dao
    - hard coded to haus token
    - withdraw amount from uberhaus member data - tokenbalances
- MEMBER ONLY

uberhausminion function
```
 function doWithdraw(address targetDao, address token, uint256 amount)
```


### Pull Guild Funds

- pull from uberhaus minion to child dao
    - MUST be the delegate (uberhausminion's delegate in uberhaus)
- step 2 of above
- contract call to see what haus balance is for the uberhausminion

uberhausminion function
```
    function pullGuildFunds(address token, uint256 amount)
```



---
### Allies page states

~~- figure out how to get uberhaus dao data~~



### daoToDaoManager.js card states

##### [x]  not signed in/user not member
- do we need to show this page or data?


##### [x] wrong network
- [x] link to burner if they have it
- [x] detail on how to launch if they don't w/ link to new clone burner form


##### [x] not uberhaus member/no minion
- [x] minion launch form

##### [x] not uberhaus member/has minion/no staking proposal/minion needs funds
- make staking proposal - button to open proposal form

##### [x] not uberhaus member/has minion/no staking proposal/minion has funds
- make staking proposal - button to open proposal form

##### [x] not uberhaus member/has minion/staking proposal w/ child dao
- staking proposal/membership in progress
- show proposal status

##### [x] not uberhaus member/has minion/staking proposal w/ uberhaus
- staking proposal/membership in progress
- show proposal status

##### [x] in uberhaus/has initial delegate needs to be set
setInitialDelegate
- public function
- when is this the case and how can we tell?
    - can check to see if the minion is the delegate + call initialDelegate to see if it matches
    - maybe need to check the delegate key for the ubh member entity 

##### [x] in uberhaus/delegate good
- base state / active / has shares/loot
    - maybe a little different if they are not active?
- show open proposal counts
    - uberhaus minion actions in child dao
        - link to proposals page (can we prefilter?)
    - ubh dao proposals related to the child dao
        - link to uhb dao proposals page (can we prefilter?)
- show shares/loot
- indicate token balance for withdraw?
- indicate minion balance for pull funds?
- then build the manage pop up based on those states?
    - staking all the time
    - delegate all the time
    - rage quit if shares/loot
    - withdraw/pull funds if possible


### NEXT STEPS

- [x] Create delegate rewards checkbox and separate to get their rewards. 

- [x] execute transaction poll doesn't seem to work


- [] focus on uberhaus - maybe we can display data about the child daos in plce of they're minions
    - like in a member list, proposal details, ect...
    - link to child dao in proposals


- [x] newUberHausMinion delegate field
    - needs validation so a current delegate is chosen
    - guess we don't let them summon if there are no options?


- [x] allies page flashes a bunch. need a loader


- [] qa allies links

- [] test more on wrong network/not member

- [x] Fix JSON parse error for uberHAUS minion

- [x] Have proposalMinionDetails recognize when uberHAUS rage quit has been executed. 
    - Just need to know if there was a reason it was set to check for default uberminion instead of rq minion. 
<!--     - See why uberType: "ragequit" isn't being indexed on the graph.  -->


- [] Create detailed explanation text/tooltip for deletgate eligabitiy 

  

- [x] Figure out why token unlock causes MM meltdown. Isolate TX on separate app. Create steps to reproduce.
   

- [] Write a detailed flow or tutorial, step by step, on how to sign up. Give that tutorial to someone who's never used this new feature and get them to try.   

- [x] Check to see that all relevant data shows up in uberHAUS TXs



- [] Fix proposal filter so that it can filter all the new minion proposal types. It is currently broken. 
 - needs executed - in needs action
 - add a filter for uberhaus proposals

- [] Create error handling/toast to handle empty or undefined data onSubmit. 

- [] change Allies card from percentage based width to min-width, max-width to prevent the component's content from getting squished when the viewport width is smaller. 
- 
- [] UberHaus minion doesn't display internal balance. 
- 
- [x] Validate delegate is not impeached, delegate is serving, delegate is not already rewarded (disable checkbox)
    
- Double check that using a delegate to vote doesn't cause the poll to time out. 
    - Could be related to the earlier graph error. 



- [] allies uberhaus data gets stale quickly -- make an AlliesContext and a refreshAllies Fn. 
- [] Refactor D2Dproposal modal to reference proposal type without saving component in state. Check to see if props are still stale after.

- [] For RQ from uberHAUS, create validation to make sure the user can't call execute minion if the minion currently has one yes vote on a proposal. 
    - Should also have some sort of text explanation to help users understand why they're not being allowed to execute the minion
    - Would a simple text warning be a faster way of doing this altogether? 
    - Or should we call a fetch for proposals on UBERhaus only when the user hits execute on a RQ proposal? I just want to avoid a situation where we're calling for uberHAUS proposals when it's not necessary. 


- [] Create type checks in all inputs that require numbers 