module ActiveAdmin::Chat::Extensions::Application
Public Instance Methods
active_conversation()
click to toggle source
# File lib/active_admin/chat/extensions/application.rb, line 35 def active_conversation @active_conversation ||= ActiveAdmin::Chat.conversation_klass.find_by( id: params[:id] ) end
conversations()
click to toggle source
# File lib/active_admin/chat/extensions/application.rb, line 41 def conversations @conversations ||= ActiveAdmin::Chat.conversation_klass .includes(ActiveAdmin::Chat.user_relation_name) end
create()
click to toggle source
# File lib/active_admin/chat/extensions/application.rb, line 26 def create conversation = ActiveAdmin::Chat.conversation_klass .find_or_create_by!( "#{user_relation_name_id}": params[:"#{user_relation_name_id}"] ) redirect_to action: 'show', id: conversation end
messages()
click to toggle source
# File lib/active_admin/chat/extensions/application.rb, line 46 def messages return [] unless active_conversation page_messages = active_conversation.public_send( ActiveAdmin::Chat.message_relation_name.pluralize ).includes(:sender).order(created_at: :desc) if params[:created_at].present? page_messages = page_messages.where('created_at < ?', DateTime.parse(params[:created_at])) end page_messages.limit(ActiveAdmin::Chat.messages_per_page).reverse end
register_chat(name, options = {}, &block)
click to toggle source
# File lib/active_admin/chat/extensions/application.rb, line 5 def register_chat(name, options = {}, &block) setup_page_configs(name, options[:namespace]) register_page name, options do content do render 'active_admin/chat/chat' end controller do layout 'active_admin', only: :show helper_method :messages, :active_conversation, :conversations def show respond_to do |format| format.html { render 'active_admin/chat/show' } format.json do render json: ActiveAdmin::Chat::MessagePresenter.all(messages) end end end def create conversation = ActiveAdmin::Chat.conversation_klass .find_or_create_by!( "#{user_relation_name_id}": params[:"#{user_relation_name_id}"] ) redirect_to action: 'show', id: conversation end def active_conversation @active_conversation ||= ActiveAdmin::Chat.conversation_klass.find_by( id: params[:id] ) end def conversations @conversations ||= ActiveAdmin::Chat.conversation_klass .includes(ActiveAdmin::Chat.user_relation_name) end def messages return [] unless active_conversation page_messages = active_conversation.public_send( ActiveAdmin::Chat.message_relation_name.pluralize ).includes(:sender).order(created_at: :desc) if params[:created_at].present? page_messages = page_messages.where('created_at < ?', DateTime.parse(params[:created_at])) end page_messages.limit(ActiveAdmin::Chat.messages_per_page).reverse end private def user_relation_name_id "#{ActiveAdmin::Chat.user_relation_name}_id" end end # customize default chat instance_eval(&block) end end
show()
click to toggle source
# File lib/active_admin/chat/extensions/application.rb, line 17 def show respond_to do |format| format.html { render 'active_admin/chat/show' } format.json do render json: ActiveAdmin::Chat::MessagePresenter.all(messages) end end end
user_relation_name_id()
click to toggle source
# File lib/active_admin/chat/extensions/application.rb, line 62 def user_relation_name_id "#{ActiveAdmin::Chat.user_relation_name}_id" end
Private Instance Methods
setup_page_configs(page_name, namespace)
click to toggle source
# File lib/active_admin/chat/extensions/application.rb, line 74 def setup_page_configs(page_name, namespace) ActiveAdmin::Chat.setup do |config| config.page_name = page_name.downcase config.namespace = namespace.downcase if namespace end end