Skip to content

Commit b0ac970

Browse files
committed
feat(forward): responsive tracker message
1 parent 2d08bc8 commit b0ac970

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

app/forward/progress.go

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
"github.com/fatih/color"
88
pw "github.com/jedib0t/go-pretty/v6/progress"
9+
"github.com/mattn/go-runewidth"
910

1011
"github.com/iyear/tdl/pkg/forwarder"
1112
"github.com/iyear/tdl/pkg/prog"
@@ -15,12 +16,14 @@ import (
1516
type progress struct {
1617
pw pw.Writer
1718
trackers map[[3]int64]*pw.Tracker
19+
meta map[int64]string
1820
}
1921

2022
func newProgress(p pw.Writer) *progress {
2123
return &progress{
2224
pw: p,
2325
trackers: make(map[[3]int64]*pw.Tracker),
26+
meta: make(map[int64]string),
2427
}
2528
}
2629

@@ -49,7 +52,7 @@ func (p *progress) OnDone(meta *forwarder.ProgressMeta, err error) {
4952
}
5053

5154
if err != nil {
52-
p.pw.Log(color.RedString("%d-%d error: %s", meta.From.ID(), meta.Msg.ID, err.Error()))
55+
p.pw.Log(color.RedString("%s error: %s", p.metaString(meta), err.Error()))
5356
tracker.MarkAsErrored()
5457
return
5558
}
@@ -65,11 +68,22 @@ func (p *progress) tuple(meta *forwarder.ProgressMeta) [3]int64 {
6568
func (p *progress) processMessage(meta *forwarder.ProgressMeta, clone bool) string {
6669
b := &strings.Builder{}
6770

68-
// TODO(iyear): display visible name which should be cut to 20 chars
69-
b.WriteString(fmt.Sprintf("%d-%d-%d", meta.From.ID(), meta.Msg.ID, meta.To.ID()))
71+
b.WriteString(p.metaString(meta))
7072
if clone {
7173
b.WriteString(" [clone]")
7274
}
7375

7476
return b.String()
7577
}
78+
79+
func (p *progress) metaString(meta *forwarder.ProgressMeta) string {
80+
// TODO(iyear): better responsive name
81+
if _, ok := p.meta[meta.From.ID()]; !ok {
82+
p.meta[meta.From.ID()] = runewidth.Truncate(meta.From.VisibleName(), 15, "...")
83+
}
84+
if _, ok := p.meta[meta.To.ID()]; !ok {
85+
p.meta[meta.To.ID()] = runewidth.Truncate(meta.To.VisibleName(), 15, "...")
86+
}
87+
88+
return fmt.Sprintf("%s(%d):%d -> %s(%d)", p.meta[meta.From.ID()], meta.From.ID(), meta.Msg.ID, p.meta[meta.To.ID()], meta.To.ID())
89+
}

0 commit comments

Comments
 (0)