Skip to content

Commit efee034

Browse files
authored
Initialize to full screen (#16)
* Highlight mentioned user with mixed case * Initialize height to size of terminal * Remove commented code * Tidy go.mod
1 parent 6bb4e6c commit efee034

File tree

6 files changed

+39
-23
lines changed

6 files changed

+39
-23
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@ require (
1313
github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2
1414
github.com/spf13/cobra v1.2.1
1515
golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914
16+
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b // indirect
1617
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
1718
)

go.sum

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV
4545
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
4646
github.com/atotto/clipboard v0.1.2 h1:YZCtFu5Ie8qX2VmVTBnrqLSiU9XOWwqNRmdT3gIQzbY=
4747
github.com/atotto/clipboard v0.1.2/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
48-
github.com/atye/ttchat v0.0.0-20210713012411-a1146ad9a397 h1:uJejCV1Mg7NDyVPfUDTKUo/RmHgj3PONxA5zo9Zh3Vc=
49-
github.com/atye/ttchat v0.0.0-20210713012411-a1146ad9a397/go.mod h1:venTexKBMRBkwk+Sw8iIXkk1qDKd8xOJUV6P0CIa0bU=
5048
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
5149
github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM=
5250
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
@@ -154,7 +152,6 @@ github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLe
154152
github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
155153
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
156154
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
157-
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
158155
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
159156
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
160157
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
@@ -439,11 +436,13 @@ golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7w
439436
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
440437
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
441438
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
439+
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
442440
golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71 h1:X/2sJAybVknnUnV7AD2HdT6rm2p5BP6eH2j+igduWgk=
443441
golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
444442
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
445-
golang.org/x/term v0.0.0-20210422114643-f5beecf764ed h1:Ei4bQjjpYUsS4efOUz+5Nz++IVkHk87n2zBA0NxBWc0=
446443
golang.org/x/term v0.0.0-20210422114643-f5beecf764ed/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
444+
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE=
445+
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
447446
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
448447
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
449448
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

internal/cmd/entrypoint.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,6 @@ ttchat --channel ludwig --lines 5
8282
errExit(ErrNoChannel)
8383
}
8484

85-
lines, err := cmd.Flags().GetInt("lines")
86-
if err != nil {
87-
errExit(err)
88-
}
89-
9085
token, err := cmd.Flags().GetString("token")
9186
if err != nil {
9287
errExit(err)
@@ -136,7 +131,7 @@ ttchat --channel ludwig --lines 5
136131
// Create IRC client and start
137132
ircClient := client.NewGempirClient(conf.Username, channel, accessToken)
138133
c := irc.NewIRCService(displayName, channel, ircClient)
139-
if tea.NewProgram(terminal.NewModel(lines, c), tea.WithAltScreen()).Start() != nil {
134+
if tea.NewProgram(terminal.NewModel(c), tea.WithAltScreen()).Start() != nil {
140135
errExit(err)
141136
}
142137
},
@@ -149,7 +144,6 @@ ttchat --channel ludwig --lines 5
149144
}
150145

151146
rootCmd.Flags().StringP("token", "t", "", `oauth token of the from "oauth:token" or "token"`)
152-
rootCmd.Flags().IntP("lines", "l", 20, "number of lines for viewing chat, increase to see more messages")
153147
return rootCmd
154148
}
155149

internal/irc/irc.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func (c IRCService) Publish(msg string) {
8787
func highlightUserMentions(text string, displayName string) string {
8888
texts := strings.Split(text, " ")
8989
for i, w := range texts {
90-
if strings.Contains(w, fmt.Sprintf("@%s", displayName)) {
90+
if strings.Contains(strings.ToLower(w), fmt.Sprintf("@%s", strings.ToLower(displayName))) {
9191
texts[i] = UserHighLightStyle.Render(w)
9292
}
9393
}

internal/irc/irc_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,16 @@ func TestGetMessageSource(t *testing.T) {
7373
lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color(DefaultNameColor)).Render("foo"),
7474
fmt.Sprintf("hi %s", UserHighLightStyle.Render("@user")),
7575
},
76+
{
77+
"incoming mention mix case",
78+
"User",
79+
types.PrivateMessage{
80+
Name: "foo",
81+
Text: "hi @user",
82+
},
83+
lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color(DefaultNameColor)).Render("foo"),
84+
fmt.Sprintf("hi %s", UserHighLightStyle.Render("@user")),
85+
},
7686
{
7787
"incoming is you",
7888
"user",

internal/terminal/terminal.go

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,16 @@ type Model struct {
3333
messages []types.Message
3434
ti textinput.Model
3535
t Twitch
36+
mode mode
3637
}
3738

39+
type mode int
40+
41+
const (
42+
Initialize mode = iota
43+
Run
44+
)
45+
3846
type noOpMessage struct{}
3947

4048
func (m noOpMessage) GetName() string {
@@ -53,21 +61,16 @@ func (m noOpMessage) FromMyself() bool {
5361
return false
5462
}
5563

56-
func NewModel(height int, t Twitch) Model {
64+
func NewModel(t Twitch) Model {
5765
ti := textinput.NewModel()
5866
ti.Placeholder = "Send a message"
5967
ti.Focus()
6068

61-
var m []types.Message
62-
for i := 0; i < height; i++ {
63-
m = append(m, types.Message(noOpMessage{}))
64-
}
65-
6669
return Model{
67-
in: t.GetMessageSource(),
68-
messages: m,
69-
ti: ti,
70-
t: t,
70+
in: t.GetMessageSource(),
71+
mode: Initialize,
72+
ti: ti,
73+
t: t,
7174
}
7275
}
7376

@@ -102,7 +105,16 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
102105
}
103106

104107
case tea.WindowSizeMsg:
105-
m.ti.Width = msg.Width
108+
switch m.mode {
109+
case Initialize:
110+
msgs := make([]types.Message, msg.Height/2)
111+
for i := 0; i < msg.Height/2; i++ {
112+
msgs[i] = types.Message(noOpMessage{})
113+
}
114+
m.messages = msgs
115+
m.mode = Run
116+
default:
117+
}
106118
return m, listenForMessages(m.in)
107119

108120
case types.Message:

0 commit comments

Comments
 (0)