app_manager 2.2.4 → 2.3.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/Gemfile.lock +2 -4
 - data/app/controllers/app_manager/charges_controller.rb +67 -2
 - data/app/controllers/app_manager/plans_controller.rb +8 -1
 - data/config/routes.rb +5 -0
 - data/lib/app_manager/api_cache_handler.rb +1 -1
 - data/lib/app_manager/client/connection.rb +7 -2
 - data/lib/app_manager/client/plans.rb +8 -0
 - data/lib/app_manager/graphql_helper.rb +2 -2
 - data/lib/app_manager/model.rb +2 -2
 - data/lib/app_manager/version.rb +1 -1
 - data/lib/app_manager.rb +2 -1
 - data/lib/generators/app_manager/install/install_generator.rb +8 -0
 - data/lib/generators/app_manager/install/templates/add_is_global_to_plans.erb +7 -0
 - metadata +3 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 36ca82cb72a3f61eda4cca501641a538818ab940091361691256a3ababd7b873
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 8e8df05176547bb94c03799de4e08f77b5381608194c6a22144e21b10a57be56
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 1caaec8b97367a4932827a60f11d5c0ae338940334f822061c605e9285fad753ab42ee8b5d6503df0ea7315f2df680da935ad8a47c4e2daa9d8b90b847a3dbc9
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 5d2f94082fac014e53bce3c361cbd1e9295a2d8e24d97db543ecd8e4b6ac998f0b5dfcbabc748a2bfa783689d8d6d35d2bb1831902c15eb0258f2eaffe9f5a27
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                app_manager (2. 
     | 
| 
      
 4 
     | 
    
         
            +
                app_manager (2.3.0)
         
     | 
| 
       5 
5 
     | 
    
         
             
                  activerecord-import (~> 1.4)
         
     | 
| 
       6 
6 
     | 
    
         
             
                  httparty
         
     | 
| 
       7 
7 
     | 
    
         
             
                  kaminari (>= 0.16.3)
         
     | 
| 
         @@ -139,7 +139,6 @@ GEM 
     | 
|
| 
       139 
139 
     | 
    
         
             
                marcel (1.0.4)
         
     | 
| 
       140 
140 
     | 
    
         
             
                method_source (1.0.0)
         
     | 
| 
       141 
141 
     | 
    
         
             
                mini_mime (1.1.5)
         
     | 
| 
       142 
     | 
    
         
            -
                mini_portile2 (2.8.6)
         
     | 
| 
       143 
142 
     | 
    
         
             
                minitest (5.22.3)
         
     | 
| 
       144 
143 
     | 
    
         
             
                multi_xml (0.6.0)
         
     | 
| 
       145 
144 
     | 
    
         
             
                mutex_m (0.2.0)
         
     | 
| 
         @@ -153,8 +152,7 @@ GEM 
     | 
|
| 
       153 
152 
     | 
    
         
             
                net-smtp (0.5.0)
         
     | 
| 
       154 
153 
     | 
    
         
             
                  net-protocol
         
     | 
| 
       155 
154 
     | 
    
         
             
                nio4r (2.7.1)
         
     | 
| 
       156 
     | 
    
         
            -
                nokogiri (1.15.6)
         
     | 
| 
       157 
     | 
    
         
            -
                  mini_portile2 (~> 2.8.2)
         
     | 
| 
      
 155 
     | 
    
         
            +
                nokogiri (1.15.6-x86_64-linux)
         
     | 
| 
       158 
156 
     | 
    
         
             
                  racc (~> 1.4)
         
     | 
| 
       159 
157 
     | 
    
         
             
                pry (0.14.1)
         
     | 
| 
       160 
158 
     | 
    
         
             
                  coderay (~> 1.1)
         
     | 
| 
         @@ -2,7 +2,7 @@ require_dependency "app_manager/application_controller" 
     | 
|
| 
       2 
2 
     | 
    
         
             
            module AppManager
         
     | 
| 
       3 
3 
     | 
    
         
             
              class ChargesController < ApplicationController
         
     | 
| 
       4 
4 
     | 
    
         
             
                include HTTParty
         
     | 
| 
       5 
     | 
    
         
            -
                skip_before_action :verify_authenticity_token, :only => [:process_plan]
         
     | 
| 
      
 5 
     | 
    
         
            +
                skip_before_action :verify_authenticity_token, :only => [:process_plan,:activate_global,:cancel_charge,:cancel_global]
         
     | 
| 
       6 
6 
     | 
    
         
             
                before_action :params_permit
         
     | 
| 
       7 
7 
     | 
    
         
             
                require 'time'
         
     | 
| 
       8 
8 
     | 
    
         
             
                require 'rack'
         
     | 
| 
         @@ -140,7 +140,7 @@ module AppManager 
     | 
|
| 
       140 
140 
     | 
    
         | 
| 
       141 
141 
     | 
    
         
             
                            begin
         
     | 
| 
       142 
142 
     | 
    
         
             
                              plan_obj = AppManager::Client.new
         
     | 
| 
       143 
     | 
    
         
            -
                              if params[:discount].present? && !params[:discount].nil? && params[:discount] != '0'
         
     | 
| 
      
 143 
     | 
    
         
            +
                              if params[:discount].present? && !params[:discount].nil? && params[:discount] != '0' && !plan['is_global']
         
     | 
| 
       144 
144 
     | 
    
         
             
                                discounted_plans = plan_obj.get_related_discounted_plans(params[:discount])
         
     | 
| 
       145 
145 
     | 
    
         
             
                                if discounted_plans.empty? || discounted_plans.include?(params[:plan].to_i)
         
     | 
| 
       146 
146 
     | 
    
         
             
                                  plan_obj.discount_used(@shop[shopify_domain], params[:discount])
         
     | 
| 
         @@ -191,6 +191,71 @@ module AppManager 
     | 
|
| 
       191 
191 
     | 
    
         
             
                  end
         
     | 
| 
       192 
192 
     | 
    
         
             
                end
         
     | 
| 
       193 
193 
     | 
    
         | 
| 
      
 194 
     | 
    
         
            +
                def cancel_charge
         
     | 
| 
      
 195 
     | 
    
         
            +
                  if params[:charge_id].present? && params[:shop].present?
         
     | 
| 
      
 196 
     | 
    
         
            +
                    @shop = shop_data
         
     | 
| 
      
 197 
     | 
    
         
            +
                    shopify_token = @field_names['shopify_token']
         
     | 
| 
      
 198 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 199 
     | 
    
         
            +
                      gq_obj = AppManager::GraphqlHelper.new(@shop[@shopify_domain], @shop[shopify_token])
         
     | 
| 
      
 200 
     | 
    
         
            +
                      rec_cancel_data = gq_obj.recurring_charge_cancel_api_call(params[:charge_id], @shop)
         
     | 
| 
      
 201 
     | 
    
         
            +
                    rescue Exception => e
         
     | 
| 
      
 202 
     | 
    
         
            +
                      Rollbar.error("APP MANAGER Cancel Plan Failed #{e.inspect}-#{e.backtrace}")
         
     | 
| 
      
 203 
     | 
    
         
            +
                    end
         
     | 
| 
      
 204 
     | 
    
         
            +
                  end
         
     | 
| 
      
 205 
     | 
    
         
            +
                  head :ok
         
     | 
| 
      
 206 
     | 
    
         
            +
                end
         
     | 
| 
      
 207 
     | 
    
         
            +
             
     | 
| 
      
 208 
     | 
    
         
            +
                def activate_global
         
     | 
| 
      
 209 
     | 
    
         
            +
                  if params[:shop].present? && params[:plan_id].present?
         
     | 
| 
      
 210 
     | 
    
         
            +
                  @shop = shop_data
         
     | 
| 
      
 211 
     | 
    
         
            +
                  grandfathered_field = @field_names['grandfathered']
         
     | 
| 
      
 212 
     | 
    
         
            +
                  trial_activated_field = @field_names['trial_activated_at']
         
     | 
| 
      
 213 
     | 
    
         
            +
                  if !@shop.nil?
         
     | 
| 
      
 214 
     | 
    
         
            +
                    plan_obj = AppManager::Client.new
         
     | 
| 
      
 215 
     | 
    
         
            +
                    plan_data = plan_obj.get_plan(params[:plan_id], params[:shop])
         
     | 
| 
      
 216 
     | 
    
         
            +
                    update_info = {@plan_field => params[:plan_id], trial_activated_field => nil,grandfathered_field => 0}
         
     | 
| 
      
 217 
     | 
    
         
            +
                    if !config_trial_days.nil? && !plan_data.nil?
         
     | 
| 
      
 218 
     | 
    
         
            +
                      trial_days = plan_data['trial_days'] || 0
         
     | 
| 
      
 219 
     | 
    
         
            +
                      update_info[config_trial_days] = trial_days
         
     | 
| 
      
 220 
     | 
    
         
            +
                    end
         
     | 
| 
      
 221 
     | 
    
         
            +
                    if @shop.update(update_info)
         
     | 
| 
      
 222 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 223 
     | 
    
         
            +
                        plan_data['shop_domain'] = params[:shop];
         
     | 
| 
      
 224 
     | 
    
         
            +
                        plan_data['old_plan'] = params[:old_plan] || nil;
         
     | 
| 
      
 225 
     | 
    
         
            +
                        AppManager::EventHandler.new('charge_created', {
         
     | 
| 
      
 226 
     | 
    
         
            +
                            "plan" => plan_data,
         
     | 
| 
      
 227 
     | 
    
         
            +
                            "charge" => nil,
         
     | 
| 
      
 228 
     | 
    
         
            +
                            "previous_charge" => nil,
         
     | 
| 
      
 229 
     | 
    
         
            +
                            "shopify_domain" => params[:shop]
         
     | 
| 
      
 230 
     | 
    
         
            +
                        })
         
     | 
| 
      
 231 
     | 
    
         
            +
                      rescue Exception => e
         
     | 
| 
      
 232 
     | 
    
         
            +
                        Rollbar.error("APP MANAGER Error in Activate Global plan  #{e.inspect}-#{e.backtrace}")
         
     | 
| 
      
 233 
     | 
    
         
            +
                      end
         
     | 
| 
      
 234 
     | 
    
         
            +
                      AppManager.clear_cache
         
     | 
| 
      
 235 
     | 
    
         
            +
                    end
         
     | 
| 
      
 236 
     | 
    
         
            +
                  end
         
     | 
| 
      
 237 
     | 
    
         
            +
                  render json: {'status' => true,'plan_type' => 'global_plan'} and return true
         
     | 
| 
      
 238 
     | 
    
         
            +
                  end
         
     | 
| 
      
 239 
     | 
    
         
            +
                end
         
     | 
| 
      
 240 
     | 
    
         
            +
             
     | 
| 
      
 241 
     | 
    
         
            +
                def cancel_global
         
     | 
| 
      
 242 
     | 
    
         
            +
                  if params[:shop].present?
         
     | 
| 
      
 243 
     | 
    
         
            +
                    @shop = shop_data
         
     | 
| 
      
 244 
     | 
    
         
            +
                    grandfathered_field = @field_names['grandfathered']
         
     | 
| 
      
 245 
     | 
    
         
            +
                    trial_activated_field = @field_names['trial_activated_at']
         
     | 
| 
      
 246 
     | 
    
         
            +
                    if !@shop.nil?
         
     | 
| 
      
 247 
     | 
    
         
            +
                      update_info = {@plan_field => nil, trial_activated_field => nil,grandfathered_field => 0}
         
     | 
| 
      
 248 
     | 
    
         
            +
                      if !config_trial_days.nil?
         
     | 
| 
      
 249 
     | 
    
         
            +
                        update_info[config_trial_days] = 0
         
     | 
| 
      
 250 
     | 
    
         
            +
                      end
         
     | 
| 
      
 251 
     | 
    
         
            +
                      @shop.update(update_info)
         
     | 
| 
      
 252 
     | 
    
         
            +
                      AppManager.clear_cache
         
     | 
| 
      
 253 
     | 
    
         
            +
                    end
         
     | 
| 
      
 254 
     | 
    
         
            +
                    render json: {'status' => true,'plan_type' => 'cancel_plan'} and return true
         
     | 
| 
      
 255 
     | 
    
         
            +
                  end
         
     | 
| 
      
 256 
     | 
    
         
            +
                end
         
     | 
| 
      
 257 
     | 
    
         
            +
             
     | 
| 
      
 258 
     | 
    
         
            +
             
     | 
| 
       194 
259 
     | 
    
         
             
                private
         
     | 
| 
       195 
260 
     | 
    
         | 
| 
       196 
261 
     | 
    
         
             
                def params_permit
         
     | 
| 
         @@ -20,6 +20,7 @@ module AppManager 
     | 
|
| 
       20 
20 
     | 
    
         
             
                  default_plan_id = nil
         
     | 
| 
       21 
21 
     | 
    
         
             
                  choose_later = false
         
     | 
| 
       22 
22 
     | 
    
         
             
                  trial_activated_at = nil
         
     | 
| 
      
 23 
     | 
    
         
            +
                  global_plan = nil
         
     | 
| 
       23 
24 
     | 
    
         
             
                  plan_obj = AppManager::Client.new
         
     | 
| 
       24 
25 
     | 
    
         
             
                  plans = []
         
     | 
| 
       25 
26 
     | 
    
         
             
                  if params[:shop_domain].present? && !AppManager.configuration.plan_features.nil?
         
     | 
| 
         @@ -32,7 +33,7 @@ module AppManager 
     | 
|
| 
       32 
33 
     | 
    
         
             
                        shopify_plan_field = AppManager.configuration.field_names['shopify_plan']
         
     | 
| 
       33 
34 
     | 
    
         
             
                        shopify_plan = @shop[shopify_plan_field] rescue nil
         
     | 
| 
       34 
35 
     | 
    
         
             
                        plan = plans && plans.any? && !active_plan_id_or_name.nil? ? (plans.find { |x| x["id"] == active_plan_id_or_name }.present? ? plans.find { |x| x["id"] == active_plan_id_or_name } : nil) : nil
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
      
 36 
     | 
    
         
            +
                        global_plan = plans&.find { |x| x["is_global"] == 1 or x["is_global"] == true }
         
     | 
| 
       36 
37 
     | 
    
         
             
                        @trial_activated_field = AppManager.configuration.field_names['trial_activated_at']
         
     | 
| 
       37 
38 
     | 
    
         
             
                        trial_activated_at = @shop[@trial_activated_field] rescue nil
         
     | 
| 
       38 
39 
     | 
    
         
             
                        active_charge = plan_obj.get_charge(params[:shop_domain])
         
     | 
| 
         @@ -72,11 +73,17 @@ module AppManager 
     | 
|
| 
       72 
73 
     | 
    
         
             
                    promotional_discount = plan_obj.get_promotional_discount(params[:shop_domain],discount_local_storage)
         
     | 
| 
       73 
74 
     | 
    
         
             
                    promotional_discount = [] if promotional_discount.class.to_s == "Hash" && promotional_discount.has_key?('status') && promotional_discount['status'] == 404
         
     | 
| 
       74 
75 
     | 
    
         
             
                  end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                  bundle_obj = AppManager::Client.new
         
     | 
| 
      
 78 
     | 
    
         
            +
                  app_bundle_data = bundle_obj.get_app_bundle_data
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
       75 
80 
     | 
    
         
             
                  response = {
         
     | 
| 
       76 
81 
     | 
    
         
             
                      'plans' => plans,
         
     | 
| 
       77 
82 
     | 
    
         
             
                      'promotional_discount' => promotional_discount,
         
     | 
| 
       78 
83 
     | 
    
         
             
                      'shopify_plan' => shopify_plan,
         
     | 
| 
       79 
84 
     | 
    
         
             
                      'plan' => plan,
         
     | 
| 
      
 85 
     | 
    
         
            +
                      'bundle_plan' => global_plan,
         
     | 
| 
      
 86 
     | 
    
         
            +
                      'bundle_details' => app_bundle_data,
         
     | 
| 
       80 
87 
     | 
    
         
             
                      'default_plan_id' => default_plan_id,
         
     | 
| 
       81 
88 
     | 
    
         
             
                      'choose_later' => choose_later,
         
     | 
| 
       82 
89 
     | 
    
         
             
                      'has_active_charge' => (((active_charge && active_charge.any? && !active_charge['active_charge'].nil?) or !trial_activated_at) ? true : false) 
         
     | 
    
        data/config/routes.rb
    CHANGED
    
    | 
         @@ -11,6 +11,11 @@ AppManager::Engine.routes.draw do 
     | 
|
| 
       11 
11 
     | 
    
         
             
                 get 'plan/process/:plan_id' => 'charges#process_plan'
         
     | 
| 
       12 
12 
     | 
    
         
             
                 get 'plan/callback' => 'charges#callback', as: :plan_callback
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
                 post 'cancel-charge' => 'charges#cancel_charge'
         
     | 
| 
      
 15 
     | 
    
         
            +
            		 post 'plan/activate-global' => 'charges#activate_global'
         
     | 
| 
      
 16 
     | 
    
         
            +
            		 post 'plan/cancel-global' => 'charges#cancel_global'
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
       14 
19 
     | 
    
         
             
            		scope 'app-manager-api' do
         
     | 
| 
       15 
20 
     | 
    
         
             
            			post 'store-charge' => 'plans#store_charge'
         
     | 
| 
       16 
21 
     | 
    
         
             
            		end
         
     | 
| 
         @@ -37,7 +37,7 @@ module AppManager 
     | 
|
| 
       37 
37 
     | 
    
         
             
                  end
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
                  def cache_path
         
     | 
| 
       40 
     | 
    
         
            -
                    @cache_path = "app-manager-cache"
         
     | 
| 
      
 40 
     | 
    
         
            +
                    @cache_path = "app-manager-cache/#{ENV['SHOPIFY_APP_SLUG']}"
         
     | 
| 
       41 
41 
     | 
    
         
             
                    if @options[:cache_path].present?
         
     | 
| 
       42 
42 
     | 
    
         
             
                      @cache_path = "#{@cache_path}#{@options[:cache_path]}"
         
     | 
| 
       43 
43 
     | 
    
         
             
                    elsif AppManager.configuration.refresh_by_request_params?
         
     | 
| 
         @@ -24,7 +24,7 @@ module AppManager 
     | 
|
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
                  def request(http_method, path, options)
         
     | 
| 
       26 
26 
     | 
    
         
             
                      failsafe_or_caching_done = false
         
     | 
| 
       27 
     | 
    
         
            -
                      if http_method.to_s == 'get' && !path.include?("/get-status") && !path.include?("/sync-charge")
         
     | 
| 
      
 27 
     | 
    
         
            +
                      if http_method.to_s == 'get' && !path.include?("/get-status") && !path.include?("/sync-charge") && AppManager.configuration.enable_caching
         
     | 
| 
       28 
28 
     | 
    
         
             
                      response = response_from_cache_for_api(http_method, path, options)
         
     | 
| 
       29 
29 
     | 
    
         
             
                      failsafe_or_caching_done = true
         
     | 
| 
       30 
30 
     | 
    
         
             
                      else
         
     | 
| 
         @@ -69,7 +69,8 @@ module AppManager 
     | 
|
| 
       69 
69 
     | 
    
         
             
                   end
         
     | 
| 
       70 
70 
     | 
    
         | 
| 
       71 
71 
     | 
    
         
             
                  def response_from_cache_for_api(http_method, path, options)
         
     | 
| 
       72 
     | 
    
         
            -
                     
     | 
| 
      
 72 
     | 
    
         
            +
                    Rails.logger.info "Caching data enabled >>>>>>>>>>>>>>>>>>>>>>>>"
         
     | 
| 
      
 73 
     | 
    
         
            +
                    cache_key = "app-manager-cache/#{ENV['SHOPIFY_APP_SLUG']}/#{path}"
         
     | 
| 
       73 
74 
     | 
    
         
             
                    if fetch_static_cached_response(cache_key).present?
         
     | 
| 
       74 
75 
     | 
    
         
             
                      return fetch_static_cached_response(cache_key)
         
     | 
| 
       75 
76 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -133,6 +134,10 @@ module AppManager 
     | 
|
| 
       133 
134 
     | 
    
         
             
                      return @fs.store_discount_used(params,options)
         
     | 
| 
       134 
135 
     | 
    
         
             
                    when 'get-related-discounted-plans'
         
     | 
| 
       135 
136 
     | 
    
         
             
                      return @fs.get_local_related_discounted_plans(params,options)
         
     | 
| 
      
 137 
     | 
    
         
            +
                    when 'app-bundle-data'
         
     | 
| 
      
 138 
     | 
    
         
            +
                      return []
         
     | 
| 
      
 139 
     | 
    
         
            +
                    when 'activate-global-plan'
         
     | 
| 
      
 140 
     | 
    
         
            +
                      return nil
         
     | 
| 
       136 
141 
     | 
    
         
             
                    else
         
     | 
| 
       137 
142 
     | 
    
         
             
                     return nil
         
     | 
| 
       138 
143 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -43,6 +43,14 @@ module AppManager 
     | 
|
| 
       43 
43 
     | 
    
         
             
                    get("/has-plan?shop_domain=#{shop_domain}&plan_id=#{plan_id}&trial_activated_at=#{trial_activated_at}&grandfathered=#{grandfathered}")
         
     | 
| 
       44 
44 
     | 
    
         
             
                  end
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
      
 46 
     | 
    
         
            +
                  def get_app_bundle_data
         
     | 
| 
      
 47 
     | 
    
         
            +
                    get("/app-bundle-data")
         
     | 
| 
      
 48 
     | 
    
         
            +
                  end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                  def check_and_activate_global_plan(shop_domain)
         
     | 
| 
      
 51 
     | 
    
         
            +
                    get("/activate-global-plan?shop_domain=#{shop_domain}")
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
       46 
54 
     | 
    
         
             
                  def get_promotional_discount(shop_domain = nil,code)
         
     | 
| 
       47 
55 
     | 
    
         
             
                    get("/discount?shop_domain=#{shop_domain}&code=#{code}")
         
     | 
| 
       48 
56 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -94,7 +94,7 @@ module AppManager 
     | 
|
| 
       94 
94 
     | 
    
         
             
                    discount_type = plan['discount_type'] || "percentage"
         
     | 
| 
       95 
95 
     | 
    
         
             
                    discount_val = discount_type == "percentage" ? (plan['discount'].to_f/ 100) : "#{plan['discount']}"
         
     | 
| 
       96 
96 
     | 
    
         
             
                    if !@api_version.nil? && @api_version.to_s.include?('2024')
         
     | 
| 
       97 
     | 
    
         
            -
                      plan_discount = if plan['discount'] && plan['cycle_count']
         
     | 
| 
      
 97 
     | 
    
         
            +
                      plan_discount = if plan['discount'] && plan['cycle_count'] && plan['cycle_count'].to_i != 0
         
     | 
| 
       98 
98 
     | 
    
         
             
                                        {
         
     | 
| 
       99 
99 
     | 
    
         
             
                                            "discount" => { "durationLimitInIntervals" => (plan['cycle_count'].to_i),
         
     | 
| 
       100 
100 
     | 
    
         
             
                                                            "value" => {"#{discount_type}" => discount_val}
         
     | 
| 
         @@ -115,7 +115,7 @@ module AppManager 
     | 
|
| 
       115 
115 
     | 
    
         | 
| 
       116 
116 
     | 
    
         
             
                    if promotional_discount.any?
         
     | 
| 
       117 
117 
     | 
    
         | 
| 
       118 
     | 
    
         
            -
                      if promotional_discount['plan_relation'].any? && !promotional_discount['plan_relation'].include?(plan['id'])
         
     | 
| 
      
 118 
     | 
    
         
            +
                      if promotional_discount['plan_relation'].any? && !promotional_discount['plan_relation'].include?(plan['id']) && plan['is_global']
         
     | 
| 
       119 
119 
     | 
    
         
             
                        plan_discount = {}
         
     | 
| 
       120 
120 
     | 
    
         
             
                      else
         
     | 
| 
       121 
121 
     | 
    
         | 
    
        data/lib/app_manager/model.rb
    CHANGED
    
    | 
         @@ -403,7 +403,7 @@ module AppManager 
     | 
|
| 
       403 
403 
     | 
    
         | 
| 
       404 
404 
     | 
    
         | 
| 
       405 
405 
     | 
    
         
             
                def fetch_static_remaining_days
         
     | 
| 
       406 
     | 
    
         
            -
                  @remaining_cache_key = "app-manager-cache/#{self.shopify_domain}-remaining_days"
         
     | 
| 
      
 406 
     | 
    
         
            +
                  @remaining_cache_key = "app-manager-cache/#{ENV['SHOPIFY_APP_SLUG']}/#{self.shopify_domain}-remaining_days"
         
     | 
| 
       407 
407 
     | 
    
         
             
                  if fetch_cached_static_remaining_days(@remaining_cache_key).present?
         
     | 
| 
       408 
408 
     | 
    
         
             
                    return fetch_cached_static_remaining_days(@remaining_cache_key)
         
     | 
| 
       409 
409 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -420,7 +420,7 @@ module AppManager 
     | 
|
| 
       420 
420 
     | 
    
         | 
| 
       421 
421 
     | 
    
         | 
| 
       422 
422 
     | 
    
         
             
                def fetch_static_get_charge
         
     | 
| 
       423 
     | 
    
         
            -
                  @get_charge_key = "app-manager-cache/#{self.shopify_domain}-get_charge"
         
     | 
| 
      
 423 
     | 
    
         
            +
                  @get_charge_key = "app-manager-cache/#{ENV['SHOPIFY_APP_SLUG']}/#{self.shopify_domain}-get_charge"
         
     | 
| 
       424 
424 
     | 
    
         
             
                  if fetch_cached_static_get_charge(@get_charge_key).present?
         
     | 
| 
       425 
425 
     | 
    
         
             
                    return fetch_cached_static_get_charge(@get_charge_key)
         
     | 
| 
       426 
426 
     | 
    
         
             
                  end
         
     | 
    
        data/lib/app_manager/version.rb
    CHANGED
    
    
    
        data/lib/app_manager.rb
    CHANGED
    
    | 
         @@ -28,7 +28,8 @@ module AppManager 
     | 
|
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
              def self.clear_cache
         
     | 
| 
       30 
30 
     | 
    
         
             
              	begin
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
      
 31 
     | 
    
         
            +
                  Rails.cache.delete_matched("app-manager-cache/*")
         
     | 
| 
      
 32 
     | 
    
         
            +
              		Rails.cache.delete_matched("app-manager-cache/#{ENV['SHOPIFY_APP_SLUG']}/*")
         
     | 
| 
       32 
33 
     | 
    
         
             
                rescue Exception => e
         
     | 
| 
       33 
34 
     | 
    
         
             
                  Rollbar.error("APP MANAGER Error in Clear Cache #{e}")
         
     | 
| 
       34 
35 
     | 
    
         
             
              	end
         
     | 
| 
         @@ -47,6 +47,14 @@ module AppManager 
     | 
|
| 
       47 
47 
     | 
    
         
             
                    end
         
     | 
| 
       48 
48 
     | 
    
         
             
                  end
         
     | 
| 
       49 
49 
     | 
    
         | 
| 
      
 50 
     | 
    
         
            +
                  def create_global_field_to_plans_migration
         
     | 
| 
      
 51 
     | 
    
         
            +
                    if self.class.migration_exists?("db/app_manager", "add_is_global_to_plans")
         
     | 
| 
      
 52 
     | 
    
         
            +
                      say_status("skipped", "Migration add_is_global_to_plans.rb already exists")
         
     | 
| 
      
 53 
     | 
    
         
            +
                    else
         
     | 
| 
      
 54 
     | 
    
         
            +
                      migration_template("add_is_global_to_plans.erb", "db/app_manager/add_is_global_to_plans.rb")
         
     | 
| 
      
 55 
     | 
    
         
            +
                    end
         
     | 
| 
      
 56 
     | 
    
         
            +
                  end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
       50 
58 
     | 
    
         | 
| 
       51 
59 
     | 
    
         
             
                  private
         
     | 
| 
       52 
60 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: app_manager
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.3.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Rahul Tiwari @ Hulkapps
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2024- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2024-08-19 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: httparty
         
     | 
| 
         @@ -125,6 +125,7 @@ files: 
     | 
|
| 
       125 
125 
     | 
    
         
             
            - lib/generators/app_manager/install/install_generator.rb
         
     | 
| 
       126 
126 
     | 
    
         
             
            - lib/generators/app_manager/install/templates/add_discount_tables.erb
         
     | 
| 
       127 
127 
     | 
    
         
             
            - lib/generators/app_manager/install/templates/add_external_charge_field.erb
         
     | 
| 
      
 128 
     | 
    
         
            +
            - lib/generators/app_manager/install/templates/add_is_global_to_plans.erb
         
     | 
| 
       128 
129 
     | 
    
         
             
            - lib/generators/app_manager/install/templates/add_plan_trial_grandfathered_to_shops.erb
         
     | 
| 
       129 
130 
     | 
    
         
             
            - lib/generators/app_manager/install/templates/app_manager.rb.tt
         
     | 
| 
       130 
131 
     | 
    
         
             
            - lib/generators/app_manager/install/templates/failsafe_tables.erb
         
     |