Class: Spree::Newsletter::Subscribe
- Inherits:
-
Object
- Object
- Spree::Newsletter::Subscribe
- Defined in:
- app/services/spree/newsletter/subscribe.rb
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(email:, current_user: nil, current_store: nil, redirect_url: nil) ⇒ Subscribe
constructor
A new instance of Subscribe.
Constructor Details
#initialize(email:, current_user: nil, current_store: nil, redirect_url: nil) ⇒ Subscribe
Returns a new instance of Subscribe.
4 5 6 7 8 9 |
# File 'app/services/spree/newsletter/subscribe.rb', line 4 def initialize(email:, current_user: nil, current_store: nil, redirect_url: nil) @email = email @current_user = current_user @current_store = current_store || Spree::Store.current @redirect_url = redirect_url end |
Instance Method Details
#call ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'app/services/spree/newsletter/subscribe.rb', line 11 def call if existed_subscription.present? Spree::Newsletter::LinkUser.new(subscriber: existed_subscription, user: known_user).call return existed_subscription end ActiveRecord::Base.transaction do upsert_subscriber return subscriber if subscriber.errors.any? Spree::Newsletter::LinkUser.new(subscriber: subscriber, user: known_user).call if subscriber.email == current_user&.email # User's email is already verified by login — skip the double opt-in. Spree::Newsletter::Verify.new(subscriber: subscriber).call end end subscriber.publish_event('newsletter_subscriber.subscription_requested', subscription_requested_payload) unless subscriber.verified? subscriber end |