summaryrefslogtreecommitdiff
path: root/irc
diff options
context:
space:
mode:
authorHubert Hirtz <hubert@hirtzfr.eu>2020-08-15 16:57:59 +0200
committerHubert Hirtz <hubert@hirtzfr.eu>2020-08-15 16:57:59 +0200
commit3567b356faebfa7f71eaa929f09ed15afea1a22a (patch)
treeaeb58594021a5fd50ea3caf889bd0b7ea26ccc73 /irc
parenteditor: Handle UP and DOWN keys (diff)
Remove UserEvent and ChannelEvent
Diffstat (limited to 'irc')
-rw-r--r--irc/events.go53
-rw-r--r--irc/states.go92
2 files changed, 62 insertions, 83 deletions
diff --git a/irc/events.go b/irc/events.go
index b585915..194bc1c 100644
--- a/irc/events.go
+++ b/irc/events.go
@@ -1,7 +1,6 @@
package irc
import (
- "strings"
"time"
)
@@ -14,26 +13,6 @@ type RawMessageEvent struct {
type RegisteredEvent struct{}
-type UserEvent struct {
- Nick string
- User string
- Host string
-}
-
-func (u UserEvent) NickMapped() (nick string) {
- nick = strings.ToLower(u.Nick)
- return
-}
-
-type ChannelEvent struct {
- Channel string
-}
-
-func (c ChannelEvent) ChannelMapped() (channel string) {
- channel = strings.ToLower(c.Channel)
- return
-}
-
type SelfNickEvent struct {
FormerNick string
NewNick string
@@ -47,51 +26,51 @@ type UserNickEvent struct {
}
type SelfJoinEvent struct {
- ChannelEvent
+ Channel string
}
type UserJoinEvent struct {
- UserEvent
- ChannelEvent
- Time time.Time
+ Nick string
+ Channel string
+ Time time.Time
}
type SelfPartEvent struct {
- ChannelEvent
+ Channel string
}
type UserPartEvent struct {
- UserEvent
- ChannelEvent
- Time time.Time
+ Nick string
+ Channels []string
+ Time time.Time
}
type QueryMessageEvent struct {
- UserEvent
+ Nick string
Command string
Content string
Time time.Time
}
type ChannelMessageEvent struct {
- UserEvent
- ChannelEvent
+ Nick string
+ Channel string
Command string
Content string
Time time.Time
}
type QueryTypingEvent struct {
- UserEvent
+ Nick string
State int
Time time.Time
}
type ChannelTypingEvent struct {
- UserEvent
- ChannelEvent
- State int
- Time time.Time
+ Nick string
+ Channel string
+ State int
+ Time time.Time
}
type HistoryEvent struct {
diff --git a/irc/states.go b/irc/states.go
index 2e0edf9..56da0c3 100644
--- a/irc/states.go
+++ b/irc/states.go
@@ -68,20 +68,6 @@ const (
ConnQuit
)
-type User struct {
- Nick string
- AwayMsg string
-}
-
-type Channel struct {
- Name string
- Members map[string]string
- Topic string
- TopicWho string
- TopicTime time.Time
- Secret bool
-}
-
type action interface{}
type (
@@ -114,6 +100,20 @@ type (
}
)
+type User struct {
+ Nick string
+ AwayMsg string
+}
+
+type Channel struct {
+ Name string
+ Members map[string]string
+ Topic string
+ TopicWho string
+ TopicTime time.Time
+ Secret bool
+}
+
type SessionParams struct {
Nickname string
Username string
@@ -583,7 +583,6 @@ func (s *Session) handleInner(msg Message) (err error) {
nick, _, _ := FullMask(msg.Prefix)
lNick := strings.ToLower(nick)
channel := strings.ToLower(msg.Params[0])
- channelEv := ChannelEvent{Channel: msg.Params[0]}
if lNick == s.lNick {
s.channels[channel] = Channel{
@@ -602,20 +601,19 @@ func (s *Session) handleInner(msg Message) (err error) {
}
s.evts <- UserJoinEvent{
- ChannelEvent: channelEv,
- UserEvent: UserEvent{Nick: nick},
- Time: t,
+ Channel: msg.Params[0],
+ Nick: nick,
+ Time: t,
}
}
case "PART":
nick, _, _ := FullMask(msg.Prefix)
lNick := strings.ToLower(nick)
channel := strings.ToLower(msg.Params[0])
- channelEv := ChannelEvent{Channel: msg.Params[0]}
if lNick == s.lNick {
delete(s.channels, channel)
- s.evts <- SelfPartEvent{ChannelEvent: channelEv}
+ s.evts <- SelfPartEvent{Channel: msg.Params[0]}
} else if c, ok := s.channels[channel]; ok {
delete(c.Members, lNick)
@@ -625,9 +623,9 @@ func (s *Session) handleInner(msg Message) (err error) {
}
s.evts <- UserPartEvent{
- ChannelEvent: channelEv,
- UserEvent: UserEvent{Nick: nick},
- Time: t,
+ Channels: msg.Params[:1],
+ Nick: nick,
+ Time: t,
}
}
case "QUIT":
@@ -639,17 +637,19 @@ func (s *Session) handleInner(msg Message) (err error) {
t = time.Now()
}
+ var channels []string
+
for _, c := range s.channels {
if _, ok := c.Members[lNick]; !ok {
continue
}
+ channels = append(channels, c.Name)
+ }
- // TODO UserQuitEvent
- s.evts <- UserPartEvent{
- ChannelEvent: ChannelEvent{Channel: c.Name},
- UserEvent: UserEvent{Nick: nick},
- Time: t,
- }
+ s.evts <- UserPartEvent{
+ Channels: channels,
+ Nick: nick,
+ Time: t,
}
case rplNamreply:
channel := strings.ToLower(msg.Params[2])
@@ -669,7 +669,7 @@ func (s *Session) handleInner(msg Message) (err error) {
}
}
case rplEndofnames:
- s.evts <- SelfJoinEvent{ChannelEvent{Channel: msg.Params[1]}}
+ s.evts <- SelfJoinEvent{Channel: msg.Params[1]}
case rplTopic:
channel := strings.ToLower(msg.Params[1])
@@ -707,17 +707,17 @@ func (s *Session) handleInner(msg Message) (err error) {
if target == s.lNick {
// TAGMSG to self
s.evts <- QueryTypingEvent{
- UserEvent: UserEvent{Nick: nick},
- State: typing,
- Time: t,
+ Nick: nick,
+ State: typing,
+ Time: t,
}
} else if _, ok := s.channels[target]; ok {
// TAGMSG to channel
s.evts <- ChannelTypingEvent{
- UserEvent: UserEvent{Nick: nick},
- ChannelEvent: ChannelEvent{Channel: msg.Params[0]},
- State: typing,
- Time: t,
+ Nick: nick,
+ Channel: msg.Params[0],
+ State: typing,
+ Time: t,
}
}
case "BATCH":
@@ -788,19 +788,19 @@ func (s *Session) privmsgToEvent(msg Message) (ev Event) {
if !s.IsChannel(target) {
// PRIVMSG to self
ev = QueryMessageEvent{
- UserEvent: UserEvent{Nick: nick},
- Command: msg.Command,
- Content: msg.Params[1],
- Time: t,
+ Nick: nick,
+ Command: msg.Command,
+ Content: msg.Params[1],
+ Time: t,
}
} else if _, ok := s.channels[target]; ok {
// PRIVMSG to channel
ev = ChannelMessageEvent{
- UserEvent: UserEvent{Nick: nick},
- ChannelEvent: ChannelEvent{Channel: msg.Params[0]},
- Command: msg.Command,
- Content: msg.Params[1],
- Time: t,
+ Nick: nick,
+ Channel: msg.Params[0],
+ Command: msg.Command,
+ Content: msg.Params[1],
+ Time: t,
}
}