Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 25 additions & 9 deletions app/controllers/spree/checkout_controller_decorator.rb
Original file line number Diff line number Diff line change
@@ -1,22 +1,38 @@
Spree::CheckoutController.class_eval do

include Spree::CheckoutEventTracker

after_action :track_order_state_change, only: :edit
after_action :track_order_completion, only: :update, if: :confirm?
module Spree
module CheckoutControllerDecorator
def self.prepended(base)
base.include Spree::CheckoutEventTracker
base.after_action :track_order_state_change, only: :edit
base.after_action :track_order_completion, only: :update, if: :confirm?
end

private
private
def confirm?
previous_state == 'confirm'
previous_state == 'payment' || 'confirm'
end

def track_order_completion
track_activity(activity: :complete_order, previous_state: previous_state, next_state: 'complete')
activity = ''
state = ''
if @order.payment_state == 'paid'
activity = :complete_order
state = :complete
elsif @order.payment_state == 'failed'
activity = :failed
state = :payment
end
track_activity(activity: activity, previous_state: previous_state, next_state: state)
end

def track_order_state_change
unless previous_state == next_state
track_activity(activity: :change_order_state, previous_state: previous_state, next_state: next_state)
end
end

end
end

if ::Spree::CheckoutController.included_modules.exclude?(Spree::CheckoutControllerDecorator)
::Spree::CheckoutController.prepend Spree::CheckoutControllerDecorator
end
14 changes: 11 additions & 3 deletions app/controllers/spree/home_controller_decorator.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
Spree::HomeController.class_eval do
include Spree::PageTracker
track_actions [:index]
module Spree
module HomeControllerDecorator
def self.prepended(base)
base.include Spree::PageTracker
base.track_actions[:index]
end
end
end

if ::Spree::HomeController.included_modules.exclude?(Spree::HomeControllerDecorator)
::Spree::HomeController.prepend Spree::HomeControllerDecorator
end
18 changes: 13 additions & 5 deletions app/controllers/spree/orders_controller_decorator.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
Spree::OrdersController.class_eval do
module Spree
module OrdersControllerDecorator
def self.prepended(base)
base.include Spree::CheckoutEventTracker

include Spree::CheckoutEventTracker
base.after_action :track_return_to_cart, only: :edit, if: :current_order
base.after_action :track_empty_cart_activity, only: :empty
end

after_action :track_return_to_cart, only: :edit, if: :current_order
after_action :track_empty_cart_activity, only: :empty
private

private
def track_empty_cart_activity
track_activity(activity: :empty_cart, previous_state: previous_state, next_state: nil)
end
Expand All @@ -28,5 +31,10 @@ def current_order_includes_previous_state?
def referred_from_any_checkout_step?
current_order_includes_previous_state? || previous_state.eql?('cart')
end

end
end

if ::Spree::OrdersController.included_modules.exclude?(Spree::OrdersControllerDecorator)
::Spree::OrdersController.prepend Spree::OrdersControllerDecorator
end
14 changes: 11 additions & 3 deletions app/controllers/spree/products_controller_decorator.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
Spree::ProductsController.class_eval do
include Spree::PageTracker
track_actions [:show, :index]
module Spree
module ProductsControllerDecorator
def self.prepended(base)
base.include Spree::PageTracker
base.track_actions [:show, :index]
end
end
end

if ::Spree::ProductsController.included_modules.exclude?(Spree::ProductsControllerDecorator)
::Spree::ProductsController.prepend Spree::ProductsControllerDecorator
end
14 changes: 11 additions & 3 deletions app/controllers/spree/taxons_controller_decorator.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
Spree::TaxonsController.class_eval do
include Spree::PageTracker
track_actions [:show]
module Spree
module TaxonsControllerDecorator
def self.prepended(base)
base.include Spree::PageTracker
base.track_actions [:show]
end
end
end

if ::Spree::TaxonsController.included_modules.exclude?(Spree::TaxonsControllerDecorator)
::Spree::TaxonsController.prepend Spree::TaxonsControllerDecorator
end
64 changes: 0 additions & 64 deletions app/models/concerns/spree/order_contents_decorator.rb

This file was deleted.

2 changes: 0 additions & 2 deletions app/models/spree/cart_event.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@ class CartEvent < Spree::Base
:total,
:variant, presence: true



scope :added, -> { where(activity: 'add') }
scope :removed, -> { where(activity: 'remove') }
scope :updated, -> { where(activity: 'update') }
Expand Down
23 changes: 1 addition & 22 deletions app/trackers/spree/cart/event/tracker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,34 +10,13 @@ def initialize(arguments = {})
@quantity = arguments[:quantity]
@total = arguments[:total]
@variant_id = arguments[:variant_id]
@activity = arguments[:activity]
end

def track
changed_quantity = changed_quantity(target.previous_changes[:quantity].map(&:to_i))
self.activity = activity(changed_quantity, target)
self.quantity = changed_quantity
CartEvent.create(instance_values)
end

private
# 1. ADD EVENT: When a new product is added to cart
# so the changed quantity will be equal to line_item.quantity
# 2. REMOVE EVENT: When a product is removed from cart,
# change in quantity will be negative and line_items quantity will be zero
# 3. UPDATE EVENT: When product's quantity is changed from the cart and it shouldn't be removed
def activity(changed_quantity, line_item)
if (changed_quantity > 0 && changed_quantity == line_item.quantity)
:add
elsif (changed_quantity < 0 && line_item.quantity == 0)
:remove
elsif changed_quantity
:update
end
end

def changed_quantity(previous_quantity_changes)
previous_quantity_changes.last - previous_quantity_changes.first
end
end
end
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ def add_javascripts
end

def add_stylesheets
inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/spree_events_tracker\n", :before => /\*\//, :verbose => true
inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/spree_events_tracker\n", :before => /\*\//, :verbose => true
inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.scss', " *= require spree/frontend/spree_events_tracker\n", :before => /\*\//, :verbose => true
inject_into_file 'vendor/assets/stylesheets/spree/backend/all.scss', " *= require spree/backend/spree_events_tracker\n", :before => /\*\//, :verbose => true
end

def add_migrations
Expand Down
2 changes: 1 addition & 1 deletion spree_events_tracker.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Gem::Specification.new do |s|
s.require_path = 'lib'
s.requirements << 'none'

spree_version = '>= 3.2.0', '< 4.0'
spree_version = '>= 3.2.0', '< 4.5.0'
s.add_dependency 'spree_extension', '~> 0.0.5'

s.add_dependency 'spree_core', spree_version
Expand Down