Module: SimpleChat

Defined in:
lib/simple_chat/configuration.rb,
lib/simple_chat.rb,
lib/simple_chat/engine.rb,
lib/simple_chat/version.rb,
app/models/simple_chat/message.rb,
app/models/simple_chat/chat_room.rb,
app/models/simple_chat/chat_member.rb,
app/jobs/simple_chat/application_job.rb,
app/helpers/simple_chat/messages_helper.rb,
app/helpers/simple_chat/chat_rooms_helper.rb,
app/models/simple_chat/application_record.rb,
app/helpers/simple_chat/application_helper.rb,
app/mailers/simple_chat/application_mailer.rb,
lib/generators/simple_chat/install_generator.rb,
app/controllers/simple_chat/messages_controller.rb,
app/controllers/simple_chat/chat_rooms_controller.rb,
app/controllers/simple_chat/application_controller.rb,
app/controllers/simple_chat/chat_members_controller.rb

Overview

Usage in Rails application config/initializers/simple_chat.rb) SimpleChat.configure do |config|

config.chat_user_model = 'User'

end

Defined Under Namespace

Modules: ApplicationHelper, ChatRoomsHelper, MessagesHelper Classes: ApplicationController, ApplicationJob, ApplicationMailer, ApplicationRecord, ChatMember, ChatMembersController, ChatRoom, ChatRoomsController, Configuration, Engine, InstallGenerator, Message, MessagesController

Constant Summary collapse

VERSION =
"0.1.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject

Access the configuration object



10
11
12
# File 'lib/simple_chat.rb', line 10

def configuration
  @configuration ||= Configuration.new
end

Class Method Details

.configure {|configuration| ... } ⇒ Object

The block handler

Yields:



15
16
17
# File 'lib/simple_chat.rb', line 15

def configure
  yield(configuration)
end

.create_chat(*users, title: nil) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/simple_chat.rb', line 19

def create_chat(*users, title: nil)
  users = users.flatten.compact
  if title.nil?
    names = users.map { |u| u.respond_to?(:name) ? u.name : u.id }
    if names.size > 2
      title = "Chat between #{names[0...-1].join(", ")} and #{names.last}"
    elsif names.size == 2
      title = "Chat between #{names.first} and #{names.last}"
    elsif names.size == 1
      title = "Chat for #{names.first}"
    else
      title = "Empty Chat"
    end
  end

  ChatRoom.transaction do
    chat_room = ChatRoom.create!(title: title)
    users.each { |user| chat_room.chat_members.create!(user: user) }

    chat_room
  end
end