better_mailer_previews 1.0.0 → 1.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: afad345bdba930b21f4f7ce5aca1c6d762e95cb0add146eb7d4c8f6aa9d82234
4
- data.tar.gz: e9033e9060c6b1d35284c878d31e18619090874285d748d20bf08399ed85ccd6
3
+ metadata.gz: 2023202e8ffad5fa3e2424ed4378230e037dff217325143ff3dc97e544a07533
4
+ data.tar.gz: 5c02e8e2d4a3a25cec4a882b0ed198ed58543771fbfc7e6617b9786796ba1292
5
5
  SHA512:
6
- metadata.gz: 2e3a0408531293b7b7f92812f69d919441597f345927a04554fdadbd5cb1aafe606fdb8dd0559e1e48be9908d176d65b843c652bd426b4aae81f535bb7a85b36
7
- data.tar.gz: 8df314bc25ecbc5f0b40a2a511d8b5b06361f17001d2a72f6c47248dee50acb4060e636d63b6069ed1735798dc5969ec384fc196352a409f43bb1b32b357b0e8
6
+ metadata.gz: a447a4c6f88f5e855531440de083b1dbe58d69da3b4f9eb8706c8bcc53539aca88dfd4b595d5307d02b9b656e686d93d2d741331be8368b2af9eec5d8135587c
7
+ data.tar.gz: a1ba2983470482ff3f75584cabd771a2c7850832275ea9faeb1893d96a73e56342f86ae9db11868f7c9e5a0d6a245bc16003cc73d6d0ca0f4f315f5a994ef6c9
@@ -20,23 +20,25 @@ module BetterMailerPreviews
20
20
  end
21
21
 
22
22
  def show
23
- @mailer_name = params[:mailer_name]
23
+ @mailer_path = params[:mailer_path]
24
24
  @email_type = params[:email_type]
25
25
 
26
- @url_for_mailer = "/rails/mailers/#{@mailer_name}/#{@email_type}"
26
+ @url_for_mailer = "/rails/mailers/#{@mailer_path}/#{@email_type}"
27
27
  end
28
28
 
29
29
  def send_email
30
- # mailer_name: underscore_case of base mailer name | invoice_mailer
30
+ # mailer_path: underscore_case of base mailer path | test/invoice_mailer
31
31
  # email_type: string mailer method to call on class | "round"
32
32
  # email_address: string email address to send to | "test@t.com"
33
- mailer_name = params[:mailer_name]
33
+ mailer_path = params[:mailer_path]
34
34
  email_type = params[:email_type]
35
35
  email_address = params[:email_address]
36
36
 
37
37
  # Instantiate the preview class (ie: InvoiceMailerPreview),
38
38
  # then render it's preview html into a string.
39
- preview_class = mailer_name.concat("_preview").camelize.constantize
39
+ preview_class_string = mailer_path.split("/").map(&:camelize).join("::").concat("Preview")
40
+ preview_class = preview_class_string.constantize
41
+
40
42
  preview_method = email_type.to_sym
41
43
  mail = preview_class.new.public_send(preview_method).message
42
44
  html_content = mail.body.decoded
@@ -46,7 +48,7 @@ module BetterMailerPreviews
46
48
  content_type: "text/html",
47
49
  from: "better-mailer-previews@railsnotes.xyz",
48
50
  to: email_address,
49
- subject: "#{preview_class.to_s}.#{preview_method} (via BetterMailerPreviews)",
51
+ subject: "#{preview_class_string}.#{preview_method} (via BetterMailerPreviews)",
50
52
  body: html_content,
51
53
  ).deliver_now
52
54
 
@@ -1,13 +1,17 @@
1
1
  module BetterMailerPreviews
2
2
  module ApplicationHelper
3
3
 
4
- # For generating mailer preview link names on mailers/index
4
+ # For generating mailer preview link names on mailers/index,
5
+ # including namespaced methods.
5
6
  #
6
7
  # input: "/rails/mailers/invoice_mailer/saas"
7
8
  # output: "Preview InvoiceMailer.SaaS →"
8
9
  #
9
10
  def preview_text_for_url(url)
10
- pretty_mailer_preview_name = url.split("/")[-2...].map { |segment| segment.split("_").map(&:capitalize).join }.join(".")
11
+ camelized = url.split("/")[3...].map { |element| element.camelize }
12
+ last_element = camelized.pop
13
+ pretty_mailer_preview_name = camelized.join("/") + "." + last_element
14
+
11
15
  return "Preview #{pretty_mailer_preview_name} →"
12
16
  end
13
17
 
@@ -18,7 +22,7 @@ module BetterMailerPreviews
18
22
  #
19
23
  def preview_path_for_url(url)
20
24
  mounted_engine_path = BetterMailerPreviews::Engine.routes.find_script_name({})
21
- url.split("/")[-2...].join("/").prepend("#{mounted_engine_path}/")
25
+ url.split("/")[3..].join("/").prepend("#{mounted_engine_path}/")
22
26
  end
23
27
  end
24
28
  end
@@ -1,7 +1,7 @@
1
1
  <div class="w-full flex justify-between items-end">
2
- <h1 class="text-5xl font-medium tracking-tighter"><%= @mailer_name.titleize %> — <%= @email_type.titleize %></h1>
2
+ <h1 class="text-5xl font-medium tracking-tighter"><%= @mailer_path.titleize %> — <%= @email_type.titleize %></h1>
3
3
  <div class="">
4
- <%= form_with url: send_mailer_email_path(mailer_name: @mailer_name, email_type: @email_type),
4
+ <%= form_with url: send_mailer_email_path(mailer_path: @mailer_path, email_type: @email_type),
5
5
  method: :post,
6
6
  local: true,
7
7
  class: "flex items-end gap-x-2" do |form| %>
@@ -22,7 +22,7 @@
22
22
  <div class="hidden sm:block shrink-0 mr-2 h-4 w-4 bg-gray-600 rounded-full"></div>
23
23
  <div class="hidden sm:block shrink-0 mr-2 h-4 w-4 bg-gray-600 rounded-full"></div>
24
24
  <div class="flex-grow flex items-center justify-center sm:ml-6 sm:mr-24 py-2 px-4 bg-gray-600 rounded-full leading-5 text-sm text-gray-200 text-center truncate">
25
- <div class="truncate"><span class="font-medium text-gray-100">Mailer Preview</span> — <%= "#{@mailer_name}/#{@email_type}" %></div>
25
+ <div class="truncate"><span class="font-medium text-gray-100">Mailer Preview</span> — <%= "#{@mailer_path}/#{@email_type}" %></div>
26
26
  </div>
27
27
  </div>
28
28
  <div class="bg-gray-950 px-2 rounded-b-lg pb-2">
data/config/routes.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  BetterMailerPreviews::Engine.routes.draw do
2
- root to: 'mailers#index'
2
+ root to: "mailers#index"
3
3
 
4
- get '/:mailer_name/:email_type', to: 'mailers#show', as: :mailer_preview
5
- post '/:mailer_name/:email_type/send', to: 'mailers#send_email', as: :send_mailer_email
4
+ # Wildcard routes to handle namespaced mailers
5
+ get "/*mailer_path/:email_type", to: "mailers#show", as: :mailer_preview
6
+ post "/*mailer_path/:email_type/send", to: "mailers#send_email", as: :send_mailer_email
6
7
  end
@@ -1,3 +1,3 @@
1
1
  module BetterMailerPreviews
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: better_mailer_previews
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harrison Broadbent
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-12 00:00:00.000000000 Z
11
+ date: 2023-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails