messaged 0.1.0 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +34 -4
- data/app/controllers/messaged/application_controller.rb +1 -1
- data/app/controllers/messaged/messages_controller.rb +10 -12
- data/app/controllers/messaged/rooms_controller.rb +62 -0
- data/app/models/messaged/message.rb +6 -7
- data/app/models/messaged/room.rb +10 -4
- data/config/locales/en.yml +2 -0
- data/config/routes.rb +1 -0
- data/db/migrate/20221001034722_create_messaged.rb +15 -12
- data/lib/generators/messaged/install/templates/initializer.rb +1 -1
- data/lib/generators/messaged/views/templates/messages/_form.html.erb +2 -2
- data/lib/generators/messaged/views/templates/messages/index.html.erb +1 -1
- data/lib/generators/messaged/views/templates/rooms/_form.html.erb +8 -0
- data/lib/generators/messaged/views/templates/rooms/_room.html.erb +28 -0
- data/lib/generators/messaged/views/templates/rooms/create.turbostream.erb +2 -0
- data/lib/generators/messaged/views/templates/rooms/edit.html.erb +1 -0
- data/lib/generators/messaged/views/templates/rooms/index.html.erb +14 -0
- data/lib/generators/messaged/views/templates/rooms/new.html.erb +1 -0
- data/lib/generators/messaged/views/templates/rooms/show.html.erb +1 -0
- data/lib/generators/messaged/views/views_generator.rb +31 -1
- data/lib/messaged/engine.rb +0 -4
- data/lib/messaged/version.rb +1 -1
- metadata +16 -11
- data/app/assets/config/messaged_manifest.js +0 -1
- data/app/assets/stylesheets/messaged/application.css +0 -15
- data/app/views/layouts/messaged/application.html.erb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83dbe2b802b9185d2eca5133b20a91dcb79d1fc7e4f07d580a80432934ad58e5
|
4
|
+
data.tar.gz: 3d701585998d2d0f07add3122bc78e8ab40366bd880b9f03e4170b84b901433d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e6d9b57b7e4961d1bec9c3c4022b575a5dde1e10703ddc37e83e050e93e094534b144563ea6addc064c4d314dfdda6baacbb09d702185f7da5c3be217f3b022
|
7
|
+
data.tar.gz: 7dfb55ac8c374e6fdd94c4f1bf939fb7c0245a06e96d2f89fc23e25022e36ceb08ea5ebe8884758bea331b79cd64492b4c468b8546161bfe235f2724e803245e
|
data/README.md
CHANGED
@@ -26,6 +26,15 @@ rails generate messaged:install
|
|
26
26
|
rails messaged:install:migrations
|
27
27
|
```
|
28
28
|
|
29
|
+
### Importmap
|
30
|
+
|
31
|
+
If you do not yet have importmap-rails added to your application, be sure to add `config/importmap.rb`:
|
32
|
+
```ruby
|
33
|
+
# config/importmap.rb
|
34
|
+
pin "application", preload: true
|
35
|
+
pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
|
36
|
+
```
|
37
|
+
|
29
38
|
## Usage
|
30
39
|
Messages broadcast to the DOM element id `messages`
|
31
40
|
```html
|
@@ -36,6 +45,24 @@ To get started with a basic HTML structure, run in your terminal: `rails generat
|
|
36
45
|
|
37
46
|
If you're using this engine or `turbo-rails` for the first time, it is recommended to generate the views to familiarize yourself with how turbo tags are used when turbo streaming.
|
38
47
|
|
48
|
+
### Routes
|
49
|
+
|
50
|
+
If you're starting a fresh application, ensure your application has a root path.
|
51
|
+
```ruby
|
52
|
+
# For example:
|
53
|
+
root to: "home#index"
|
54
|
+
```
|
55
|
+
|
56
|
+
Next, set up your ActionCable routes if you haven't already.
|
57
|
+
```ruby
|
58
|
+
mount ActionCable.server => '/cable'
|
59
|
+
```
|
60
|
+
|
61
|
+
Lastly, mount the Messaged engine's paths.
|
62
|
+
```ruby
|
63
|
+
mount Messaged::Engine => "/messaged"
|
64
|
+
```
|
65
|
+
|
39
66
|
### Users
|
40
67
|
Messaged assumes you have a user model. You may customize the user model name in the initializer. For example, if your user model is called Member:
|
41
68
|
```ruby
|
@@ -78,8 +105,11 @@ Messaged is intended to be named through the nomenclature used in [Noticed](http
|
|
78
105
|
—Ian
|
79
106
|
|
80
107
|
## TODO
|
81
|
-
* Add dynamic configurations for message broadcasting to tenants (like an organization chat room), rooms (like a Discord channel), or users (like direct messages in most direct-messaging apps such as Signal)
|
82
|
-
* Figure out how to support permissioning/authorization (such as Pundit/Cancancan) without being opinionated
|
83
108
|
* Complete adding rich_text support
|
84
|
-
*
|
85
|
-
* Create and finish the test suite
|
109
|
+
* Complete multi-tenant support
|
110
|
+
* Create and finish the test suite via TestKit
|
111
|
+
|
112
|
+
### TODO on `bleeding` pre-merge
|
113
|
+
* Add documentation about how to extend messages and rooms
|
114
|
+
* If not for anyone else, do it for future you
|
115
|
+
* Add to docs about how it is up to the dev to determine how messages/rooms are authorized
|
@@ -1,30 +1,31 @@
|
|
1
1
|
module Messaged
|
2
2
|
class MessagesController < ApplicationController
|
3
|
-
#
|
4
|
-
# before_action :authenticate_user!
|
3
|
+
# User should be authenticated by main.app
|
5
4
|
before_action :set_message, only: [:destroy, :edit, :show, :update]
|
6
5
|
|
7
6
|
def index
|
8
|
-
# TODO: How does the enginer user require authnetication without assuming Devise / ActsAsTenant?
|
9
|
-
# @messages = Message.where(account: current_account)
|
10
7
|
@messages = Message.all
|
11
8
|
@new_message = Message.new
|
12
|
-
|
9
|
+
return unless messaged_current_owner && messaged_current_owner.class != Messaged::NullUser
|
10
|
+
@new_message = messaged_current_owner.messages.build
|
13
11
|
end
|
14
12
|
|
15
13
|
def show; end
|
16
14
|
|
17
15
|
def new
|
18
16
|
@message = Message.new
|
19
|
-
|
17
|
+
return unless messaged_current_owner && messaged_current_owner.class != Messaged::NullUser
|
18
|
+
@message = messaged_current_owner.messages.build
|
20
19
|
end
|
21
20
|
|
22
21
|
def create
|
23
|
-
# TODO: How does the enginer user require authnetication without assuming Devise / ActsAsTenant?
|
24
|
-
# @message = Message.new(message_params.merge(account: current_account, user: current_user))
|
25
22
|
@message = Message.new(message_params)
|
26
23
|
if @message.save
|
27
|
-
|
24
|
+
if messaged_current_owner && messaged_current_owner.class != Messaged::NullUser
|
25
|
+
@new_message = messaged_current_owner.messages.build
|
26
|
+
else
|
27
|
+
@new_message = Message.new
|
28
|
+
end
|
28
29
|
respond_to do |format|
|
29
30
|
format.turbo_stream do
|
30
31
|
render turbo_stream: turbo_stream.append(:messages, partial: "messaged/messages/message",
|
@@ -40,7 +41,6 @@ module Messaged
|
|
40
41
|
def edit; end
|
41
42
|
|
42
43
|
def update
|
43
|
-
# TODO: (Security risk) How to authenticate user agnostically?
|
44
44
|
if @message.update(message_params)
|
45
45
|
render @message
|
46
46
|
else
|
@@ -49,7 +49,6 @@ module Messaged
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def destroy
|
52
|
-
# TODO: (Security risk) How to authenticate user agnostically?
|
53
52
|
@message.destroy
|
54
53
|
respond_to do |format|
|
55
54
|
format.turbo_stream { render turbo_stream: turbo_stream.remove(@message) }
|
@@ -60,7 +59,6 @@ module Messaged
|
|
60
59
|
private
|
61
60
|
|
62
61
|
def set_message
|
63
|
-
# TODO: (Security risk) How to authenticate user agnostically before declaring?
|
64
62
|
@message = Message.find(params[:id])
|
65
63
|
end
|
66
64
|
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Messaged
|
2
|
+
class RoomsController < ApplicationController
|
3
|
+
# User should be authenticated by main.app
|
4
|
+
before_action :set_room, only: [:destroy, :edit, :show, :update]
|
5
|
+
|
6
|
+
def index
|
7
|
+
@rooms = Room.all
|
8
|
+
end
|
9
|
+
|
10
|
+
def show
|
11
|
+
@new_message = Message.new
|
12
|
+
return unless messaged_current_owner && messaged_current_owner.class != Messaged::NullUser
|
13
|
+
@new_message = messaged_current_owner.messages.build
|
14
|
+
end
|
15
|
+
|
16
|
+
def new
|
17
|
+
@room = Room.new
|
18
|
+
@recipient = Messaged.user_class.find(params[:recipient]) if params.dig(:recipient)
|
19
|
+
return unless messaged_current_owner && messaged_current_owner.class != Messaged::NullUser
|
20
|
+
@room = messaged_current_owner.rooms.build
|
21
|
+
end
|
22
|
+
|
23
|
+
def create
|
24
|
+
@room = Room.new(room_params)
|
25
|
+
if @room.save
|
26
|
+
respond_to do |format|
|
27
|
+
format.html { redirect_to @room }
|
28
|
+
end
|
29
|
+
else
|
30
|
+
render :new, status: :unprocessable_entity
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def edit; end
|
35
|
+
|
36
|
+
def update
|
37
|
+
if @room.update(room_params)
|
38
|
+
render @room
|
39
|
+
else
|
40
|
+
render :edit, status: :unprocessable_entity
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def destroy
|
45
|
+
@room.destroy
|
46
|
+
respond_to do |format|
|
47
|
+
format.turbo_stream { render turbo_stream: turbo_stream.remove(@room) }
|
48
|
+
format.html { redirect_to rooms_url }
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def set_room
|
55
|
+
@room = Room.find(params[:id])
|
56
|
+
end
|
57
|
+
|
58
|
+
def room_params
|
59
|
+
params.require(:room).permit(:title, :user_id, :tenant_id, :recipient_id)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -14,21 +14,20 @@ module Messaged
|
|
14
14
|
inverse_of: :messages,
|
15
15
|
optional: true
|
16
16
|
end
|
17
|
-
belongs_to :
|
17
|
+
belongs_to :messaged_room, optional: true, class_name: 'Messaged::Room'
|
18
18
|
|
19
|
-
has_rich_text :
|
19
|
+
has_rich_text :rich_content
|
20
20
|
validates :content, presence: true
|
21
21
|
|
22
|
-
#
|
23
|
-
|
24
|
-
|
25
|
-
after_destroy_commit -> { broadcast_remove_to ["messages"] }
|
22
|
+
# after_create_commit -> { broadcast_append_later_to ["messages"], target: "messages", partial: "messaged/messages/message" }
|
23
|
+
# after_update_commit -> { broadcast_replace_later_to ["messages"], target: "#{dom_id(self)}", partial: "messaged/messages/message" }
|
24
|
+
# after_destroy_commit -> { broadcast_remove_to ["messages"] }
|
26
25
|
|
27
26
|
# Messages should default to the person sending them, otherwise
|
28
27
|
# fallback to the chat room, and finally tenant if they exist.
|
29
28
|
def owner
|
30
29
|
return user if user
|
31
|
-
return
|
30
|
+
return messaged_room if messaged_room
|
32
31
|
return tenant if Messaged.tenant_class_name && tenant
|
33
32
|
return nil # replace with user, tenant, or room
|
34
33
|
end
|
data/app/models/messaged/room.rb
CHANGED
@@ -3,20 +3,26 @@ module Messaged
|
|
3
3
|
# User association
|
4
4
|
belongs_to :user,
|
5
5
|
class_name: Messaged.user_class_name,
|
6
|
-
inverse_of: :
|
6
|
+
inverse_of: :rooms,
|
7
|
+
optional: true
|
8
|
+
# Recipient user association
|
9
|
+
belongs_to :recipient,
|
10
|
+
class_name: Messaged.user_class_name,
|
11
|
+
inverse_of: :rooms,
|
7
12
|
optional: true
|
8
13
|
# Multi-tenant option
|
9
14
|
if Messaged.tenant_class_name
|
10
15
|
belongs_to :tenant,
|
11
16
|
class_name: Messaged.tenant_class_name,
|
12
|
-
inverse_of: :
|
17
|
+
inverse_of: :rooms,
|
13
18
|
optional: true
|
14
19
|
end
|
15
20
|
validates :title, presence: true
|
16
21
|
|
17
|
-
has_many :
|
22
|
+
has_many :messaged_messages, dependent: :destroy, class_name: 'Messaged::Message', foreign_key: 'messaged_room_id'
|
23
|
+
has_many :recipients, class_name: Messaged.user_class_name
|
18
24
|
|
19
|
-
#
|
25
|
+
# Rooms should default to the person sending them, otherwise
|
20
26
|
# fallback to the chat room, and finally tenant if they exist.
|
21
27
|
def owner
|
22
28
|
return user if user
|
data/config/locales/en.yml
CHANGED
data/config/routes.rb
CHANGED
@@ -1,31 +1,34 @@
|
|
1
1
|
require 'messaged/base_migration'
|
2
2
|
class CreateMessaged < Messaged::BaseMigration
|
3
3
|
def change
|
4
|
-
create_table :
|
4
|
+
create_table :messaged_rooms do |t|
|
5
5
|
t.references :tenant, type: user_id_type, index: false
|
6
|
-
t.index [:tenant_id], name: :
|
6
|
+
t.index [:tenant_id], name: :index_messaged_rooms_on_tenant_id
|
7
7
|
|
8
8
|
t.references :user, type: tenant_id_type, index: false
|
9
|
-
t.index [:user_id], name: :
|
10
|
-
|
11
|
-
t.references :messaged_room, foreign_key: true
|
9
|
+
t.index [:user_id], name: :index_messaged_rooms_on_user_id
|
12
10
|
|
13
|
-
t.
|
11
|
+
t.references :recipient, type: user_id_type, index: false
|
12
|
+
t.index [:recipient_id], name: :index_messaged_rooms_on_recipient_id
|
14
13
|
|
15
|
-
|
16
|
-
t.string :delivery_target
|
14
|
+
t.string :title
|
17
15
|
|
18
16
|
t.timestamps
|
19
17
|
end
|
20
18
|
|
21
|
-
create_table :
|
19
|
+
create_table :messaged_messages do |t|
|
22
20
|
t.references :tenant, type: user_id_type, index: false
|
23
|
-
t.index [:tenant_id], name: :
|
21
|
+
t.index [:tenant_id], name: :index_messaged_messages_on_tenant_id
|
24
22
|
|
25
23
|
t.references :user, type: tenant_id_type, index: false
|
26
|
-
t.index [:user_id], name: :
|
24
|
+
t.index [:user_id], name: :index_messaged_messages_on_user_id
|
27
25
|
|
28
|
-
t.
|
26
|
+
t.belongs_to :messaged_room, index: true
|
27
|
+
|
28
|
+
t.text :content
|
29
|
+
|
30
|
+
# Choose an association: room, user, tenant
|
31
|
+
t.string :delivery_target
|
29
32
|
|
30
33
|
t.timestamps
|
31
34
|
end
|
@@ -7,7 +7,7 @@
|
|
7
7
|
Messaged.user_class = 'User'
|
8
8
|
|
9
9
|
# This method is used by Messaged controllers and views to fetch the currently signed-in user
|
10
|
-
Messaged.current_user_method = :
|
10
|
+
Messaged.current_user_method = :current_user
|
11
11
|
|
12
12
|
# ==> Multi-tenant Configuration
|
13
13
|
# The name of the class your app uses for your tenants.
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<%= form_with model: message, class: 'messaged-form' do |f| %>
|
2
2
|
<%= f.label :content, t('messaged.send_a_message') %>
|
3
|
-
<%= f.hidden_field :user_id %>
|
3
|
+
<%= f.hidden_field :user_id, value: messaged_current_user.id if messaged_current_user %>
|
4
4
|
<%= f.hidden_field :tenant_id %>
|
5
|
-
<%= f.hidden_field :messaged_room_id %>
|
5
|
+
<%= f.hidden_field :messaged_room_id, value: room.id if room %>
|
6
6
|
<%= f.text_area :content %>
|
7
7
|
<%= f.submit nil, class: 'messaged-button' %>
|
8
8
|
<% end %>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<% if t('messaged.header').present? %>
|
6
6
|
<h1 class="messaged-header"><%= t('messaged.header') %></h1>
|
7
7
|
<% end %>
|
8
|
-
|
8
|
+
|
9
9
|
<%#= turbo_stream_from current_account, "messages" %>
|
10
10
|
<%= turbo_stream_from "messages" %>
|
11
11
|
<div class="messaged-messages" id="messages">
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<%= form_with model: room, class: 'messaged-room-form' do |f| %>
|
2
|
+
<%= f.label :title, t('messaged.room_name') %>
|
3
|
+
<%= f.text_field :title, value: params[:title] %>
|
4
|
+
<%= f.hidden_field :user_id, value: messaged_current_user.id if messaged_current_user %>
|
5
|
+
<%= f.hidden_field :recipient_id, value: @recipient.id if @recipient %>
|
6
|
+
<%= f.hidden_field :tenant_id %>
|
7
|
+
<%= f.submit nil, class: 'messaged-button' %>
|
8
|
+
<% end %>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<div class="messaged-room-container">
|
2
|
+
<div>
|
3
|
+
<div class="messaged-options">
|
4
|
+
<span><%= link_to t('messaged.edit'), messaged.edit_room_path(room), class: "messaged-edit-link", "data-turbo-action": "replace" %></span>
|
5
|
+
<%= button_to t('messaged.delete'), messaged.room_path(room), method: :delete, form: { data: { turbo_confirm: t('messaged.confirm') } }, class: "messaged-delete-link", "data-turbo-action": "delete" %>
|
6
|
+
</div>
|
7
|
+
<div class="messaged-index-container">
|
8
|
+
<div class="messaged-outer-wrapper">
|
9
|
+
<div class="messaged-inner-wrapper">
|
10
|
+
<div class="messaged-index">
|
11
|
+
<% if room.title.present? %>
|
12
|
+
<h1 class="messaged-header"><%= room.title %></h1>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<%= turbo_stream_from "messages" %>
|
16
|
+
<div class="messaged-messages" id="messages">
|
17
|
+
<%= render @room.messaged_messages %>
|
18
|
+
</div>
|
19
|
+
|
20
|
+
<%= turbo_frame_tag "new_message" do %>
|
21
|
+
<%= render "messaged/messages/form", message: @new_message, room: @room %>
|
22
|
+
<% end %>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form", room: @room %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<div class="messaged-index-container">
|
2
|
+
<div class="messaged-outer-wrapper">
|
3
|
+
<div class="messaged-inner-wrapper">
|
4
|
+
<div class="messaged-index">
|
5
|
+
<% if t('messaged.header').present? %>
|
6
|
+
<h1 class="messaged-header"><%= t('messaged.room_index') %></h1>
|
7
|
+
<% end %>
|
8
|
+
<div class="messaged-rooms" id="rooms">
|
9
|
+
<%= render @rooms %>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form", room: @room %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render @room %>
|
@@ -8,7 +8,7 @@ module Messaged
|
|
8
8
|
]
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
11
|
+
def copy_message_view_templates
|
12
12
|
copy_file \
|
13
13
|
'messages/_form.html.erb',
|
14
14
|
'app/views/messaged/messages/_form.html.erb'
|
@@ -37,6 +37,36 @@ module Messaged
|
|
37
37
|
'messages/show.html.erb',
|
38
38
|
'app/views/messaged/messages/show.html.erb'
|
39
39
|
end
|
40
|
+
|
41
|
+
def copy_room_view_templates
|
42
|
+
copy_file \
|
43
|
+
'rooms/_form.html.erb',
|
44
|
+
'app/views/messaged/rooms/_form.html.erb'
|
45
|
+
|
46
|
+
copy_file \
|
47
|
+
'rooms/_room.html.erb',
|
48
|
+
'app/views/messaged/rooms/_room.html.erb'
|
49
|
+
|
50
|
+
copy_file \
|
51
|
+
'rooms/create.turbostream.erb',
|
52
|
+
'app/views/messaged/rooms/create.turbostream.erb'
|
53
|
+
|
54
|
+
copy_file \
|
55
|
+
'rooms/edit.html.erb',
|
56
|
+
'app/views/messaged/rooms/edit.html.erb'
|
57
|
+
|
58
|
+
copy_file \
|
59
|
+
'rooms/index.html.erb',
|
60
|
+
'app/views/messaged/rooms/index.html.erb'
|
61
|
+
|
62
|
+
copy_file \
|
63
|
+
'rooms/new.html.erb',
|
64
|
+
'app/views/messaged/rooms/new.html.erb'
|
65
|
+
|
66
|
+
copy_file \
|
67
|
+
'rooms/show.html.erb',
|
68
|
+
'app/views/messaged/rooms/show.html.erb'
|
69
|
+
end
|
40
70
|
end
|
41
71
|
end
|
42
72
|
end
|
data/lib/messaged/engine.rb
CHANGED
data/lib/messaged/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: messaged
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cjilbert504, ianrandmckenzie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -28,30 +28,30 @@ dependencies:
|
|
28
28
|
name: importmap-rails
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 1.1.5
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 1.1.5
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: turbo-rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.2.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.2.0
|
55
55
|
description: A quick and easy way to implement an instant-messaging module using Turbo
|
56
56
|
Rails.
|
57
57
|
email:
|
@@ -62,10 +62,9 @@ extra_rdoc_files: []
|
|
62
62
|
files:
|
63
63
|
- README.md
|
64
64
|
- Rakefile
|
65
|
-
- app/assets/config/messaged_manifest.js
|
66
|
-
- app/assets/stylesheets/messaged/application.css
|
67
65
|
- app/controllers/messaged/application_controller.rb
|
68
66
|
- app/controllers/messaged/messages_controller.rb
|
67
|
+
- app/controllers/messaged/rooms_controller.rb
|
69
68
|
- app/javascript/application.js
|
70
69
|
- app/jobs/messaged/application_job.rb
|
71
70
|
- app/models/messaged/application_record.rb
|
@@ -74,7 +73,6 @@ files:
|
|
74
73
|
- app/models/messaged/null_user.rb
|
75
74
|
- app/models/messaged/room.rb
|
76
75
|
- app/models/messaged/user_extender.rb
|
77
|
-
- app/views/layouts/messaged/application.html.erb
|
78
76
|
- config/importmap.rb
|
79
77
|
- config/locales/en.yml
|
80
78
|
- config/routes.rb
|
@@ -90,6 +88,13 @@ files:
|
|
90
88
|
- lib/generators/messaged/views/templates/messages/index.html.erb
|
91
89
|
- lib/generators/messaged/views/templates/messages/new.html.erb
|
92
90
|
- lib/generators/messaged/views/templates/messages/show.html.erb
|
91
|
+
- lib/generators/messaged/views/templates/rooms/_form.html.erb
|
92
|
+
- lib/generators/messaged/views/templates/rooms/_room.html.erb
|
93
|
+
- lib/generators/messaged/views/templates/rooms/create.turbostream.erb
|
94
|
+
- lib/generators/messaged/views/templates/rooms/edit.html.erb
|
95
|
+
- lib/generators/messaged/views/templates/rooms/index.html.erb
|
96
|
+
- lib/generators/messaged/views/templates/rooms/new.html.erb
|
97
|
+
- lib/generators/messaged/views/templates/rooms/show.html.erb
|
93
98
|
- lib/generators/messaged/views/views_generator.rb
|
94
99
|
- lib/messaged.rb
|
95
100
|
- lib/messaged/base_migration.rb
|
@@ -1 +0,0 @@
|
|
1
|
-
//= link_directory ../stylesheets/messaged .css
|
@@ -1,15 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
-
* listed below.
|
4
|
-
*
|
5
|
-
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
-
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
|
7
|
-
*
|
8
|
-
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
9
|
-
* compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
|
10
|
-
* files in this directory. Styles in this file should be added after the last require_* statement.
|
11
|
-
* It is generally better to create a new file per style scope.
|
12
|
-
*
|
13
|
-
*= require_tree .
|
14
|
-
*= require_self
|
15
|
-
*/
|
@@ -1,16 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<title>Messaged</title>
|
5
|
-
<%= csrf_meta_tags %>
|
6
|
-
<%= csp_meta_tag %>
|
7
|
-
|
8
|
-
<%= stylesheet_link_tag "messaged/application", media: "all" %>
|
9
|
-
<%= javascript_importmap_tags %>
|
10
|
-
</head>
|
11
|
-
<body>
|
12
|
-
|
13
|
-
<%= yield %>
|
14
|
-
|
15
|
-
</body>
|
16
|
-
</html>
|