bgd-labs / aave-governance-v3-interface

Interface to interact with the Aave Governance v3 smart contracts
https://vote.onaave.com/
Other
12 stars 2 forks source link

clearer messages #80

Open sakulstra opened 3 months ago

sakulstra commented 3 months ago

Waiting for proposal execution

when a proposal has succeeded and the result has been bridged back to mainnet, currently the ui shows Pending execution.. While technically that's correct (as it's pending execution of the proposal), it's also misleading as by execution ppl naturally understand execution of the payload, but in this case it's just he execution of the proposal = queuing of the payload.

Perhaps better "Pending payload queuing via proposal execution", idk

"Will expire in x", as long as bridging is not finished.

Currently the ui shows "will expire in x" as long as not all payloads have been queued.

As we know: the proposal was executed & the paylaods have not yet been queud, perhaps better to show sth lik "Pending payload queuing via bridge"

Payloads not yet queued will show "time-locked"

Not sure what "time-locked" means exactly... To me that state is quite confusing tbh.

If the proposal is executed & message is not yet bridged, should probably say exactly that "Awaiting queuing via bridge"


Quite sure especially @eboadom will not like the suggested messages, so plz suggest alternatives 😅

From a puristic view one could say should just be "pending queuing" in all cases... at for most users that's all the info they need. I think i would still be confused with this though & it would hide problems (like failing automation) as from the ui alone will be hard to tell why its "pending queueing".

Argeare5 commented 3 months ago

What we have now in UI:

Proposal:

// current state enum ProposalStateWithName { Created = 'Created', // when proposal created Voting = 'Voting', // when active for voting Passed = 'Passed', // when voting passed Failed = 'Failed', // when voting failed Executed = 'Executed', // when proposal and all payloads executed Expired = 'Expired', // when proposal or all payloads in proposal expired Canceled = 'Canceled', // when proposal or all payloads in proposal canceled }

// estimated proposal state enum ProposalEstimatedState { Active = 'Will open for voting', // when proposal created but wait for activate voting on gov core Succeed = 'Will pass', // when predict result of voting will be success Failed = 'Will fail', // when predict result of voting will be fail ProposalExecuted = 'Proposal will start executing', // when proposal queued via bridge and time-locked and have cooldown before execution Proposal will start executing in 24h..., (for now hard to visible this, because on the contracts side cooldown is 0, for now) PayloadsExecuted = 'Payloads will start executing', // when one of proposal payloads queued via bridge and time-locked and have cooldown before execution, we display Payloads will start executing in 24h... Expired = 'Will expire', // by default, if one of the above conditions does not match }

// wait for state enum ProposalWaitForState { WaitForActivateVoting = 'Pending voting activation', // when proposal created and ready to activate voting on gov core WaitForCloseVoting = 'Pending voting closure', // when voting result success and voting finished but not closed on contract side WaitForQueueProposal = 'Proposal is time-locked', // when proposal time-locked WaitForExecuteProposal = 'Pending proposal execution', // when proposal ready for execution WaitForQueuePayloads = 'Payloads are time-locked', // when all payloads in proposal are time-locked WaitForExecutePayloads = 'Pending payloads execution', // when one of proposal payloads ready for execution }

Payloads: // estimated payloads state enum PayloadEstimatedState { Expire = 'Expire in', // visible in UI before payload get final status (expired, executed, canceled) Execute = 'Execution will be available in', // visible when payload time-locked and not executed }

in proposal details (create/overview) screens:

enum UIPayloadState { Created = 'Created at', // when payload created and proposal not executed Queued = 'Time-locked', // when payload created and proposal executed ReadyForExecution = 'Ready for execution', // when payload queued Executed = 'Executed at', // when payload executed Expired = 'Expired at', // when payload expired Canceled = 'Cancelled at', // when payload canceled }

in payloads overview screen:

enum UIPayloadState { Created = 'Created', // when payload created and proposal not executed Queued = 'Queued', // when payload created and proposal executed ReadyForExecution = 'Can be executed', // when payload queued Executed = 'Executed', // when payload executed Expired = 'Expired', // when payload expired Canceled = 'Canceled', // when payload canceled }

After discussions in slack, and all the suggestions, here is my version of the statuses NEW VERSION:

Proposal:

// current state (I think we can leave it as it was) // estimated proposal state (I think we can leave it as it was as well) // wait for state enum ProposalWaitForState { WaitForActivateVoting = 'Waiting for voting activation', // when proposal created and ready to activate voting on gov core WaitForCloseVoting = 'Waiting for voting closure', // when voting result success and voting finished but not closed on contract side WaitForQueueProposal = 'Proposal is time-locked', // when proposal time-locked WaitForExecuteProposal = 'Waiting for proposal execution', // when proposal ready for execution WaitForQueuePayloads = 'Payloads are time-locked', // when all payloads in proposal are time-locked WaitForExecutePayloads = 'Waiting for payloads execution', // when one of proposal payloads ready for execution }

Payloads:

// estimated payloads state (I think we can leave it as it was)

// payloads state we can combine to one enum UIPayloadState { Created = 'Created', // when payload created and proposal not executed Queuing = 'Awaiting queuing via bridge', // when payload created and proposal executed Queued = 'Can be executed', // when payload queued Executed = 'Executed', // when payload executed Expired = 'Expired', // when payload expired Canceled = 'Canceled', // when payload canceled }

What do you think @sakulstra @kyzia551 @eboadom ?