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) 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) 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 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...") l.logger.Debug("Retrieve channel balance...")
clt, err := l.Client(ctx) clt, err := l.Client(ctx)
@ -150,7 +150,7 @@ func (l Backend) GetChannelBalance(ctx context.Context) (*models.ChannelBalance,
return nil, errors.WithStack(err) return nil, errors.WithStack(err)
} }
balance := protoToChannelBalance(resp) balance := protoToChannelsBalance(resp)
l.logger.Debug("Channel balance retrieved", logging.Object("balance", balance)) 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 { func protoToChannelsBalance(w *lnrpc.ChannelBalanceResponse) *models.ChannelsBalance {
return &models.ChannelBalance{ return &models.ChannelsBalance{
PendingOpenBalance: w.GetPendingOpenBalance(), PendingOpenBalance: w.GetPendingOpenBalance(),
Balance: w.GetBalance(), Balance: w.GetBalance(),
} }

@ -46,8 +46,8 @@ func (b *Backend) GetWalletBalance(ctx context.Context) (*models.WalletBalance,
return &models.WalletBalance{}, nil return &models.WalletBalance{}, nil
} }
func (b *Backend) GetChannelBalance(ctx context.Context) (*models.ChannelBalance, error) { func (b *Backend) GetChannelsBalance(ctx context.Context) (*models.ChannelsBalance, error) {
return &models.ChannelBalance{}, nil return &models.ChannelsBalance{}, nil
} }
func (b *Backend) ListChannels(ctx context.Context, opt ...options.Channel) ([]*models.Channel, error) { 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" import "github.com/edouardparis/lntop/logging"
type ChannelBalance struct { type ChannelsBalance struct {
Balance int64 Balance int64
PendingOpenBalance 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("balance", m.Balance)
enc.AddInt64("pending_open_balance", m.PendingOpenBalance) enc.AddInt64("pending_open_balance", m.PendingOpenBalance)

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

@ -8,19 +8,27 @@ import (
) )
type Models struct { type Models struct {
App *app.App App *app.App
Info *Info Info *Info
Channels *Channels Channels *Channels
WalletBalance *WalletBalance
ChannelsBalance *ChannelsBalance
} }
func New(app *app.App) *Models { func New(app *app.App) *Models {
return &Models{ return &Models{
App: app, App: app,
Info: &Info{}, Info: &Info{},
Channels: &Channels{}, Channels: &Channels{},
WalletBalance: &WalletBalance{},
ChannelsBalance: &ChannelsBalance{},
} }
} }
type Info struct {
*models.Info
}
func (m *Models) RefreshInfo(ctx context.Context) error { func (m *Models) RefreshInfo(ctx context.Context) error {
info, err := m.App.Network.Info(ctx) info, err := m.App.Network.Info(ctx)
if err != nil { if err != nil {
@ -30,6 +38,10 @@ func (m *Models) RefreshInfo(ctx context.Context) error {
return nil return nil
} }
type Channels struct {
Items []*models.Channel
}
func (m *Models) RefreshChannels(ctx context.Context) error { func (m *Models) RefreshChannels(ctx context.Context) error {
channels, err := m.App.Network.ListChannels(ctx) channels, err := m.App.Network.ListChannels(ctx)
if err != nil { if err != nil {
@ -39,10 +51,28 @@ func (m *Models) RefreshChannels(ctx context.Context) error {
return nil return nil
} }
type Info struct { type WalletBalance struct {
*models.Info *models.WalletBalance
} }
type Channels struct { func (m *Models) RefreshWalletBalance(ctx context.Context) error {
Items []*models.Channel 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 g.Cursor = true
ctrl := newController(app) ctrl := newController(app)
g.SetManagerFunc(ctrl.layout) err = ctrl.SetModels(ctx)
err = ctrl.setKeyBinding(g)
if err != nil { if err != nil {
return err return err
} }
err = ctrl.Update(ctx) g.SetManagerFunc(ctrl.layout)
err = ctrl.setKeyBinding(g)
if err != nil { if err != nil {
return err return err
} }

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

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

Loading…
Cancel
Save