1
1
import { redirect , useParams } from 'react-router-dom'
2
2
3
+ import { UIProposal } from 'types'
3
4
import { logError } from 'util/errors'
4
5
6
+ import { executeProposal } from 'api/proposal.actions'
5
7
import { useDerivedProposals } from 'hooks/use-derived-proposals'
6
8
import {
7
9
useBalances ,
8
10
useGroup ,
9
11
useGroupPolicies ,
10
12
useGroupProposals ,
11
13
} from 'hooks/use-query'
14
+ import { useTxToasts } from 'hooks/use-toasts'
12
15
13
16
import { Loading } from '@/molecules/loading'
14
17
import { GroupTemplate } from '@/templates/group-template'
@@ -18,6 +21,7 @@ export default function GroupPage() {
18
21
const { data : group , isLoading : isLoadingGroup } = useGroup ( groupId )
19
22
const { data : policies } = useGroupPolicies ( groupId )
20
23
const { data : proposals , isLoading : isLoadingProposals } = useGroupProposals ( groupId )
24
+ const { toastSuccess, toastErr } = useTxToasts ( )
21
25
22
26
const groupPolicy = policies ?. [ 0 ]
23
27
const { data : balances } = useBalances ( groupPolicy ?. address )
@@ -30,12 +34,25 @@ export default function GroupPage() {
30
34
return null
31
35
}
32
36
37
+ const handleExecute = async ( proposal : UIProposal ) => {
38
+ try {
39
+ const data = await executeProposal ( { proposalId : proposal . id } )
40
+ if ( data ?. code !== 0 ) {
41
+ toastSuccess ( data ?. transactionHash || '' )
42
+ } else {
43
+ toastErr ( data ?. transactionHash || '' )
44
+ }
45
+ } catch ( err ) {
46
+ toastErr ( err )
47
+ }
48
+ }
49
+
33
50
return (
34
51
< GroupTemplate
35
52
group = { group }
36
53
policies = { policies }
37
54
balances = { balances }
38
- onExecute = { ( p ) => console . log ( 'execute proposal' , p ) }
55
+ onExecute = { handleExecute }
39
56
proposals = { {
40
57
accepted : derivedProposals . accepted ,
41
58
history : derivedProposals . other ,
0 commit comments