Skip to content

Commit

Permalink
Merge pull request #127 from blinklabs-io/fix/reduce-flicker
Browse files Browse the repository at this point in the history
fix: reduce flicker
  • Loading branch information
wolf31o2 authored Dec 31, 2023
2 parents f43855e + 15fba06 commit b8aac32
Showing 1 changed file with 61 additions and 20 deletions.
81 changes: 61 additions & 20 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@ var role string = "Relay"
// Track current epoch
var currentEpoch uint32 = 0

// Text strings
var homeText string
var infoText string
var peerText string
var testText string

func main() {
// Check if any command line flags are given
flag.StringVar(
Expand Down Expand Up @@ -121,7 +127,8 @@ func main() {
}

// Populate initial text from metrics
text.SetText(getHomeText(ctx, metrics)).SetBorder(true)
homeText = getHomeText(ctx, metrics)
text.SetText(homeText).SetBorder(true)

// Set our header
var width int = 71
Expand Down Expand Up @@ -187,7 +194,6 @@ func main() {
if event.Rune() == 104 || event.Rune() == 114 { // h or r
active = "main"
showPeers = false
text.Clear()
footerText.Clear()
footerText.SetText(defaultFooterText)
metrics, err = getPromMetrics(ctx)
Expand All @@ -199,50 +205,68 @@ func main() {
),
)
}
text.SetText(getHomeText(ctx, metrics))
tmpText := getHomeText(ctx, metrics)
if tmpText != "" && tmpText != homeText {
homeText = tmpText
text.Clear()
text.SetText(homeText)
}
}
if event.Rune() == 105 { // i
active = "info"
text.Clear()
footerText.Clear()
footerText.SetText(
" [yellow](esc/q) Quit[white] | [yellow](h) Return home",
)
text.SetText(getInfoText(ctx))
tmpText := getInfoText(ctx)
if tmpText != "" && tmpText != infoText {
infoText = tmpText
text.Clear()
text.SetText(infoText)
}
}
if event.Rune() == 112 { // p
active = "peer"
checkPeers = true
pingPeers = false
showPeers = false
scrollPeers = false
text.Clear()
footerText.Clear()
footerText.SetText(
" [yellow](esc/q) Quit[white] | [yellow](h) Return home",
)
text.SetText(getPeerText(ctx))
tmpText := getPeerText(ctx)
if tmpText != "" && tmpText != peerText {
peerText = tmpText
text.Clear()
text.SetText(peerText)
}
}
if event.Rune() == 113 || event.Key() == tcell.KeyEscape { // q
app.Stop()
}
if event.Rune() == 116 { // t
active = "test"
text.Clear()
footerText.Clear()
footerText.SetText(
" [yellow](esc/q) Quit[white] | [yellow](h) Return home",
)
metrics, err = getPromMetrics(ctx)
if err != nil {
text.Clear()
text.SetText(
fmt.Sprintf(
" [red]Cannot get metrics from node![white]\n [red]ERROR[white]: %s",
err,
),
)
}
text.SetText(getTestText(ctx, metrics))
tmpText := getTestText(ctx, metrics)
if tmpText != "" && tmpText != testText {
testText = tmpText
text.Clear()
text.SetText(testText)
}
}
return event
})
Expand All @@ -262,7 +286,6 @@ func main() {
)
}
if active == "main" {
text.Clear()
metrics, err = getPromMetrics(ctx)
if err != nil {
text.SetText(
Expand All @@ -272,17 +295,30 @@ func main() {
),
)
}
text.SetText(getHomeText(ctx, metrics))
tmpText := getHomeText(ctx, metrics)
if tmpText != "" && tmpText != homeText {
homeText = tmpText
text.Clear()
text.SetText(homeText)
}
}
if active == "peer" {
if checkPeers {
checkPeers = false
pingPeers = true
text.Clear()
text.SetText(getPeerText(ctx))
tmpText := getPeerText(ctx)
if tmpText != "" && tmpText != peerText {
peerText = tmpText
text.Clear()
text.SetText(peerText)
}
} else {
text.Clear()
text.SetText(getPeerText(ctx))
tmpText := getPeerText(ctx)
if tmpText != "" && tmpText != peerText {
peerText = tmpText
text.Clear()
text.SetText(peerText)
}
// Scroll to the top only once
if scrollPeers {
scrollPeers = false
Expand All @@ -291,17 +327,22 @@ func main() {
}
}
if active == "test" {
text.Clear()
metrics, err = getPromMetrics(ctx)
if err != nil {
text.Clear()
text.SetText(
fmt.Sprintf(
" [red]Cannot get metrics from node![white]\n [red]ERROR[white]: %s",
err,
),
)
}
text.SetText(getTestText(ctx, metrics))
tmpText := getTestText(ctx, metrics)
if tmpText != "" && tmpText != testText {
testText = tmpText
text.Clear()
text.SetText(testText)
}
}
time.Sleep(time.Second * 2)
}
Expand Down Expand Up @@ -476,15 +517,15 @@ func getTestText(ctx context.Context, promMetrics *PromMetrics) string {
func getHomeText(ctx context.Context, promMetrics *PromMetrics) string {
cfg := config.GetConfig()
processMetrics, err := getProcessMetrics(ctx)
if err != nil {
uptimes = 0
} else {
if err == nil {
// Calculate uptime for our process
createTime, err := processMetrics.CreateTimeWithContext(ctx)
if err == nil {
// createTime is milliseconds since UNIX epoch, convert to seconds
uptimes = uint64(time.Now().Unix() - (createTime / 1000))
}
} else {
uptimes = 0
}

// Determine if we're P2P
Expand Down

0 comments on commit b8aac32

Please sign in to comment.