Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions rocketpool-cli/service/config/settings-builder.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package config

import (
cfgtypes "github.com/rocket-pool/smartnode/shared/types/config"
)

type BuilderConfigPage struct {
epbsPage *EpbsPage
page *page
layout *standardLayout
items map[*cfgtypes.Parameter]*parameterizedFormItem
}

func NewBuilderConfigPage(epbsPage *EpbsPage) *BuilderConfigPage {
configPage := &BuilderConfigPage{
epbsPage: epbsPage,
layout: newStandardLayout(),
items: map[*cfgtypes.Parameter]*parameterizedFormItem{},
}
cfg := epbsPage.home.md.Config
configPage.layout.createForm(&cfg.Smartnode.Network, "Builder Settings")
configPage.layout.setupEscapeReturnHomeHandler(epbsPage.home.md, epbsPage.page)
items := createParameterizedFormItems(cfg.Epbs.GetParameters(), configPage.layout)
configPage.layout.mapParameterizedFormItems(items...)
for _, item := range items {
configPage.items[item.parameter] = item
}
configPage.page = newPage(
epbsPage.page,
"settings-builder",
"Builder Settings",
"Set the minimum bid and maximum execution payment in ETH, and select builders for the ePBS builder list. These settings are shared by all consensus clients.",
configPage.layout.grid,
)
configPage.handleLayoutChanged()
return configPage
}

func (configPage *BuilderConfigPage) getPage() *page {
return configPage.page
}

func (configPage *BuilderConfigPage) handleLayoutChanged() {
cfg := configPage.epbsPage.home.md.Config.Epbs
configPage.layout.form.Clear(true)
configPage.layout.form.AddFormItem(configPage.items[&cfg.MinBid].item)
configPage.layout.form.AddFormItem(configPage.items[&cfg.MaxExecutionPayment].item)
for _, param := range cfg.GetAvailableBuilderParameters() {
configPage.layout.form.AddFormItem(configPage.items[param].item)
}
configPage.layout.refresh()
}
12 changes: 6 additions & 6 deletions rocketpool-cli/service/config/settings-commit-boost.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (

// The page wrapper for the Commit-boost config
type CommitBoostConfigPage struct {
home *settingsHome
epbsPage *EpbsPage
page *page
layout *standardLayout
masterConfig *config.RocketPoolConfig
Expand All @@ -26,16 +26,16 @@ type CommitBoostConfigPage struct {
}

// Creates a new page for the Commit-Boost settings
func NewCommitBoostConfigPage(home *settingsHome) *CommitBoostConfigPage {
func NewCommitBoostConfigPage(epbsPage *EpbsPage) *CommitBoostConfigPage {

configPage := &CommitBoostConfigPage{
home: home,
masterConfig: home.md.Config,
epbsPage: epbsPage,
masterConfig: epbsPage.home.md.Config,
}
configPage.createContent()

configPage.page = newPage(
home.homePage,
epbsPage.page,
"settings-commit-boost",
"Commit-Boost",
"Select this to configure the settings for the Commit-Boost PBS client, the source of blocks with MEV rewards for your validators.\n\nCommit-Boost is a powerful PBS client that offers detailed reporting and transparency around block building, very low latency, and a responsive development team.\n\n",
Expand All @@ -57,7 +57,7 @@ func (configPage *CommitBoostConfigPage) createContent() {
// Create the layout
configPage.layout = newStandardLayout()
configPage.layout.createForm(&configPage.masterConfig.Smartnode.Network, "Commit-Boost Settings")
configPage.layout.setupEscapeReturnHomeHandler(configPage.home.md, configPage.home.homePage)
configPage.layout.setupEscapeReturnHomeHandler(configPage.epbsPage.home.md, configPage.epbsPage.page)

// Set up the form items
configPage.enableBox = createParameterizedCheckbox(&configPage.masterConfig.EnableCommitBoost)
Expand Down
81 changes: 81 additions & 0 deletions rocketpool-cli/service/config/settings-epbs.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package config

import (
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
)

// EpbsPage groups shared builder settings and the existing PBS clients.
type EpbsPage struct {
home *settingsHome
page *page
layout *standardLayout
categoryList *tview.List
builderPage *BuilderConfigPage
mevBoostPage *MevBoostConfigPage
commitBoostPage *CommitBoostConfigPage
subpages []settingsPage
}

func NewEpbsPage(home *settingsHome) *EpbsPage {
epbsPage := &EpbsPage{home: home}
epbsPage.page = newPage(
home.homePage,
"settings-epbs",
"ePBS",
"Configure builder settings shared by all consensus clients, and manage MEV-Boost and Commit-Boost.",
nil,
)
epbsPage.builderPage = NewBuilderConfigPage(epbsPage)
epbsPage.mevBoostPage = NewMevBoostConfigPage(epbsPage)
epbsPage.commitBoostPage = NewCommitBoostConfigPage(epbsPage)
epbsPage.subpages = []settingsPage{
epbsPage.builderPage,
epbsPage.mevBoostPage,
epbsPage.commitBoostPage,
}
for _, subpage := range epbsPage.subpages {
home.md.pages.AddPage(subpage.getPage().id, subpage.getPage().content, true, false)
}
epbsPage.createContent()
epbsPage.page.content = epbsPage.layout.grid
return epbsPage
}

func (epbsPage *EpbsPage) getPage() *page {
return epbsPage.page
}

func (epbsPage *EpbsPage) createContent() {
epbsPage.layout = newStandardLayout()
epbsPage.layout.createSettingFooter()
list := tview.NewList().SetChangedFunc(func(index int, mainText, secondaryText string, shortcut rune) {
epbsPage.layout.descriptionBox.SetText(epbsPage.subpages[index].getPage().description)
})
list.SetBackgroundColor(tview.Styles.ContrastBackgroundColor)
list.SetBorderPadding(0, 0, 1, 1)
list.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
if event.Key() == tcell.KeyEsc {
epbsPage.home.md.setPage(epbsPage.home.homePage)
return nil
}
return event
})
for _, subpage := range epbsPage.subpages {
list.AddItem(subpage.getPage().title, "", 0, nil)
}
list.SetSelectedFunc(func(index int, mainText, secondaryText string, shortcut rune) {
subpage := epbsPage.subpages[index]
subpage.handleLayoutChanged()
epbsPage.home.md.setPage(subpage.getPage())
})
epbsPage.categoryList = list
epbsPage.layout.setContent(list, list.Box, "ePBS Settings")
epbsPage.layout.descriptionBox.SetText(epbsPage.subpages[0].getPage().description)
}

func (epbsPage *EpbsPage) handleLayoutChanged() {
for _, subpage := range epbsPage.subpages {
subpage.handleLayoutChanged()
}
}
17 changes: 5 additions & 12 deletions rocketpool-cli/service/config/settings-home.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ type settingsHome struct {
ecPage *ExecutionConfigPage
fallbackPage *FallbackConfigPage
ccPage *ConsensusConfigPage
mevBoostPage *MevBoostConfigPage
commitBoostPage *CommitBoostConfigPage
epbsPage *EpbsPage
metricsPage *MetricsConfigPage
alertingPage *AlertingConfigPage
addonsPage *AddonsPage
Expand All @@ -47,8 +46,7 @@ func newSettingsHome(md *MainDisplay) *settingsHome {
home.ecPage = NewExecutionConfigPage(home)
home.ccPage = NewConsensusConfigPage(home)
home.fallbackPage = NewFallbackConfigPage(home)
home.mevBoostPage = NewMevBoostConfigPage(home)
home.commitBoostPage = NewCommitBoostConfigPage(home)
home.epbsPage = NewEpbsPage(home)
home.metricsPage = NewMetricsConfigPage(home)
home.alertingPage = NewAlertingConfigPage(home)
home.addonsPage = NewAddonsPage(home)
Expand All @@ -58,8 +56,7 @@ func newSettingsHome(md *MainDisplay) *settingsHome {
home.ecPage,
home.ccPage,
home.fallbackPage,
home.mevBoostPage,
home.commitBoostPage,
home.epbsPage,
home.metricsPage,
home.alertingPage,
home.addonsPage,
Expand Down Expand Up @@ -246,12 +243,8 @@ func (home *settingsHome) refresh() {
home.fallbackPage.layout.refresh()
}

if home.mevBoostPage != nil {
home.mevBoostPage.layout.refresh()
}

if home.commitBoostPage != nil {
home.commitBoostPage.layout.refresh()
if home.epbsPage != nil {
home.epbsPage.handleLayoutChanged()
}

if home.metricsPage != nil {
Expand Down
12 changes: 6 additions & 6 deletions rocketpool-cli/service/config/settings-mev-boost.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (

// The page wrapper for the MEV-boost config
type MevBoostConfigPage struct {
home *settingsHome
epbsPage *EpbsPage
page *page
layout *standardLayout
masterConfig *config.RocketPoolConfig
Expand All @@ -31,16 +31,16 @@ type MevBoostConfigPage struct {
}

// Creates a new page for the MEV-Boost settings
func NewMevBoostConfigPage(home *settingsHome) *MevBoostConfigPage {
func NewMevBoostConfigPage(epbsPage *EpbsPage) *MevBoostConfigPage {

configPage := &MevBoostConfigPage{
home: home,
masterConfig: home.md.Config,
epbsPage: epbsPage,
masterConfig: epbsPage.home.md.Config,
}
configPage.createContent()

configPage.page = newPage(
home.homePage,
epbsPage.page,
"settings-mev-boost",
"MEV-Boost",
"Select this to configure the settings for the Flashbots MEV-Boost client, the source of blocks with MEV rewards for your minipools.\n\nFor more information on Flashbots, MEV, and MEV-Boost, please see https://writings.flashbots.net/writings/why-run-mevboost/",
Expand All @@ -62,7 +62,7 @@ func (configPage *MevBoostConfigPage) createContent() {
// Create the layout
configPage.layout = newStandardLayout()
configPage.layout.createForm(&configPage.masterConfig.Smartnode.Network, "MEV-Boost Settings")
configPage.layout.setupEscapeReturnHomeHandler(configPage.home.md, configPage.home.homePage)
configPage.layout.setupEscapeReturnHomeHandler(configPage.epbsPage.home.md, configPage.epbsPage.page)

// Set up the form items
configPage.enableBox = createParameterizedCheckbox(&configPage.masterConfig.EnableMevBoost)
Expand Down
2 changes: 1 addition & 1 deletion rocketpool-cli/service/config/standard-layout.go
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ func (layout *standardLayout) createSettingFooter() {
panic(fmt.Errorf("error writing nav string 1: %w", err))
}

navString2 := "Esc: Go Back to Categories (saves changes)"
navString2 := "Esc: Go Back (saves changes)"
navTextView2 := tview.NewTextView().
SetDynamicColors(false).
SetRegions(false).
Expand Down
Loading
Loading