diff --git a/main.go b/main.go index 9b774d3a..17b10f3b 100644 --- a/main.go +++ b/main.go @@ -271,7 +271,8 @@ func makeWidget(app *tview.Application, pages *tview.Pages, widgetName string) w settings := resourceusage.NewSettingsFromYAML(wtf.Config) widget = resourceusage.NewWidget(app, settings) case "rollbar": - widget = rollbar.NewWidget(app, pages) + settings := rollbar.NewSettingsFromYAML(wtf.Config) + widget = rollbar.NewWidget(app, pages, settings) case "security": settings := security.NewSettingsFromYAML(wtf.Config) widget = security.NewWidget(app, settings) diff --git a/modules/rollbar/client.go b/modules/rollbar/client.go index 751f79f7..431b87c8 100644 --- a/modules/rollbar/client.go +++ b/modules/rollbar/client.go @@ -12,10 +12,9 @@ import ( "github.com/wtfutil/wtf/wtf" ) -func CurrentActiveItems() (*ActiveItems, error) { +func CurrentActiveItems(accessToken string) (*ActiveItems, error) { items := &ActiveItems{} - accessToken := wtf.Config.UString("wtf.mods.rollbar.accessToken", "") rollbarAPIURL.Host = "api.rollbar.com" rollbarAPIURL.Path = "/api/1/items" resp, err := rollbarItemRequest(accessToken) diff --git a/modules/rollbar/settings.go b/modules/rollbar/settings.go new file mode 100644 index 00000000..84ddff73 --- /dev/null +++ b/modules/rollbar/settings.go @@ -0,0 +1,34 @@ +package rollbar + +import ( + "github.com/olebedev/config" + "github.com/wtfutil/wtf/cfg" +) + +type Settings struct { + common *cfg.Common + + accessToken string + activeOnly bool + assignedToName string + count int + projectName string + projectOwner string +} + +func NewSettingsFromYAML(ymlConfig *config.Config) *Settings { + localConfig, _ := ymlConfig.Get("wtf.mods.rollbar") + + settings := Settings{ + common: cfg.NewCommonSettingsFromYAML(ymlConfig), + + accessToken: localConfig.UString("accessToken"), + activeOnly: localConfig.UBool("activeOnly"), + assignedToName: localConfig.UString("assignedToName"), + count: localConfig.UInt("count", 10), + projectName: localConfig.UString("projectName", "Items"), + projectOwner: localConfig.UString("projectOwner"), + } + + return &settings +} diff --git a/modules/rollbar/widget.go b/modules/rollbar/widget.go index e1f34204..245081f9 100644 --- a/modules/rollbar/widget.go +++ b/modules/rollbar/widget.go @@ -29,13 +29,17 @@ type Widget struct { items *Result selected int + settings *Settings } -func NewWidget(app *tview.Application, pages *tview.Pages) *Widget { +func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), TextWidget: wtf.NewTextWidget(app, "Rollbar", "rollbar", true), + + settings: settings, } + widget.HelpfulWidget.SetView(widget.View) widget.unselect() @@ -51,7 +55,7 @@ func (widget *Widget) Refresh() { return } - items, err := CurrentActiveItems() + items, err := CurrentActiveItems(widget.settings.accessToken) if err != nil { widget.View.SetWrap(true) @@ -72,16 +76,14 @@ func (widget *Widget) display() { } widget.View.SetWrap(false) - projectName := wtf.Config.UString("wtf.mods.rollbar.projectName", "Items") - widget.View.SetTitle(widget.ContextualTitle(fmt.Sprintf("%s - %s", widget.Name(), projectName))) + widget.View.SetTitle(widget.ContextualTitle(fmt.Sprintf("%s - %s", widget.Name(), widget.settings.projectName))) widget.View.SetText(widget.contentFrom(widget.items)) } func (widget *Widget) contentFrom(result *Result) string { var str string - count := wtf.Config.UInt("wtf.mods.rollbar.count", 10) - if len(result.Items) > count { - result.Items = result.Items[:count] + if len(result.Items) > widget.settings.count { + result.Items = result.Items[:widget.settings.count] } for idx, item := range result.Items { @@ -151,12 +153,18 @@ func (widget *Widget) prev() { } func (widget *Widget) openBuild() { - sel := widget.selected - projectOwner := wtf.Config.UString("wtf.mods.rollbar.projectOwner", "") - projectName := wtf.Config.UString("wtf.mods.rollbar.projectName", "") - if sel >= 0 && widget.items != nil && sel < len(widget.items.Items) { + if widget.selected >= 0 && widget.items != nil && widget.selected < len(widget.items.Items) { item := &widget.items.Items[widget.selected] - wtf.OpenFile(fmt.Sprintf("https://rollbar.com/%s/%s/%s/%d", projectOwner, projectName, "items", item.ID)) + + wtf.OpenFile( + fmt.Sprintf( + "https://rollbar.com/%s/%s/%s/%d", + widget.settings.projectOwner, + widget.settings.projectName, + "items", + item.ID, + ), + ) } }