6
6
7
7
"github.com/fatih/color"
8
8
pw "github.com/jedib0t/go-pretty/v6/progress"
9
+ "github.com/mattn/go-runewidth"
9
10
10
11
"github.com/iyear/tdl/pkg/forwarder"
11
12
"github.com/iyear/tdl/pkg/prog"
@@ -15,12 +16,14 @@ import (
15
16
type progress struct {
16
17
pw pw.Writer
17
18
trackers map [[3 ]int64 ]* pw.Tracker
19
+ meta map [int64 ]string
18
20
}
19
21
20
22
func newProgress (p pw.Writer ) * progress {
21
23
return & progress {
22
24
pw : p ,
23
25
trackers : make (map [[3 ]int64 ]* pw.Tracker ),
26
+ meta : make (map [int64 ]string ),
24
27
}
25
28
}
26
29
@@ -49,7 +52,7 @@ func (p *progress) OnDone(meta *forwarder.ProgressMeta, err error) {
49
52
}
50
53
51
54
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 ()))
53
56
tracker .MarkAsErrored ()
54
57
return
55
58
}
@@ -65,11 +68,22 @@ func (p *progress) tuple(meta *forwarder.ProgressMeta) [3]int64 {
65
68
func (p * progress ) processMessage (meta * forwarder.ProgressMeta , clone bool ) string {
66
69
b := & strings.Builder {}
67
70
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 ))
70
72
if clone {
71
73
b .WriteString (" [clone]" )
72
74
}
73
75
74
76
return b .String ()
75
77
}
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