effective_messaging 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f0eea64f40492ad73ee7e3228450bbafd9f5cfa0e199eb1c379c8df87dff49d3
4
- data.tar.gz: 8a0155aec3dcae16dd827eab67247a2118a14dca98d710d7c612bb0db607994b
3
+ metadata.gz: 84f3cb325386b6c35c631c57ab15eaa3775e892ace9128e082e57a258203008b
4
+ data.tar.gz: 3ccdcaf09dc41afd32fcd46a365ee4582fe8d06dac3efecbbd91b0e1f921982d
5
5
  SHA512:
6
- metadata.gz: bb4dfb952155bf4bd84b6bd0c97b51e579bc5536e93bd81bf8bb77dfca8852cdcb76b65d8a1b17b4bf8db63d19ea0e5d38052baf0369d79b3e76088ad6ba966e
7
- data.tar.gz: bbd5a31a860fa10313378f33a86cd0cfde1e7e86b166e7941a77fc8101df13e7feaf9d8c19bfb7ce06409a73ef06c0b568116238ceaa5a1f1317a82fed1c69d7
6
+ metadata.gz: 5cb621f111776ff55f8eb354b8d86006b77bc5bed042571b66b0f51e93df0bf10ccb47c35a6da8cd5af916128d69c943f0162e62c0e926eb63689fa316eda247
7
+ data.tar.gz: daae9d060cedaeb9895d808c281069ffcb565d9268c8c64ed346a6b68f30b24b45cd5524b76015a7cb25923708ae2b55205bf03293377e271253b7b5a28f58dd
@@ -0,0 +1,38 @@
1
+ # Mostly for the callbacks
2
+
3
+ module EffectiveMessagingParent
4
+ extend ActiveSupport::Concern
5
+
6
+ module Base
7
+ def effective_messaging_parent
8
+ include ::EffectiveMessagingParent
9
+ end
10
+ end
11
+
12
+ module ClassMethods
13
+ def effective_messaging_parent?; true; end
14
+ end
15
+
16
+ included do
17
+ has_many :chats, -> { Effective::Chat.sorted }, as: :parent, class_name: 'Effective::Chat', dependent: :nullify
18
+ accepts_nested_attributes_for :chats
19
+ end
20
+
21
+ def chat
22
+ chats.first
23
+ end
24
+
25
+ def build_chat
26
+ raise('to be implemented by parent')
27
+
28
+ # chat = chats.first || chats.build()
29
+ # chat_user = chat.build_chat_user(user: user)
30
+ # reviewers.each { |reviewer| chat.build_chat_user(user: reviewer.user) }
31
+ # chat
32
+ end
33
+
34
+ def create_chat
35
+ build_chat.tap { |chat| chat.save! }
36
+ end
37
+
38
+ end
@@ -86,8 +86,10 @@ module Effective
86
86
  chat_users.find { |cu| cu.user_id == user.id && cu.user_type == user.class.name }
87
87
  end
88
88
 
89
- def build_chat_user(user:)
90
- chat_user(user: user) || chat_users.build(user: user)
89
+ def build_chat_user(user:, anonymous_name: nil)
90
+ cu = chat_user(user: user) || chat_users.build(user: user)
91
+ cu.assign_attributes(anonymous_name: anonymous_name) if anonymous_name.present?
92
+ cu
91
93
  end
92
94
 
93
95
  # Always build
@@ -1,4 +1,4 @@
1
- = render 'layout' do
1
+ = render 'effective/chats/layout' do
2
2
  - chat_user = chat.chat_user(user: current_user)
3
3
 
4
4
  - # New message form
@@ -1,5 +1,4 @@
1
- = render 'layout' do
2
-
1
+ .effective-chat-message
3
2
  .card
4
3
  .card-header
5
4
  %strong= chat_message.name
@@ -1,10 +1,18 @@
1
+ - current_chat_user = chat.chat_user(user: current_user)
2
+ - chat_users_count = chat.chat_users.count
3
+
1
4
  %p
2
5
  - if chat.anonymous?
3
6
  = badges('anonymous')
4
7
 
5
8
  = succeed('.') do
6
9
  A chat with
7
- = pluralize(chat.chat_users.count, 'participants')
10
+
11
+ - if current_chat_user.present? && chat_users_count < 5
12
+ = (chat.chat_users - [current_chat_user]).map(&:name).to_sentence
13
+ - else
14
+ = pluralize(chat_users_count, 'participants')
15
+
8
16
  opened
9
17
  = time_ago_in_words(chat.created_at)
10
18
  ago
@@ -10,6 +10,7 @@ module EffectiveMessaging
10
10
  # Include acts_as_messaging concern and allow any ActiveRecord object to call it
11
11
  initializer 'effective_messaging.active_record' do |app|
12
12
  app.config.to_prepare do
13
+ ActiveRecord::Base.extend(EffectiveMessagingParent::Base)
13
14
  ActiveRecord::Base.extend(EffectiveMessagingUser::Base)
14
15
  end
15
16
  end
@@ -1,3 +1,3 @@
1
1
  module EffectiveMessaging
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '0.1.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_messaging
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-11 00:00:00.000000000 Z
11
+ date: 2023-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -229,6 +229,7 @@ files:
229
229
  - app/datatables/effective_chats_datatable.rb
230
230
  - app/helpers/effective_messaging_helper.rb
231
231
  - app/mailers/effective/messaging_mailer.rb
232
+ - app/models/concerns/effective_messaging_parent.rb
232
233
  - app/models/concerns/effective_messaging_user.rb
233
234
  - app/models/effective/chat.rb
234
235
  - app/models/effective/chat_message.rb