Sha256: a00b472d86524e764c44842ef821516025bb8fe9162b977931a16720ad79963a

Contents?: true

Size: 867 Bytes

Versions: 1

Compression:

Stored size: 867 Bytes

Contents

# frozen_string_literal: true

module SolidusEasypost
  module Spree
    module CartonDecorator
      def self.prepended(base)
        base.after_create :track_via_easypost
      end

      def easypost_tracker
        return @easypost_tracker if @easypost_tracker

        if easy_post_tracker_id.present?
          @easypost_tracker = EasyPost::Tracker.retrieve(easy_post_tracker_id)
        else
          @easypost_tracker = EasyPost::Tracker.create(
            tracking_code: tracking,
            carrier: shipping_method.carrier,
          )

          update!(easy_post_tracker_id: @easypost_tracker.id)
        end

        @easypost_tracker
      end

      private

      def track_via_easypost
        return unless SolidusEasypost.configuration.track_all_cartons

        easypost_tracker
      end

      ::Spree::Carton.prepend self
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
solidus_easypost-3.0.0 app/decorators/models/solidus_easypost/spree/carton_decorator.rb