@@ -57,6 +57,7 @@ type ProposalTransactionContextType = {
57
57
handleSubmitVote : ( params : SubmitVoteParams ) => void ;
58
58
handleExecuteProposal : ( ) => void ;
59
59
handleGaslessVoting : ( params : SubmitVoteParams ) => void ;
60
+ handleCommitteApprove : ( params : SubmitVoteParams ) => void ;
60
61
isLoading : boolean ;
61
62
voteSubmitted : boolean ;
62
63
executeSubmitted : boolean ;
@@ -87,6 +88,8 @@ const ProposalTransactionProvider: React.FC<Props> = ({children}) => {
87
88
const [ showVoteModal , setShowVoteModal ] = useState ( false ) ;
88
89
const [ showGaslessModal , setShowGaslessModal ] = useState ( false ) ;
89
90
const [ showExecuteModal , setShowExecuteModal ] = useState ( false ) ;
91
+ const [ showCommitteeApprovalModal , setShowCommitteeApprovalModal ] =
92
+ useState ( false ) ;
90
93
91
94
const [ voteParams , setVoteParams ] = useState < VoteProposalParams > ( ) ;
92
95
const [ voteSubmitted , setVoteSubmitted ] = useState ( false ) ;
@@ -179,6 +182,20 @@ const ProposalTransactionProvider: React.FC<Props> = ({children}) => {
179
182
[ urlId ]
180
183
) ;
181
184
185
+ const handleCommitteApprove = useCallback (
186
+ ( params : SubmitVoteParams ) => {
187
+ setVoteParams ( {
188
+ proposalId : new ProposalId ( urlId ! ) . export ( ) ,
189
+ vote : params . vote ,
190
+ } ) ;
191
+ setReplacingVote ( ! ! params . replacement ) ;
192
+ setTokenAddress ( params . token ) ;
193
+ setVoteProcessState ( TransactionState . WAITING ) ;
194
+ setShowCommitteeApprovalModal ( true ) ;
195
+ } ,
196
+ [ urlId ]
197
+ ) ;
198
+
182
199
// estimate voting fees
183
200
const estimateVotingFees = useCallback ( async ( ) => {
184
201
if ( voteParams ) {
@@ -261,9 +278,11 @@ const ProposalTransactionProvider: React.FC<Props> = ({children}) => {
261
278
break ;
262
279
case TransactionState . SUCCESS :
263
280
setShowVoteModal ( false ) ;
281
+ setShowCommitteeApprovalModal ( false ) ;
264
282
break ;
265
283
default : {
266
284
setShowVoteModal ( false ) ;
285
+ setShowCommitteeApprovalModal ( false ) ;
267
286
stopPolling ( ) ;
268
287
}
269
288
}
@@ -288,7 +307,10 @@ const ProposalTransactionProvider: React.FC<Props> = ({children}) => {
288
307
let voteToPersist ;
289
308
290
309
// cache multisig vote
291
- if ( pluginType === 'multisig.plugin.dao.eth' ) {
310
+ if (
311
+ pluginType === 'multisig.plugin.dao.eth' ||
312
+ pluginType === GaselessPluginName
313
+ ) {
292
314
voteToPersist = address . toLowerCase ( ) ;
293
315
}
294
316
@@ -537,6 +559,7 @@ const ProposalTransactionProvider: React.FC<Props> = ({children}) => {
537
559
handleSubmitVote,
538
560
handleExecuteProposal,
539
561
handleGaslessVoting,
562
+ handleCommitteApprove,
540
563
isLoading,
541
564
voteSubmitted,
542
565
executeSubmitted,
@@ -547,6 +570,7 @@ const ProposalTransactionProvider: React.FC<Props> = ({children}) => {
547
570
handleSubmitVote ,
548
571
handleExecuteProposal ,
549
572
handleGaslessVoting ,
573
+ handleCommitteApprove ,
550
574
isLoading ,
551
575
voteSubmitted ,
552
576
executeSubmitted ,
@@ -573,18 +597,22 @@ const ProposalTransactionProvider: React.FC<Props> = ({children}) => {
573
597
title = {
574
598
showExecuteModal
575
599
? t ( 'labels.signExecuteProposal' )
600
+ : showCommitteeApprovalModal
601
+ ? t ( 'labels.approveProposal' )
576
602
: t ( 'labels.signVote' )
577
603
}
578
604
buttonLabel = {
579
605
showExecuteModal
580
606
? t ( 'governance.proposals.buttons.execute' )
607
+ : showCommitteeApprovalModal
608
+ ? t ( 'labels.approve' )
581
609
: t ( 'governance.proposals.buttons.vote' )
582
610
}
583
611
state = {
584
612
( showExecuteModal ? executeProcessState : voteProcessState ) ||
585
613
TransactionState . WAITING
586
614
}
587
- isOpen = { showVoteModal || showExecuteModal }
615
+ isOpen = { showVoteModal || showExecuteModal || showCommitteeApprovalModal }
588
616
onClose = {
589
617
showExecuteModal ? handleCloseExecuteModal : handleCloseVoteModal
590
618
}
0 commit comments