Skip to content

Commit 99fa143

Browse files
committed
fix from comment & fix bug prune with no tally result
1 parent c3e1bf1 commit 99fa143

File tree

3 files changed

+48
-30
lines changed

3 files changed

+48
-30
lines changed

hooks/emitter/emitter.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,19 @@ func (h *Hook) AfterDeliverTx(ctx sdk.Context, req abci.RequestDeliverTx, res ab
432432

433433
// AfterEndBlock specify actions need to do after end block period (app.Hook interface).
434434
func (h *Hook) AfterEndBlock(ctx sdk.Context, req abci.RequestEndBlock, res abci.ResponseEndBlock) {
435+
// update group proposals when voting period is end
436+
timeBytes := sdk.FormatTimeBytes(ctx.BlockTime().UTC())
437+
lenTimeByte := byte(len(timeBytes))
438+
prefix := []byte{groupkeeper.ProposalsByVotingPeriodEndPrefix}
439+
440+
iterator := ctx.KVStore(h.groupStoreKey).
441+
Iterator(prefix, sdk.PrefixEndBytes(append(append(prefix, lenTimeByte), timeBytes...)))
442+
defer iterator.Close()
443+
for ; iterator.Valid(); iterator.Next() {
444+
proposalID, _ := splitKeyWithTime(iterator.Key())
445+
h.doUpdateGroupProposal(ctx, proposalID)
446+
}
447+
435448
for _, event := range res.Events {
436449
h.handleBeginBlockEndBlockEvent(ctx, event)
437450
}

hooks/emitter/group.go

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,16 @@ import (
1111
proto "github.com/cosmos/gogoproto/proto"
1212
)
1313

14+
func extractStringFromEventMap(evMap common.EvMap, event string, topic string) string {
15+
return strings.Trim(evMap[event+"."+topic][0], `"`)
16+
}
17+
1418
// handleGroupMsgCreateGroup implements emitter handler for Group's MsgCreateGroup.
1519
func (h *Hook) handleGroupMsgCreateGroup(
1620
ctx sdk.Context, evMap common.EvMap,
1721
) {
1822
groupId := uint64(
19-
common.Atoi(strings.Trim(evMap[proto.MessageName(&group.EventCreateGroup{})+".group_id"][0], `"`)),
23+
common.Atoi(extractStringFromEventMap(evMap, proto.MessageName(&group.EventCreateGroup{}), "group_id")),
2024
)
2125
groupInfoResponse, _ := h.groupKeeper.GroupInfo(
2226
sdk.WrapSDKContext(ctx),
@@ -38,7 +42,7 @@ func (h *Hook) handleGroupMsgCreateGroup(
3842
func (h *Hook) handleGroupMsgCreateGroupPolicy(
3943
ctx sdk.Context, evMap common.EvMap,
4044
) {
41-
policyAddress := strings.Trim(evMap[proto.MessageName(&group.EventCreateGroupPolicy{})+".address"][0], `"`)
45+
policyAddress := extractStringFromEventMap(evMap, proto.MessageName(&group.EventCreateGroupPolicy{}), "address")
4246
groupPolicyResponse, _ := h.groupKeeper.GroupPolicyInfo(
4347
sdk.WrapSDKContext(ctx),
4448
&group.QueryGroupPolicyInfoRequest{
@@ -72,7 +76,7 @@ func (h *Hook) handleGroupMsgSubmitProposal(
7276
ctx sdk.Context, evMap common.EvMap,
7377
) {
7478
proposalId := uint64(
75-
common.Atoi(strings.Trim(evMap[proto.MessageName(&group.EventSubmitProposal{})+".proposal_id"][0], `"`)),
79+
common.Atoi(extractStringFromEventMap(evMap, proto.MessageName(&group.EventSubmitProposal{}), "proposal_id")),
7680
)
7781
proposalResponse, _ := h.groupKeeper.Proposal(
7882
sdk.WrapSDKContext(ctx),
@@ -114,7 +118,7 @@ func (h *Hook) handleGroupMsgVote(
114118
ctx sdk.Context, msg *group.MsgVote, evMap common.EvMap,
115119
) {
116120
proposalId := uint64(
117-
common.Atoi(strings.Trim(evMap[proto.MessageName(&group.EventVote{})+".proposal_id"][0], `"`)),
121+
common.Atoi(extractStringFromEventMap(evMap, proto.MessageName(&group.EventVote{}), "proposal_id")),
118122
)
119123
voteResponse, err := h.groupKeeper.VoteByProposalVoter(
120124
sdk.WrapSDKContext(ctx),
@@ -141,9 +145,9 @@ func (h *Hook) handleGroupMsgLeaveGroup(
141145
ctx sdk.Context, evMap common.EvMap,
142146
) {
143147
groupId := uint64(
144-
common.Atoi(strings.Trim(evMap[proto.MessageName(&group.EventLeaveGroup{})+".group_id"][0], `"`)),
148+
common.Atoi(extractStringFromEventMap(evMap, proto.MessageName(&group.EventLeaveGroup{}), "group_id")),
145149
)
146-
address := strings.Trim(evMap[proto.MessageName(&group.EventLeaveGroup{})+".address"][0], `"`)
150+
address := extractStringFromEventMap(evMap, proto.MessageName(&group.EventLeaveGroup{}), "address")
147151
h.doUpdateGroup(ctx, groupId)
148152
h.Write("REMOVE_GROUP_MEMBER", common.JsDict{
149153
"group_id": groupId,
@@ -156,7 +160,7 @@ func (h *Hook) handleGroupMsgUpdateGroupAdmin(
156160
ctx sdk.Context, evMap common.EvMap,
157161
) {
158162
groupId := uint64(
159-
common.Atoi(strings.Trim(evMap[proto.MessageName(&group.EventUpdateGroup{})+".group_id"][0], `"`)),
163+
common.Atoi(extractStringFromEventMap(evMap, proto.MessageName(&group.EventUpdateGroup{}), "group_id")),
160164
)
161165
h.doUpdateGroup(ctx, groupId)
162166
}
@@ -177,7 +181,7 @@ func (h *Hook) handleGroupMsgUpdateGroupMetadata(
177181
ctx sdk.Context, evMap common.EvMap,
178182
) {
179183
groupId := uint64(
180-
common.Atoi(strings.Trim(evMap[proto.MessageName(&group.EventUpdateGroup{})+".group_id"][0], `"`)),
184+
common.Atoi(extractStringFromEventMap(evMap, proto.MessageName(&group.EventUpdateGroup{}), "group_id")),
181185
)
182186
h.doUpdateGroup(ctx, groupId)
183187
}
@@ -186,23 +190,35 @@ func (h *Hook) handleGroupMsgUpdateGroupMetadata(
186190
func (h *Hook) handleGroupMsgUpdateGroupPolicyAdmin(
187191
ctx sdk.Context, evMap common.EvMap,
188192
) {
189-
groupPolicyAddress := strings.Trim(evMap[proto.MessageName(&group.EventUpdateGroupPolicy{})+".address"][0], `"`)
193+
groupPolicyAddress := extractStringFromEventMap(
194+
evMap,
195+
proto.MessageName(&group.EventUpdateGroupPolicy{}),
196+
"address",
197+
)
190198
h.doUpdateGroupPolicy(ctx, groupPolicyAddress)
191199
}
192200

193201
// handleGroupMsgUpdateGroupPolicyDecisionPolicy implements emitter handler for Group's MsgUpdateGroupPolicyDecisionPolicy.
194202
func (h *Hook) handleGroupMsgUpdateGroupPolicyDecisionPolicy(
195203
ctx sdk.Context, evMap common.EvMap,
196204
) {
197-
groupPolicyAddress := strings.Trim(evMap[proto.MessageName(&group.EventUpdateGroupPolicy{})+".address"][0], `"`)
205+
groupPolicyAddress := extractStringFromEventMap(
206+
evMap,
207+
proto.MessageName(&group.EventUpdateGroupPolicy{}),
208+
"address",
209+
)
198210
h.doUpdateGroupPolicy(ctx, groupPolicyAddress)
199211
}
200212

201213
// handleGroupMsgUpdateGroupPolicyMetadata implements emitter handler for Group's MsgUpdateGroupPolicyMetadata.
202214
func (h *Hook) handleGroupMsgUpdateGroupPolicyMetadata(
203215
ctx sdk.Context, evMap common.EvMap,
204216
) {
205-
groupPolicyAddress := strings.Trim(evMap[proto.MessageName(&group.EventUpdateGroupPolicy{})+".address"][0], `"`)
217+
groupPolicyAddress := extractStringFromEventMap(
218+
evMap,
219+
proto.MessageName(&group.EventUpdateGroupPolicy{}),
220+
"address",
221+
)
206222
h.doUpdateGroupPolicy(ctx, groupPolicyAddress)
207223
}
208224

@@ -211,7 +227,9 @@ func (h *Hook) handleGroupMsgWithdrawProposal(
211227
ctx sdk.Context, evMap common.EvMap,
212228
) {
213229
proposalId := uint64(
214-
common.Atoi(strings.Trim(evMap[proto.MessageName(&group.EventWithdrawProposal{})+".proposal_id"][0], `"`)),
230+
common.Atoi(
231+
extractStringFromEventMap(evMap, proto.MessageName(&group.EventWithdrawProposal{}), "proposal_id"),
232+
),
215233
)
216234
h.doUpdateGroupProposal(ctx, proposalId)
217235
}
@@ -224,9 +242,9 @@ func (h *Hook) handleGroupEventExec(
224242
return
225243
}
226244
proposalId := uint64(
227-
common.Atoi(strings.Trim(evMap[proto.MessageName(&group.EventExec{})+".proposal_id"][0], `"`)),
245+
common.Atoi(extractStringFromEventMap(evMap, proto.MessageName(&group.EventExec{}), "proposal_id")),
228246
)
229-
executorResult := strings.Trim(evMap[proto.MessageName(&group.EventExec{})+".result"][0], `"`)
247+
executorResult := extractStringFromEventMap(evMap, proto.MessageName(&group.EventExec{}), "result")
230248
h.Write("UPDATE_GROUP_PROPOSAL_BY_ID", common.JsDict{
231249
"id": proposalId,
232250
"executor_result": executorResult,
@@ -243,10 +261,10 @@ func (h *Hook) handleGroupEventProposalPruned(
243261
return
244262
}
245263
proposalId := uint64(
246-
common.Atoi(strings.Trim(evMap[proto.MessageName(&group.EventProposalPruned{})+".proposal_id"][0], `"`)),
264+
common.Atoi(extractStringFromEventMap(evMap, proto.MessageName(&group.EventProposalPruned{}), "proposal_id")),
247265
)
248-
proposalStatus := strings.Trim(evMap[proto.MessageName(&group.EventProposalPruned{})+".status"][0], `"`)
249-
var tallyResult group.TallyResult
266+
proposalStatus := extractStringFromEventMap(evMap, proto.MessageName(&group.EventProposalPruned{}), "status")
267+
tallyResult := group.DefaultTallyResult()
250268
json.Unmarshal([]byte(evMap[proto.MessageName(&group.EventProposalPruned{})+".tally_result"][0]), &tallyResult)
251269
h.Write("UPDATE_GROUP_PROPOSAL_BY_ID", common.JsDict{
252270
"id": proposalId,

hooks/emitter/handler.go

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
1414
govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
1515
"github.com/cosmos/cosmos-sdk/x/group"
16-
groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper"
1716
slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
1817
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
1918
proto "github.com/cosmos/gogoproto/proto"
@@ -159,18 +158,6 @@ func (h *Hook) handleMsg(ctx sdk.Context, txHash []byte, msg sdk.Msg, log sdk.AB
159158
}
160159

161160
func (h *Hook) handleBeginBlockEndBlockEvent(ctx sdk.Context, event abci.Event) {
162-
timeBytes := sdk.FormatTimeBytes(ctx.BlockTime().UTC())
163-
lenTimeByte := byte(len(timeBytes))
164-
prefix := []byte{groupkeeper.ProposalsByVotingPeriodEndPrefix}
165-
166-
iterator := ctx.KVStore(h.groupStoreKey).
167-
Iterator(prefix, sdk.PrefixEndBytes(append(append(prefix, lenTimeByte), timeBytes...)))
168-
defer iterator.Close()
169-
for ; iterator.Valid(); iterator.Next() {
170-
proposalID, _ := splitKeyWithTime(iterator.Key())
171-
h.doUpdateGroupProposal(ctx, proposalID)
172-
}
173-
174161
events := sdk.StringifyEvents([]abci.Event{event})
175162
evMap := parseEvents(events)
176163
switch event.Type {

0 commit comments

Comments
 (0)