github.com/glide-im/glide@v1.6.0/internal/action_handler/internal_action.go (about) 1 package action_handler 2 3 import ( 4 "github.com/glide-im/glide/config" 5 "github.com/glide-im/glide/internal/world_channel" 6 "github.com/glide-im/glide/pkg/gate" 7 "github.com/glide-im/glide/pkg/logger" 8 "github.com/glide-im/glide/pkg/messages" 9 "github.com/glide-im/glide/pkg/messaging" 10 "time" 11 ) 12 13 type InternalActionHandler struct { 14 } 15 16 func (o *InternalActionHandler) Handle(h *messaging.MessageInterfaceImpl, cliInfo *gate.Info, m *messages.GlideMessage) bool { 17 if m.GetAction().IsInternal() { 18 if !cliInfo.ID.IsTemp() { 19 20 switch m.GetAction() { 21 case messages.ActionInternalOffline: 22 go world_channel.OnUserOffline(gate.ID(m.Data.String())) 23 case messages.ActionInternalOnline: 24 go func() { 25 defer func() { 26 err, ok := recover().(error) 27 if err != nil && ok { 28 logger.ErrE("push offline message error", err) 29 } 30 }() 31 go func() { 32 time.Sleep(time.Second * 1) 33 world_channel.OnUserOnline(gate.ID(m.Data.String())) 34 }() 35 36 if config.Common.StoreOfflineMessage { 37 // message_handler.PushOfflineMessage(h, cliInfo.ID.UID()) 38 } 39 }() 40 } 41 } 42 return true 43 } 44 return false 45 }