123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- class Sessions::Event::ChatBase < Sessions::Event::Base
- def initialize(params)
- super(params)
- return if !@is_web_socket
- ActiveRecord::Base.establish_connection
- end
- def destroy
- return if !@is_web_socket
- ActiveRecord::Base.remove_connection
- end
- def run
- # check if feature is enabled
- return if Setting.get('chat')
- {
- event: 'chat_error',
- data: {
- state: 'chat_disabled',
- },
- }
- end
- def current_chat_session
- Chat::Session.find_by(session_id: @payload['data']['session_id'])
- end
- def check_chat_session_exists
- if !@payload['data'] || !@payload['data']['session_id']
- error = {
- event: 'chat_error',
- data: {
- state: 'Need session_id.',
- },
- }
- Sessions.send(@client_id, error)
- return
- end
- return true if current_chat_session
- error = {
- event: 'chat_error',
- data: {
- state: "No such session id #{@payload['data']['session_id']}",
- },
- }
- Sessions.send(@client_id, error)
- false
- end
- def current_chat
- Chat.find_by(id: @payload['data']['chat_id'])
- end
- def check_chat_exists
- chat = current_chat
- return true if chat
- error = {
- event: 'chat_error',
- data: {
- state: 'no_such_chat',
- },
- }
- Sessions.send(@client_id, error)
- false
- end
- end
|