Browse Source

Renamed Event.Kill to Event.PreventDefault

master
Gisle Aune 6 years ago
parent
commit
659a2ce067
  1. 2
      client.go
  2. 19
      event.go
  3. 3
      handle.go
  4. 10
      handlers/input.go
  5. 4
      handlers/mroleplay.go

2
client.go

@ -548,7 +548,7 @@ func (client *Client) handleEventLoop() {
emit(event, client)
// Turn an unhandled input into a raw command.
if event.kind == "input" && !event.Killed() {
if event.kind == "input" && !event.preventedDefault {
client.SendQueued(strings.ToUpper(event.verb) + " " + event.Text)
}

19
event.go

@ -21,10 +21,10 @@ type Event struct {
Text string
Tags map[string]string
ctx context.Context
cancel context.CancelFunc
killed bool
hidden bool
ctx context.Context
cancel context.CancelFunc
preventedDefault bool
hidden bool
targets []Target
targetIds map[Target]string
@ -89,18 +89,13 @@ func (event *Event) Context() context.Context {
return event.ctx
}
// Kill stops propagation of the event. The context will be killed once
// PreventDefault stops propagation of the event. The context will be killed once
// the current event handler returns.
//
// A use case for this is to prevent the default input handler from firing
// on an already prcoessed input event.
func (event *Event) Kill() {
event.killed = true
}
// Killed returns true if Kill has been called.
func (event *Event) Killed() bool {
return event.killed
func (event *Event) PreventDefault() {
event.preventedDefault = true
}
// Hide will not stop propagation, but it will allow output handlers to know not to

3
handle.go

@ -17,9 +17,6 @@ func emit(event *Event, client *Client) {
eventHandler.mutex.RLock()
for _, handler := range eventHandler.handlers {
handler(event, client)
if event.killed {
break
}
}
eventHandler.mutex.RUnlock()
}

10
handlers/input.go

@ -12,7 +12,7 @@ func Input(event *irc.Event, client *irc.Client) {
// /msg sends an action to a target specified before the message.
case "input.msg":
{
event.Kill()
event.PreventDefault()
targetName, text := ircutil.ParseArgAndText(event.Text)
if targetName == "" || text == "" {
@ -30,7 +30,7 @@ func Input(event *irc.Event, client *irc.Client) {
// /text (or text without a command) sends a message to the target.
case "input.text":
{
event.Kill()
event.PreventDefault()
if event.Text == "" {
client.EmitNonBlocking(irc.NewErrorEvent("input", "Usage: /text <text...>"))
@ -53,7 +53,7 @@ func Input(event *irc.Event, client *irc.Client) {
// /me and /action sends a CTCP ACTION.
case "input.me", "input.action":
{
event.Kill()
event.PreventDefault()
if event.Text == "" {
client.EmitNonBlocking(irc.NewErrorEvent("input", "Usage: /me <text...>"))
@ -76,7 +76,7 @@ func Input(event *irc.Event, client *irc.Client) {
// /describe sends an action to a target specified before the message, like /msg.
case "input.describe":
{
event.Kill()
event.PreventDefault()
targetName, text := ircutil.ParseArgAndText(event.Text)
if targetName == "" || text == "" {
@ -94,7 +94,7 @@ func Input(event *irc.Event, client *irc.Client) {
// /m is a shorthand for /mode that targets the current channel
case "input.m":
{
event.Kill()
event.PreventDefault()
if event.Text == "" {
client.EmitNonBlocking(irc.NewErrorEvent("input", "Usage: /m <text...>"))

4
handlers/mroleplay.go

@ -60,7 +60,7 @@ func MRoleplay(event *irc.Event, client *irc.Client) {
client.SendQueuedf("%s %s %s :%s", npcCommand, channel.Name(), nick, cut)
}
event.Kill()
event.PreventDefault()
}
case "input.scenec":
{
@ -81,7 +81,7 @@ func MRoleplay(event *irc.Event, client *irc.Client) {
client.SendQueuedf("SCENE %s :%s", channel.Name(), cut)
}
event.Kill()
event.PreventDefault()
}
}
}
Loading…
Cancel
Save