Open sakulstra opened 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 ?
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".