1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

WTF-315 Fix race conditions caused by writing to view

This commit is contained in:
Chris Cummer
2019-04-24 23:53:31 -07:00
parent a1aae6206f
commit 5445309aa0
33 changed files with 256 additions and 96 deletions

View File

@@ -20,6 +20,7 @@ const baseURL = "https://bittrex.com/api/v1.1/public/getmarketsummary"
type Widget struct {
wtf.TextWidget
app *tview.Application
settings *Settings
summaryList
}
@@ -29,6 +30,7 @@ func NewWidget(app *tview.Application, settings *Settings) *Widget {
widget := Widget{
TextWidget: wtf.NewTextWidget(app, settings.common, false),
app: app,
settings: settings,
summaryList: summaryList{},
}
@@ -77,7 +79,10 @@ func makeMarketCurrency(name string) *mCurrency {
// Refresh & update after interval time
func (widget *Widget) Refresh() {
widget.updateSummary()
widget.display()
widget.app.QueueUpdateDraw(func() {
widget.display()
})
}
/* -------------------- Unexported Functions -------------------- */
@@ -137,7 +142,9 @@ func (widget *Widget) updateSummary() {
}
}
widget.display()
widget.app.QueueUpdateDraw(func() {
widget.display()
})
}
func makeRequest(baseName, marketName string) *http.Request {

View File

@@ -14,6 +14,7 @@ import (
type Widget struct {
wtf.TextWidget
app *tview.Application
device_token string
settings *Settings
}
@@ -22,6 +23,7 @@ func NewWidget(app *tview.Application, settings *Settings) *Widget {
widget := Widget{
TextWidget: wtf.NewTextWidget(app, settings.common, false),
app: app,
device_token: settings.deviceToken,
settings: settings,
}
@@ -32,15 +34,17 @@ func NewWidget(app *tview.Application, settings *Settings) *Widget {
/* -------------------- Exported Functions -------------------- */
func (widget *Widget) Refresh() {
widget.View.SetTitle(" Blockfolio ")
positions, err := Fetch(widget.device_token)
if err != nil {
return
}
content := widget.contentFrom(positions)
widget.View.SetText(content)
widget.app.QueueUpdateDraw(func() {
widget.View.SetTitle(" Blockfolio ")
widget.View.SetText(content)
})
}
/* -------------------- Unexported Functions -------------------- */

View File

@@ -14,6 +14,7 @@ import (
type Widget struct {
wtf.TextWidget
app *tview.Application
priceWidget *price.Widget
toplistWidget *toplist.Widget
settings *Settings
@@ -24,6 +25,7 @@ func NewWidget(app *tview.Application, settings *Settings) *Widget {
widget := Widget{
TextWidget: wtf.NewTextWidget(app, settings.common, false),
app: app,
priceWidget: price.NewWidget(settings.priceSettings),
toplistWidget: toplist.NewWidget(settings.toplistSettings),
settings: settings,
@@ -46,14 +48,17 @@ func (widget *Widget) Refresh() {
widget.toplistWidget.Refresh(&wg)
wg.Wait()
display(widget)
widget.app.QueueUpdateDraw(func() {
widget.display()
})
}
/* -------------------- Unexported Functions -------------------- */
func display(widget *Widget) {
func (widget *Widget) display() {
str := ""
str += widget.priceWidget.Result
str += widget.toplistWidget.Result
widget.View.SetText(fmt.Sprintf("\n%s", str))
}