client: Add GetID() function (#28)

Makes it a bit less verbose to check if an event originated from once
own client. While at it the existing code was modified accordingly.
This commit is contained in:
nmeum 2018-12-10 21:08:53 +01:00 committed by Liam Stanley
parent ec512cad4f
commit 514d004b74
3 changed files with 10 additions and 4 deletions

@ -169,7 +169,7 @@ func handleJOIN(c *Client, e Event) {
} }
c.state.Unlock() c.state.Unlock()
if e.Source.ID() == ToRFC1459(c.GetNick()) { if e.Source.ID() == c.GetID() {
// If it's us, don't just add our user to the list. Run a WHO which // If it's us, don't just add our user to the list. Run a WHO which
// will tell us who exactly is in the entire channel. // will tell us who exactly is in the entire channel.
c.Send(&Event{Command: WHO, Params: []string{channelName, "%tacuhnr,1"}}) c.Send(&Event{Command: WHO, Params: []string{channelName, "%tacuhnr,1"}})
@ -209,7 +209,7 @@ func handlePART(c *Client, e Event) {
defer c.state.notify(c, UPDATE_STATE) defer c.state.notify(c, UPDATE_STATE)
if e.Source.ID() == ToRFC1459(c.GetNick()) { if e.Source.ID() == c.GetID() {
c.state.Lock() c.state.Lock()
c.state.deleteChannel(channel) c.state.deleteChannel(channel)
c.state.Unlock() c.state.Unlock()
@ -341,7 +341,7 @@ func handleQUIT(c *Client, e Event) {
return return
} }
if e.Source.ID() == ToRFC1459(c.GetNick()) { if e.Source.ID() == c.GetID() {
return return
} }

@ -436,6 +436,12 @@ func (c *Client) GetNick() string {
return c.state.nick return c.state.nick
} }
// Returns an RFC1459 compliant version of the current nickname. Panics if
// tracking is disabled.
func (c *Client) GetID() string {
return ToRFC1459(c.GetNick())
}
// GetIdent returns the current ident of the active connection. Panics if // GetIdent returns the current ident of the active connection. Panics if
// tracking is disabled. May be empty, as this is obtained from when we join // tracking is disabled. May be empty, as this is obtained from when we join
// a channel, as there is no other more efficient method to return this info. // a channel, as there is no other more efficient method to return this info.

@ -376,7 +376,7 @@ func (c *Client) readLoop(ctx context.Context, errs chan error, wg *sync.WaitGro
// Check if it's an echo-message. // Check if it's an echo-message.
if !c.Config.disableTracking { if !c.Config.disableTracking {
event.Echo = (event.Command == PRIVMSG || event.Command == NOTICE) && event.Echo = (event.Command == PRIVMSG || event.Command == NOTICE) &&
event.Source != nil && event.Source.ID() == ToRFC1459(c.GetNick()) event.Source != nil && event.Source.ID() == c.GetID()
} }
c.rx <- event c.rx <- event