Skip to content

Commit dbd63ac

Browse files
author
Norman Meier
committed
fix: avoid stack overflow
Signed-off-by: Norman Meier <norman@samourai.coop>
1 parent e1e1451 commit dbd63ac

File tree

2 files changed

+25
-17
lines changed

2 files changed

+25
-17
lines changed

examples/gno.land/r/demo/teritori/projects_manager/projects_manager.gno

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -163,24 +163,29 @@ type Conflict struct {
163163
}
164164

165165
func (c Conflict) ToJSON() *json.Node {
166-
responseMessage := json.NullNode("")
166+
children := map[string]*json.Node{
167+
"initiator": json.StringNode("", c.initiator.String()),
168+
"createdAt": json.StringNode("", c.createdAt.Format(time.RFC3339)),
169+
"initiatorMessage": json.StringNode("", c.initiatorMessage),
170+
}
171+
167172
if c.responseMessage != nil {
168-
responseMessage = json.StringNode("", *c.responseMessage)
173+
children["responseMessage"] = json.StringNode("", *c.responseMessage)
174+
}
175+
if c.respondedAt != nil {
176+
children["respondedAt"] = json.StringNode("", c.respondedAt.Format(time.RFC3339))
177+
}
178+
if c.resolvedAt != nil {
179+
children["resolvedAt"] = json.StringNode("", c.resolvedAt.Format(time.RFC3339))
169180
}
170-
resolutionMessage := json.NullNode("")
171181
if c.resolutionMessage != nil {
172-
resolutionMessage = json.StringNode("", *c.resolutionMessage)
182+
children["resolutionMessage"] = json.StringNode("", *c.resolutionMessage)
173183
}
174-
return json.ObjectNode("", map[string]*json.Node{
175-
"initiator": json.StringNode("", c.initiator.String()),
176-
"createdAt": json.StringNode("", c.createdAt.Format(time.RFC3339)),
177-
"respondedAt": json.StringNode("", c.respondedAt.Format(time.RFC3339)),
178-
"resolvedAt": json.StringNode("", c.resolvedAt.Format(time.RFC3339)),
179-
"initiatorMessage": json.StringNode("", c.initiatorMessage),
180-
"responseMessage": responseMessage,
181-
"resolutionMessage": resolutionMessage,
182-
"outcome": c.outcome.ToJSON(),
183-
})
184+
if c.outcome != nil {
185+
children["outcome"] = c.outcome.ToJSON()
186+
}
187+
188+
return json.ObjectNode("", children)
184189
}
185190

186191
type Contract struct {
@@ -219,6 +224,9 @@ func (c Contract) ToJSON() *json.Node {
219224
}
220225

221226
conflicts := make([]*json.Node, len(c.conflicts))
227+
for i, conflict := range c.conflicts {
228+
conflicts[i] = conflict.ToJSON()
229+
}
222230

223231
return json.ObjectNode("", map[string]*json.Node{
224232
"id": json.StringNode("", strconv.FormatUint(c.id, 10)),

examples/gno.land/r/demo/teritori/projects_manager/projects_manager_test.gno

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ func TestJSONRender(t *testing.T) {
6767
t.Fatalf("Error marshalling contract to JSON: %s", err)
6868
}
6969

70-
expected := `{"id":1,"sender":"sender","contractor":"contractor2","contractorCandidates":["contractor1","contractor2"],"funder":"funder","paymentDenom":"denom","metadata":"metadata","status":"CREATED","expireAt":"2021-08-31T00:00:00Z","funderFeedback":"funderFeedback","contractorFeedback":"contractorFeedback","milestones":[{"id":1,"title":"title","desc":"desc","amount":100,"paid":0,"duration":2592000000000000,"link":"link","funded":false,"priority":"MS_PRIORITY_HIGH","status":"MS_OPEN"}],"pausedBy":"pausedBy","conflictHandler":"conflictHandler","handlerCandidate":"handlerCandidate","handlerSuggestor":"handlerSuggestor","createdAt":"2021-08-01T00:00:00Z","budget":1000,"funded":false,"rejectReason":"rejectReason","conflicts":[{"initiator":"initiator","createdAt":"2021-08-01T00:00:00Z","respondedAt":null,"resolvedAt":null,"initiatorMessage":"initiatorMessage","responseMessage":null,"resolutionMessage":null,"outcome":null}]}`
71-
if output != expected {
72-
t.Errorf("Expected output to be `%s`, got `%s`", expected, output)
70+
expected := `{"id":"1","sender":"sender","contractor":"contractor2","contractorCandidates":["contractor1","contractor2"],"funder":"funder","paymentDenom":"denom","metadata":"metadata","status":"CREATED","expireAt":"2021-08-31T00:00:00Z","funderFeedback":"funderFeedback","contractorFeedback":"contractorFeedback","milestones":[{"id":"1","title":"title","desc":"desc","amount":"100","paid":"0","duration":2592000,"link":"link","funded":false,"priority":"MS_PRIORITY_HIGH","status":"MS_OPEN"}],"pausedBy":"pausedBy","conflictHandler":"conflictHandler","handlerCandidate":"handlerCandidate","handlerSuggestor":"handlerSuggestor","createdAt":"2021-08-01T00:00:00Z","budget":"1000","funded":false,"rejectReason":"rejectReason","conflicts":[{"initiator":"initiator","createdAt":"2021-08-01T00:00:00Z","initiatorMessage":"initiatorMessage"}]}`
71+
if string(output) != expected {
72+
t.Errorf("Expected output to be `%s`, got:\n`%s`", expected, string(output))
7373
}
7474
}

0 commit comments

Comments
 (0)