refac summary

pull/1/head
Edouard Paris 5 years ago
parent 2b68624a33
commit 68ec948558

@ -18,7 +18,7 @@ type Backend interface {
GetWalletBalance(context.Context) (*models.WalletBalance, error)
GetChannelBalance(context.Context) (*models.ChannelBalance, error)
GetChannelsBalance(context.Context) (*models.ChannelsBalance, error)
ListChannels(context.Context, ...options.Channel) ([]*models.Channel, error)

@ -135,7 +135,7 @@ func (l Backend) GetWalletBalance(ctx context.Context) (*models.WalletBalance, e
return balance, nil
}
func (l Backend) GetChannelBalance(ctx context.Context) (*models.ChannelBalance, error) {
func (l Backend) GetChannelsBalance(ctx context.Context) (*models.ChannelsBalance, error) {
l.logger.Debug("Retrieve channel balance...")
clt, err := l.Client(ctx)
@ -150,7 +150,7 @@ func (l Backend) GetChannelBalance(ctx context.Context) (*models.ChannelBalance,
return nil, errors.WithStack(err)
}
balance := protoToChannelBalance(resp)
balance := protoToChannelsBalance(resp)
l.logger.Debug("Channel balance retrieved", logging.Object("balance", balance))

@ -14,8 +14,8 @@ func protoToWalletBalance(w *lnrpc.WalletBalanceResponse) *models.WalletBalance
}
}
func protoToChannelBalance(w *lnrpc.ChannelBalanceResponse) *models.ChannelBalance {
return &models.ChannelBalance{
func protoToChannelsBalance(w *lnrpc.ChannelBalanceResponse) *models.ChannelsBalance {
return &models.ChannelsBalance{
PendingOpenBalance: w.GetPendingOpenBalance(),
Balance: w.GetBalance(),
}

@ -46,8 +46,8 @@ func (b *Backend) GetWalletBalance(ctx context.Context) (*models.WalletBalance,
return &models.WalletBalance{}, nil
}
func (b *Backend) GetChannelBalance(ctx context.Context) (*models.ChannelBalance, error) {
return &models.ChannelBalance{}, nil
func (b *Backend) GetChannelsBalance(ctx context.Context) (*models.ChannelsBalance, error) {
return &models.ChannelsBalance{}, nil
}
func (b *Backend) ListChannels(ctx context.Context, opt ...options.Channel) ([]*models.Channel, error) {

@ -2,12 +2,12 @@ package models
import "github.com/edouardparis/lntop/logging"
type ChannelBalance struct {
type ChannelsBalance struct {
Balance int64
PendingOpenBalance int64
}
func (m ChannelBalance) MarshalLogObject(enc logging.ObjectEncoder) error {
func (m ChannelsBalance) MarshalLogObject(enc logging.ObjectEncoder) error {
enc.AddInt64("balance", m.Balance)
enc.AddInt64("pending_open_balance", m.PendingOpenBalance)

@ -46,17 +46,22 @@ func cursorUp(g *gocui.Gui, v *gocui.View) error {
return nil
}
func (c *controller) Update(ctx context.Context) error {
func (c *controller) SetModels(ctx context.Context) error {
err := c.models.RefreshInfo(ctx)
if err != nil {
return err
}
// c.views.Summary.UpdateChannelsStats(
// info.NumPendingChannels,
// info.NumActiveChannels,
// info.NumInactiveChannels,
//)
err = c.models.RefreshWalletBalance(ctx)
if err != nil {
return err
}
err = c.models.RefreshChannelsBalance(ctx)
if err != nil {
return err
}
return c.models.RefreshChannels(ctx)
}

@ -8,19 +8,27 @@ import (
)
type Models struct {
App *app.App
Info *Info
Channels *Channels
App *app.App
Info *Info
Channels *Channels
WalletBalance *WalletBalance
ChannelsBalance *ChannelsBalance
}
func New(app *app.App) *Models {
return &Models{
App: app,
Info: &Info{},
Channels: &Channels{},
App: app,
Info: &Info{},
Channels: &Channels{},
WalletBalance: &WalletBalance{},
ChannelsBalance: &ChannelsBalance{},
}
}
type Info struct {
*models.Info
}
func (m *Models) RefreshInfo(ctx context.Context) error {
info, err := m.App.Network.Info(ctx)
if err != nil {
@ -30,6 +38,10 @@ func (m *Models) RefreshInfo(ctx context.Context) error {
return nil
}
type Channels struct {
Items []*models.Channel
}
func (m *Models) RefreshChannels(ctx context.Context) error {
channels, err := m.App.Network.ListChannels(ctx)
if err != nil {
@ -39,10 +51,28 @@ func (m *Models) RefreshChannels(ctx context.Context) error {
return nil
}
type Info struct {
*models.Info
type WalletBalance struct {
*models.WalletBalance
}
type Channels struct {
Items []*models.Channel
func (m *Models) RefreshWalletBalance(ctx context.Context) error {
balance, err := m.App.Network.GetWalletBalance(ctx)
if err != nil {
return err
}
*m.WalletBalance = WalletBalance{balance}
return nil
}
type ChannelsBalance struct {
*models.ChannelsBalance
}
func (m *Models) RefreshChannelsBalance(ctx context.Context) error {
balance, err := m.App.Network.GetChannelsBalance(ctx)
if err != nil {
return err
}
*m.ChannelsBalance = ChannelsBalance{balance}
return nil
}

@ -17,14 +17,14 @@ func Run(ctx context.Context, app *app.App) error {
g.Cursor = true
ctrl := newController(app)
g.SetManagerFunc(ctrl.layout)
err = ctrl.setKeyBinding(g)
err = ctrl.SetModels(ctx)
if err != nil {
return err
}
err = ctrl.Update(ctx)
g.SetManagerFunc(ctrl.layout)
err = ctrl.setKeyBinding(g)
if err != nil {
return err
}

@ -14,14 +14,16 @@ const (
)
type Summary struct {
left *gocui.View
right *gocui.View
info *models.Info
left *gocui.View
right *gocui.View
info *models.Info
channelsBalance *models.ChannelsBalance
walletBalance *models.WalletBalance
}
func (s *Summary) Set(g *gocui.Gui, x0, y0, x1, y1 int) error {
var err error
s.left, err = g.SetView(SUMMARY_LEFT, x0, y0, x0+40, y1)
s.left, err = g.SetView(SUMMARY_LEFT, x0, y0, x1/2, y1)
if err != nil {
if err != gocui.ErrUnknownView {
return err
@ -29,7 +31,7 @@ func (s *Summary) Set(g *gocui.Gui, x0, y0, x1, y1 int) error {
}
s.left.Frame = false
s.right, err = g.SetView(SUMMARY_RIGHT, x0+40, y0, x1, y1)
s.right, err = g.SetView(SUMMARY_RIGHT, x1/2, y0, x1, y1)
if err != nil {
if err != gocui.ErrUnknownView {
return err
@ -43,15 +45,33 @@ func (s *Summary) Set(g *gocui.Gui, x0, y0, x1, y1 int) error {
func (s *Summary) display() {
s.left.Clear()
fmt.Fprintln(s.left, color.Green("[ Channels ]"))
fmt.Fprintln(s.left, fmt.Sprintf("%d %s %d %s %d %s",
s.info.NumPendingChannels, color.Yellow("pending"),
fmt.Fprintln(s.left, fmt.Sprintf("%s %d (%s|%s)",
color.Cyan("balance:"),
s.channelsBalance.Balance+s.channelsBalance.PendingOpenBalance,
color.Green(fmt.Sprintf("%d", s.channelsBalance.Balance)),
color.Yellow(fmt.Sprintf("%d", s.channelsBalance.PendingOpenBalance)),
))
fmt.Fprintln(s.left, fmt.Sprintf("%s %d %s %d %s %d %s",
color.Cyan("state :"),
s.info.NumActiveChannels, color.Green("active"),
s.info.NumPendingChannels, color.Yellow("pending"),
s.info.NumInactiveChannels, color.Red("inactive"),
))
s.right.Clear()
fmt.Fprintln(s.right, color.Green("[ Wallet ]"))
fmt.Fprintln(s.right, fmt.Sprintf("%s %d (%s|%s)",
color.Cyan("balance:"),
s.walletBalance.TotalBalance,
color.Green(fmt.Sprintf("%d", s.walletBalance.ConfirmedBalance)),
color.Yellow(fmt.Sprintf("%d", s.walletBalance.UnconfirmedBalance)),
))
}
func NewSummary(info *models.Info) *Summary {
return &Summary{info: info}
func NewSummary(info *models.Info, channelsBalance *models.ChannelsBalance, walletBalance *models.WalletBalance) *Summary {
return &Summary{
info: info,
channelsBalance: channelsBalance,
walletBalance: walletBalance,
}
}

@ -35,7 +35,7 @@ func New(m *models.Models) *Views {
return &Views{
Header: NewHeader(m.Info),
Footer: NewFooter(),
Summary: NewSummary(m.Info),
Summary: NewSummary(m.Info, m.ChannelsBalance, m.WalletBalance),
Channels: NewChannels(m.Channels),
}
}

Loading…
Cancel
Save