diff --git a/go.mod b/go.mod index 1b72a4c5a6c5979362f35b10b31c3ba499ffe951..bc0904dd58042f8abf304468f248508809f1c13b 100644 --- a/go.mod +++ b/go.mod @@ -9,4 +9,5 @@ require ( github.com/ugorji/go v1.1.4 // indirect github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 // indirect gitlab.com/elixxir/client v1.5.1-0.20210317220715-139e06c28b9b + gitlab.com/xx_network/primitives v0.0.4-0.20210309173740-eb8cd411334a ) diff --git a/main.go b/main.go index b8ba89b24c302d9ce5d818b40171d77b8c594b64..92be6ee7b3c7409aba0bbc20db6ea49a5c89cdc8 100644 --- a/main.go +++ b/main.go @@ -42,13 +42,18 @@ func main() { div.AddElement(sendText.Element) // add a button - btn := bootstrap.NewButton(bootstrap.ButtonPrimary, "Send") + btn := bootstrap.NewButton(bootstrap.ButtonPrimary, "Send over xx") + rtnDiv := bootstrap.NewElement("div", "well") + rtnRow := bootstrap.NewRow(bootstrap.NewColumn(bootstrap.ColumnSmall, 3, rtnDiv)) + body.AddElement(rtnRow) btnEvent := func(sender *gowd.Element, event *gowd.EventElement) { - btnClicked(sender, event, ethAddr.Element, sendText.Element) + btnClicked(sender, event, ethAddr.Element.Kids[1], sendText.Element.Kids[1], rtnDiv) } btn.OnEvent(gowd.OnClick, btnEvent) div.AddElement(btn) + + // div.AddHTML(` // <label for="fname">Ethereum address:</label><br> // <input type="text" id="ethaddr" name="ethaddr"><br> @@ -64,14 +69,20 @@ func main() { gowd.Run(body) } +var lastElement *gowd.Element + // happens when the 'start' button is clicked -func btnClicked(sender *gowd.Element, event *gowd.EventElement, ethAddr, sendText *gowd.Element) { - div := bootstrap.NewElement("div", "well") - row := bootstrap.NewRow(bootstrap.NewColumn(bootstrap.ColumnSmall, 3, div)) - body.AddElement(row) +func btnClicked(sender *gowd.Element, event *gowd.EventElement, ethAddr, + sendText *gowd.Element, div *gowd.Element) { + + sender.SetAttribute("disabled", "true") + body.Render() + + if lastElement!=nil{ + div.RemoveElement(lastElement) + } // adds test to the body - text := div.AddElement(gowd.NewStyledText("Sending message...", gowd.BoldText)) // makes the body stop responding to user events body.Disable() @@ -79,26 +90,43 @@ func btnClicked(sender *gowd.Element, event *gowd.EventElement, ethAddr, sendTex // Send the message message := ethAddr.GetValue() + ";" + sendText.GetValue() - text.SetText(message) + defer func() { + sender.RemoveAttribute("disabled") + body.Render() + body.Enable() + }() + //text.SetText(message) + replyString := make(chan string) // Inline function to print message from client to page, callback for upcoming function replyFunc := func(payload []byte, err error) { + var result string if err != nil { - text.SetText(err.Error()) + result = err.Error() } else { - text.SetText(string(payload)) + result = string(payload) } - sender.SetText("Start") - body.RemoveElement(text) - body.Enable() + replyString <- result + //sender.SetText("Start") + //body.RemoveElement(text) + //body.Enable() } err := singleMngr.TransmitSingleUse(botContact, []byte(message), "xxCoinGame", 10, replyFunc, 30*time.Second) if err != nil { - text.SetText(err.Error()) - sender.SetText("Start") - body.RemoveElement(text) - body.Enable() + //body.Enable() + lastElement = div.AddElement(gowd.NewStyledText(err.Error(), gowd.BoldText)) + //sender.SetText("Start") + //body.RemoveElement(text) + //body.Enable() + return } + + result := <- replyString + + + lastElement = div.AddElement(gowd.NewStyledText(result, gowd.BoldText)) + + }