@@ -9,14 +9,15 @@ const props = defineProps({
99});
1010
1111const rewards = ref ([] as { reward: { amount: string , denom: string }, validator_address: string }[])
12+ const selectedValidators = ref <string []>([])
1213
1314const msgs = computed (() => {
14- return rewards .value .map (x => {
15+ return selectedValidators .value .map (v => {
1516 return {
1617 typeUrl: ' /cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward' ,
1718 value: {
1819 delegatorAddress: props .sender ,
19- validatorAddress: x . validator_address ,
20+ validatorAddress: v ,
2021 },
2122 }
2223 })
@@ -28,17 +29,20 @@ const isValid = computed(() => {
2829 if (! props .sender ) {
2930 ok = false
3031 error = " Sender is empty"
31- }
32- if (rewards .value .length === 0 ) {
32+ } else if (rewards .value .length === 0 ) {
3333 ok = false
3434 error = " No delegation found"
35+ } else if (selectedValidators .value .length === 0 ) {
36+ ok = false
37+ error = " No validator selected"
3538 }
3639 return { ok , error }
3740})
3841
3942function initial() {
4043 getDelegateRewards (props .endpoint , props .sender ).then (x => {
41- rewards .value = x .rewards
44+ rewards .value = x .rewards || []
45+ selectedValidators .value = rewards .value .map ((r : any ) => r .validator_address )
4246 })
4347}
4448
@@ -49,12 +53,23 @@ onMounted(() => {
4953defineExpose ({ msgs , isValid , initial })
5054 </script >
5155<template >
52- <div >
56+ <div class = " flex flex-col gap-4 " >
5357 <div class =" form-control" >
5458 <label class =" label" >
5559 <span class =" label-text" >Sender</span >
5660 </label >
57- <input :value =" sender" type =" text" class =" text-gray-600 dark:text-white input border !border-gray-300 dark:!border-gray-600" />
61+ <input :value =" sender" type =" text" readonly class =" text-gray-600 dark:text-white input border !border-gray-300 dark:!border-gray-600 bg-gray-100 dark:bg-gray-800" />
62+ </div >
63+ <div class =" form-control" v-if =" rewards.length > 0" >
64+ <label class =" label" >
65+ <span class =" label-text" >Select Validators</span >
66+ </label >
67+ <div class =" max-h-60 overflow-y-auto border border-gray-300 dark:border-gray-600 rounded p-2 flex flex-col gap-2" >
68+ <label v-for =" r in rewards" :key =" r.validator_address" class =" flex items-center gap-3 cursor-pointer" >
69+ <input type =" checkbox" :value =" r.validator_address" v-model =" selectedValidators" class =" checkbox checkbox-sm" />
70+ <span class =" text-sm text-gray-700 dark:text-gray-300 break-all" >{{ r.validator_address }}</span >
71+ </label >
72+ </div >
5873 </div >
5974 </div >
6075</template >
0 commit comments