added channel typing events.
This commit is contained in:
parent
02e22d0196
commit
8e9cf13cc3
12
client.go
12
client.go
@ -30,6 +30,8 @@ type Client struct {
|
|||||||
OnChannelUpdateFunctions []func(channel_id, clear string, payload map[string]interface{})
|
OnChannelUpdateFunctions []func(channel_id, clear string, payload map[string]interface{})
|
||||||
OnChannelDeleteFunctions []func(channel_id string)
|
OnChannelDeleteFunctions []func(channel_id string)
|
||||||
OnUnknownEventFunctions []func(message string)
|
OnUnknownEventFunctions []func(message string)
|
||||||
|
OnChannelStartTypingFunctions []func(channel_id, user_id string)
|
||||||
|
OnChannelStopTypingFunctions []func(channel_id, user_id string)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Client cache struct.
|
// Client cache struct.
|
||||||
@ -89,6 +91,16 @@ func (c *Client) OnUnknownEvent(fn func(message string)) {
|
|||||||
c.OnUnknownEventFunctions = append(c.OnUnknownEventFunctions, fn)
|
c.OnUnknownEventFunctions = append(c.OnUnknownEventFunctions, fn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// On channel start typing will run when someone starts to type a message.
|
||||||
|
func (c *Client) OnChannelStartTyping(fn func(channel_id, user_id string)) {
|
||||||
|
c.OnChannelStartTypingFunctions = append(c.OnChannelStartTypingFunctions, fn)
|
||||||
|
}
|
||||||
|
|
||||||
|
// On channel stıp typing will run when someone stops the typing status.
|
||||||
|
func (c *Client) OnChannelStopTyping(fn func(channel_id, user_id string)) {
|
||||||
|
c.OnChannelStopTypingFunctions = append(c.OnChannelStopTypingFunctions, fn)
|
||||||
|
}
|
||||||
|
|
||||||
// Fetch a channel by Id.
|
// Fetch a channel by Id.
|
||||||
func (c *Client) FetchChannel(id string) (*Channel, error) {
|
func (c *Client) FetchChannel(id string) (*Channel, error) {
|
||||||
channel := &Channel{}
|
channel := &Channel{}
|
||||||
|
34
websocket.go
34
websocket.go
@ -179,8 +179,40 @@ func (c *Client) handleEvents(rawData *struct {
|
|||||||
for _, i := range c.OnChannelDeleteFunctions {
|
for _, i := range c.OnChannelDeleteFunctions {
|
||||||
i(data.ChannelId)
|
i(data.ChannelId)
|
||||||
}
|
}
|
||||||
|
} else if rawData.Type == "ChannelStartTyping" && c.OnChannelStartTypingFunctions != nil {
|
||||||
|
// Channel start typing event.
|
||||||
|
data := &struct {
|
||||||
|
ChannelId string `json:"id"`
|
||||||
|
UserId string `json:"user"`
|
||||||
|
}{}
|
||||||
|
|
||||||
|
err := json.Unmarshal([]byte(message), data)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Unexcepted Error: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, i := range c.OnChannelStartTypingFunctions {
|
||||||
|
i(data.ChannelId, data.UserId)
|
||||||
|
}
|
||||||
|
} else if rawData.Type == "ChannelStopTyping" && c.OnChannelStopTypingFunctions != nil {
|
||||||
|
// Channel stop typing event.
|
||||||
|
data := &struct {
|
||||||
|
ChannelId string `json:"id"`
|
||||||
|
UserId string `json:"user"`
|
||||||
|
}{}
|
||||||
|
|
||||||
|
err := json.Unmarshal([]byte(message), data)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Unexcepted Error: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, i := range c.OnChannelStopTypingFunctions {
|
||||||
|
i(data.ChannelId, data.UserId)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Unknown Event
|
// Unknown event.
|
||||||
if c.OnUnknownEventFunctions != nil {
|
if c.OnUnknownEventFunctions != nil {
|
||||||
for _, i := range c.OnUnknownEventFunctions {
|
for _, i := range c.OnUnknownEventFunctions {
|
||||||
i(message)
|
i(message)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user