heya 0.6.1 → 0.7.0
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/CHANGELOG.md +7 -0
 - data/README.md +23 -1
 - data/app/mailers/heya/campaign_mailer.rb +24 -1
 - data/lib/heya/campaigns/actions/email.rb +1 -1
 - data/lib/heya/version.rb +1 -1
 - metadata +3 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 897c67c77ab4b26f47d21ddde192e5957239cdb319c662fd72dd806de3c552d2
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: e34438a886e4c1598b0bca34bab406b84b83561310857f2c8730c669961e5a9a
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 6efc0529915073f5e3e2abb9a878e1f2e290cf66b66913989555325ac29f508988378e48637efaa36a345f3bc6ebd6978c110879c52d1999cea7bb3ec35e67a4
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 02e88ebd7dea87ba644b380be61ffc41788c24045f8e103df302e44b1a8f82a37850ed56beb12b763b183061abf2526a5cd2affb6a175e155f7096d22a8dde7d
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -6,6 +6,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            ## [Unreleased]
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
            ## [0.7.0] - 2022-02-03
         
     | 
| 
      
 10 
     | 
    
         
            +
            ### Fixed
         
     | 
| 
      
 11 
     | 
    
         
            +
            - Automatically include Rails url helpers from application in campaign mailer templates (#158, @feliperaul)
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ### Added
         
     | 
| 
      
 14 
     | 
    
         
            +
            - Allow the customization of the to field (#155, @feliperaul)
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       9 
16 
     | 
    
         
             
            ## [0.6.1] - 2022-01-05
         
     | 
| 
       10 
17 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       11 
18 
     | 
    
         
             
            - Support Rails 7 (#151, @800a7b32)
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -247,10 +247,11 @@ The `wait` option tells Heya how long to wait before sending each message (the d 
     | 
|
| 
       247 
247 
     | 
    
         
             
            Heya uses the following additional options to build the message itself:
         
     | 
| 
       248 
248 
     | 
    
         | 
| 
       249 
249 
     | 
    
         
             
            | Option Name | Default      | Description                |
         
     | 
| 
       250 
     | 
    
         
            -
             
     | 
| 
      
 250 
     | 
    
         
            +
            |-------------|--------------|----------------------------|
         
     | 
| 
       251 
251 
     | 
    
         
             
            | `subject`   | **required** | The email's subject        |
         
     | 
| 
       252 
252 
     | 
    
         
             
            | `from`      | Heya default | The sender's email address |
         
     | 
| 
       253 
253 
     | 
    
         
             
            | `layout`    | Heya default | The email's layout file    |
         
     | 
| 
      
 254 
     | 
    
         
            +
            | `to`        | See below    | See below                  |
         
     | 
| 
       254 
255 
     | 
    
         | 
| 
       255 
256 
     | 
    
         
             
            You can change the default options using the `default` method at the top of the campaign. Heya applies default options to each step which doesn't supply its own:
         
     | 
| 
       256 
257 
     | 
    
         | 
| 
         @@ -268,6 +269,27 @@ class OnboardingCampaign < ApplicationCampaign 
     | 
|
| 
       268 
269 
     | 
    
         
             
            end
         
     | 
| 
       269 
270 
     | 
    
         
             
            ```
         
     | 
| 
       270 
271 
     | 
    
         | 
| 
      
 272 
     | 
    
         
            +
            #### Customizing the `to` field
         
     | 
| 
      
 273 
     | 
    
         
            +
             
     | 
| 
      
 274 
     | 
    
         
            +
            You can customize the `to` field by passing a callable object, which Heya will invoke with the user. For instance:
         
     | 
| 
      
 275 
     | 
    
         
            +
             
     | 
| 
      
 276 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 277 
     | 
    
         
            +
            class OnboardingCampaign < ApplicationCampaign
         
     | 
| 
      
 278 
     | 
    
         
            +
              step :welcome,
         
     | 
| 
      
 279 
     | 
    
         
            +
                subject: "Welcome to my app!",
         
     | 
| 
      
 280 
     | 
    
         
            +
                to: -> (user) { ActionMailer::Base.email_address_with_name(user.email, user.nickname) }
         
     | 
| 
      
 281 
     | 
    
         
            +
            end
         
     | 
| 
      
 282 
     | 
    
         
            +
            ```
         
     | 
| 
      
 283 
     | 
    
         
            +
             
     | 
| 
      
 284 
     | 
    
         
            +
            It is recommended to rely on `ActionMailer::Base.email_address_with_name` so that sanitization is correctly applied.
         
     | 
| 
      
 285 
     | 
    
         
            +
             
     | 
| 
      
 286 
     | 
    
         
            +
            If the `to` param is not provided, Heya will default to:
         
     | 
| 
      
 287 
     | 
    
         
            +
             
     | 
| 
      
 288 
     | 
    
         
            +
            1. `user#first_name`
         
     | 
| 
      
 289 
     | 
    
         
            +
            1. `user#name`
         
     | 
| 
      
 290 
     | 
    
         
            +
             
     | 
| 
      
 291 
     | 
    
         
            +
            If the `user` object doesn't respond to these methods, it will fallback to a simple `user.email` in the `to` field.
         
     | 
| 
      
 292 
     | 
    
         
            +
             
     | 
| 
       271 
293 
     | 
    
         
             
            #### Quality control option
         
     | 
| 
       272 
294 
     | 
    
         | 
| 
       273 
295 
     | 
    
         
             
            You may wish to apply quality control to individual steps of a campaign. For example, when adding a new step to an existing campaign it is
         
     | 
| 
         @@ -2,6 +2,7 @@ module Heya 
     | 
|
| 
       2 
2 
     | 
    
         
             
              class CampaignMailer < ApplicationMailer
         
     | 
| 
       3 
3 
     | 
    
         
             
                DEFAULT_LAYOUT = "heya/campaign_mailer"
         
     | 
| 
       4 
4 
     | 
    
         
             
                layout -> { params.fetch(:step).params.fetch("layout", DEFAULT_LAYOUT) }
         
     | 
| 
      
 5 
     | 
    
         
            +
                include Rails.application.routes.url_helpers
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
7 
     | 
    
         
             
                def build
         
     | 
| 
       7 
8 
     | 
    
         
             
                  user = params.fetch(:user)
         
     | 
| 
         @@ -26,7 +27,7 @@ module Heya 
     | 
|
| 
       26 
27 
     | 
    
         
             
                    from: from,
         
     | 
| 
       27 
28 
     | 
    
         
             
                    bcc: bcc,
         
     | 
| 
       28 
29 
     | 
    
         
             
                    reply_to: reply_to,
         
     | 
| 
       29 
     | 
    
         
            -
                    to: user 
     | 
| 
      
 30 
     | 
    
         
            +
                    to: to_address(user, step),
         
     | 
| 
       30 
31 
     | 
    
         
             
                    subject: subject,
         
     | 
| 
       31 
32 
     | 
    
         
             
                    template_path: "heya/campaign_mailer/#{campaign_name}",
         
     | 
| 
       32 
33 
     | 
    
         
             
                    template_name: step_name
         
     | 
| 
         @@ -52,5 +53,27 @@ module Heya 
     | 
|
| 
       52 
53 
     | 
    
         
             
                    end
         
     | 
| 
       53 
54 
     | 
    
         
             
                  end
         
     | 
| 
       54 
55 
     | 
    
         
             
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                def to_address(user, step)
         
     | 
| 
      
 58 
     | 
    
         
            +
                  return step.params["to"].call(user) if step.params["to"].respond_to?(:call)
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                  if user.respond_to?(:first_name)
         
     | 
| 
      
 61 
     | 
    
         
            +
                    self.class.email_address_with_name(user.email, user.first_name)
         
     | 
| 
      
 62 
     | 
    
         
            +
                  elsif user.respond_to?(:name)
         
     | 
| 
      
 63 
     | 
    
         
            +
                    self.class.email_address_with_name(user.email, user.name)
         
     | 
| 
      
 64 
     | 
    
         
            +
                  else
         
     | 
| 
      
 65 
     | 
    
         
            +
                    user.email
         
     | 
| 
      
 66 
     | 
    
         
            +
                  end
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                # This method is a backport and can be removed when we drop support of
         
     | 
| 
      
 70 
     | 
    
         
            +
                # Rails 6.0; As of Rails 6.1, ActionMailer::Base, which we inherit from,
         
     | 
| 
      
 71 
     | 
    
         
            +
                # already includes it.
         
     | 
| 
      
 72 
     | 
    
         
            +
                def self.email_address_with_name(address, name)
         
     | 
| 
      
 73 
     | 
    
         
            +
                  Mail::Address.new.tap do |builder|
         
     | 
| 
      
 74 
     | 
    
         
            +
                    builder.address = address
         
     | 
| 
      
 75 
     | 
    
         
            +
                    builder.display_name = name
         
     | 
| 
      
 76 
     | 
    
         
            +
                  end.to_s
         
     | 
| 
      
 77 
     | 
    
         
            +
                end
         
     | 
| 
       55 
78 
     | 
    
         
             
              end
         
     | 
| 
       56 
79 
     | 
    
         
             
            end
         
     | 
    
        data/lib/heya/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: heya
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.7.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Joshua Wood
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2022- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2022-02-03 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rails
         
     | 
| 
         @@ -131,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       131 
131 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       132 
132 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       133 
133 
     | 
    
         
             
            requirements: []
         
     | 
| 
       134 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
      
 134 
     | 
    
         
            +
            rubygems_version: 3.3.3
         
     | 
| 
       135 
135 
     | 
    
         
             
            signing_key:
         
     | 
| 
       136 
136 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       137 
137 
     | 
    
         
             
            summary: "Heya \U0001F44B"
         
     |