app_manager 1.6.0 → 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2fd3e056fce2196e44c5eb349cd910cf80a7d94bac2530a957c88bb3c5799685
4
- data.tar.gz: 80ae23cafeb5680a542e3abe6050b9663e3407c395a0f293aea0b4815575ef17
3
+ metadata.gz: bf415f568160cb4d0f964d01a39022df2906cd0cce3f5511f1a3f2fc19fe1155
4
+ data.tar.gz: fe3d01cf07acc3346a00f43723a016d86884a1fc01820b882de0462a6d92ecec
5
5
  SHA512:
6
- metadata.gz: a3fc7ee4d7b213c658229d352234a4d43732fd8adc25685e58f3e16bceec6384b8c7dab4b51974c89cf59eba4ce6781aad7afa1638a41f20207957a08b937cd8
7
- data.tar.gz: f1a631d14d3ef1633a773bff3a5bbda2b93f612703086caec1fddf36a2cf2901154422ccbd7ff17badc38de59e9f5ece5ce883b90b9b8b20b20988655265807a
6
+ metadata.gz: 1d2884af860d6872fa7e434574743219b8f8ca6cba0fa186c7ce05f5383c68cb4323ceff6d5c0bf984fbdc6231939a81005fdad0f500efeb56c8888ecfc86e67
7
+ data.tar.gz: 00ade8b2e4e6a9160a8c8e445d8693b39b79ffe649dedde189fa83856e9876d06d8bdfa7963a87010da4f268c0ccfdbf34fc096f665929db79db2ecb38e80d14
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- app_manager (1.6.0)
4
+ app_manager (1.6.1)
5
5
  activerecord-import (~> 1.4)
6
6
  httparty
7
7
  kaminari (>= 0.16.3)
@@ -10,69 +10,69 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- actioncable (7.0.4.2)
14
- actionpack (= 7.0.4.2)
15
- activesupport (= 7.0.4.2)
13
+ actioncable (7.0.4.3)
14
+ actionpack (= 7.0.4.3)
15
+ activesupport (= 7.0.4.3)
16
16
  nio4r (~> 2.0)
17
17
  websocket-driver (>= 0.6.1)
18
- actionmailbox (7.0.4.2)
19
- actionpack (= 7.0.4.2)
20
- activejob (= 7.0.4.2)
21
- activerecord (= 7.0.4.2)
22
- activestorage (= 7.0.4.2)
23
- activesupport (= 7.0.4.2)
18
+ actionmailbox (7.0.4.3)
19
+ actionpack (= 7.0.4.3)
20
+ activejob (= 7.0.4.3)
21
+ activerecord (= 7.0.4.3)
22
+ activestorage (= 7.0.4.3)
23
+ activesupport (= 7.0.4.3)
24
24
  mail (>= 2.7.1)
25
25
  net-imap
26
26
  net-pop
27
27
  net-smtp
28
- actionmailer (7.0.4.2)
29
- actionpack (= 7.0.4.2)
30
- actionview (= 7.0.4.2)
31
- activejob (= 7.0.4.2)
32
- activesupport (= 7.0.4.2)
28
+ actionmailer (7.0.4.3)
29
+ actionpack (= 7.0.4.3)
30
+ actionview (= 7.0.4.3)
31
+ activejob (= 7.0.4.3)
32
+ activesupport (= 7.0.4.3)
33
33
  mail (~> 2.5, >= 2.5.4)
34
34
  net-imap
35
35
  net-pop
36
36
  net-smtp
37
37
  rails-dom-testing (~> 2.0)
38
- actionpack (7.0.4.2)
39
- actionview (= 7.0.4.2)
40
- activesupport (= 7.0.4.2)
38
+ actionpack (7.0.4.3)
39
+ actionview (= 7.0.4.3)
40
+ activesupport (= 7.0.4.3)
41
41
  rack (~> 2.0, >= 2.2.0)
42
42
  rack-test (>= 0.6.3)
43
43
  rails-dom-testing (~> 2.0)
44
44
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
45
- actiontext (7.0.4.2)
46
- actionpack (= 7.0.4.2)
47
- activerecord (= 7.0.4.2)
48
- activestorage (= 7.0.4.2)
49
- activesupport (= 7.0.4.2)
45
+ actiontext (7.0.4.3)
46
+ actionpack (= 7.0.4.3)
47
+ activerecord (= 7.0.4.3)
48
+ activestorage (= 7.0.4.3)
49
+ activesupport (= 7.0.4.3)
50
50
  globalid (>= 0.6.0)
51
51
  nokogiri (>= 1.8.5)
52
- actionview (7.0.4.2)
53
- activesupport (= 7.0.4.2)
52
+ actionview (7.0.4.3)
53
+ activesupport (= 7.0.4.3)
54
54
  builder (~> 3.1)
55
55
  erubi (~> 1.4)
56
56
  rails-dom-testing (~> 2.0)
57
57
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
58
- activejob (7.0.4.2)
59
- activesupport (= 7.0.4.2)
58
+ activejob (7.0.4.3)
59
+ activesupport (= 7.0.4.3)
60
60
  globalid (>= 0.3.6)
61
- activemodel (7.0.4.2)
62
- activesupport (= 7.0.4.2)
63
- activerecord (7.0.4.2)
64
- activemodel (= 7.0.4.2)
65
- activesupport (= 7.0.4.2)
61
+ activemodel (7.0.4.3)
62
+ activesupport (= 7.0.4.3)
63
+ activerecord (7.0.4.3)
64
+ activemodel (= 7.0.4.3)
65
+ activesupport (= 7.0.4.3)
66
66
  activerecord-import (1.4.1)
67
67
  activerecord (>= 4.2)
68
- activestorage (7.0.4.2)
69
- actionpack (= 7.0.4.2)
70
- activejob (= 7.0.4.2)
71
- activerecord (= 7.0.4.2)
72
- activesupport (= 7.0.4.2)
68
+ activestorage (7.0.4.3)
69
+ actionpack (= 7.0.4.3)
70
+ activejob (= 7.0.4.3)
71
+ activerecord (= 7.0.4.3)
72
+ activesupport (= 7.0.4.3)
73
73
  marcel (~> 1.0)
74
74
  mini_mime (>= 1.1.0)
75
- activesupport (7.0.4.2)
75
+ activesupport (7.0.4.3)
76
76
  concurrent-ruby (~> 1.0, >= 1.0.2)
77
77
  i18n (>= 1.6, < 2)
78
78
  minitest (>= 5.1)
@@ -81,7 +81,7 @@ GEM
81
81
  public_suffix (>= 2.0.2, < 5.0)
82
82
  builder (3.2.4)
83
83
  coderay (1.1.3)
84
- concurrent-ruby (1.2.0)
84
+ concurrent-ruby (1.2.2)
85
85
  crack (0.4.5)
86
86
  rexml
87
87
  crass (1.0.6)
@@ -121,7 +121,7 @@ GEM
121
121
  method_source (1.0.0)
122
122
  mini_mime (1.1.2)
123
123
  mini_portile2 (2.8.1)
124
- minitest (5.17.0)
124
+ minitest (5.18.0)
125
125
  multi_xml (0.6.0)
126
126
  net-imap (0.3.4)
127
127
  date
@@ -133,7 +133,7 @@ GEM
133
133
  net-smtp (0.3.3)
134
134
  net-protocol
135
135
  nio4r (2.5.8)
136
- nokogiri (1.14.1)
136
+ nokogiri (1.14.2)
137
137
  mini_portile2 (~> 2.8.0)
138
138
  racc (~> 1.4)
139
139
  pry (0.14.1)
@@ -141,31 +141,31 @@ GEM
141
141
  method_source (~> 1.0)
142
142
  public_suffix (4.0.6)
143
143
  racc (1.6.2)
144
- rack (2.2.6.2)
145
- rack-test (2.0.2)
144
+ rack (2.2.6.4)
145
+ rack-test (2.1.0)
146
146
  rack (>= 1.3)
147
- rails (7.0.4.2)
148
- actioncable (= 7.0.4.2)
149
- actionmailbox (= 7.0.4.2)
150
- actionmailer (= 7.0.4.2)
151
- actionpack (= 7.0.4.2)
152
- actiontext (= 7.0.4.2)
153
- actionview (= 7.0.4.2)
154
- activejob (= 7.0.4.2)
155
- activemodel (= 7.0.4.2)
156
- activerecord (= 7.0.4.2)
157
- activestorage (= 7.0.4.2)
158
- activesupport (= 7.0.4.2)
147
+ rails (7.0.4.3)
148
+ actioncable (= 7.0.4.3)
149
+ actionmailbox (= 7.0.4.3)
150
+ actionmailer (= 7.0.4.3)
151
+ actionpack (= 7.0.4.3)
152
+ actiontext (= 7.0.4.3)
153
+ actionview (= 7.0.4.3)
154
+ activejob (= 7.0.4.3)
155
+ activemodel (= 7.0.4.3)
156
+ activerecord (= 7.0.4.3)
157
+ activestorage (= 7.0.4.3)
158
+ activesupport (= 7.0.4.3)
159
159
  bundler (>= 1.15.0)
160
- railties (= 7.0.4.2)
160
+ railties (= 7.0.4.3)
161
161
  rails-dom-testing (2.0.3)
162
162
  activesupport (>= 4.2.0)
163
163
  nokogiri (>= 1.6)
164
164
  rails-html-sanitizer (1.5.0)
165
165
  loofah (~> 2.19, >= 2.19.1)
166
- railties (7.0.4.2)
167
- actionpack (= 7.0.4.2)
168
- activesupport (= 7.0.4.2)
166
+ railties (7.0.4.3)
167
+ actionpack (= 7.0.4.3)
168
+ activesupport (= 7.0.4.3)
169
169
  method_source
170
170
  rake (>= 12.2)
171
171
  thor (~> 1.0)
@@ -188,7 +188,7 @@ GEM
188
188
  rspec-support (~> 3.11.0)
189
189
  rspec-support (3.11.0)
190
190
  thor (1.2.1)
191
- timeout (0.3.1)
191
+ timeout (0.3.2)
192
192
  tzinfo (2.0.6)
193
193
  concurrent-ruby (~> 1.0)
194
194
  webmock (3.14.0)
@@ -198,7 +198,7 @@ GEM
198
198
  websocket-driver (0.7.5)
199
199
  websocket-extensions (>= 0.1.0)
200
200
  websocket-extensions (0.1.5)
201
- zeitwerk (2.6.6)
201
+ zeitwerk (2.6.7)
202
202
 
203
203
  PLATFORMS
204
204
  ruby
data/README.md CHANGED
@@ -175,9 +175,11 @@ and then you can use follwing methods with your shop objects.
175
175
 
176
176
  if you pass @shop.get_plan(plan_id) it will return that particular plan hash like @shop.get_plan(311)
177
177
 
178
- @shop.get_charge # return current charge hash, it will return nil if current plan is free
178
+ @shop.get_charge # return current charge hash from app manager with 'active_charge' & 'cancelled_charge' keys, it will return nil if current plan is free
179
179
 
180
- @shop.set_default_plan(plan_id=nil) #if plan id is passed nil, then it will set the free(public and $0 price) to active and if passed it will set that plan to active plan
180
+ @shop.cancel_charge # it will cancel charge in app manager and will return success to true if done from app manager
181
+
182
+ @shop.set_default_plan(plan_id=nil) #if plan id is passed nil, then it will set the free(public and $0 price) plan_id in database and if passed it will set that plan_id in database.
181
183
 
182
184
  @shop.get_plans_by_features(feature_slugs) # pass feature_slugs as an array even if one slug and it will return plans array which have that slug found. Example:
183
185
 
@@ -193,12 +195,16 @@ and then you can use follwing methods with your shop objects.
193
195
 
194
196
  @shop.get_all_plans # return all app plans array
195
197
 
196
- @shop.active_shopify_charge_id # return active shopify charge id if shop has any current reccurring charge otherwise nil
197
-
198
198
  @shop.get_active_charge_app_manager # return active charge hash from app manager otherwise nil
199
199
 
200
200
  @shop.update_app_manager_charge # return true if shop has shopify recurring charge but app manager doesn't then it update to app manager and return true otherwise nil
201
201
 
202
+ @shop.get_current_shopify_charge # return active charge hash from shopify https://shopify.dev/docs/api/admin-graphql/2022-10/queries/currentAppInstallation otherwise nil
203
+
204
+ @shop.active_shopify_charge_id # return active shopify charge id if shop has any current shopify reccurring charge otherwise nil
205
+
206
+ @shop.cancel_current_shopify_charge # It will cancel charge in shopify if there is any, if success then it will cancel charge in app manager as well using (@shop.cancel_charge ) and will make plan_id and grandfathered field to false. It will clear cache as well.
207
+
202
208
  ```
203
209
 
204
210
 
@@ -16,15 +16,18 @@ module AppManager
16
16
  plan_data = plan_obj.get_plan(params[:plan_id], params[:shop])
17
17
  # render json: plan_data and return #use this to test plan failsafe api
18
18
  if plan_data.present? && plan_data.is_a?(Hash)
19
- if plan_data['price'] == 0
19
+ if plan_data['price'] == 0 && plan_data['is_external_charge'] == false
20
20
  active_charge_data = plan_obj.get_charge(params[:shop])
21
21
  begin
22
22
  if active_charge_data && active_charge_data.any? && !active_charge_data['active_charge'].nil? && !active_charge_data['active_charge']['charge_id'].nil?
23
23
  gq_obj = AppManager::GraphqlHelper.new(@shop.shopify_domain, @shop.shopify_token)
24
24
  rec_cancel_data = gq_obj.recurring_charge_cancel_api_call(active_charge_data['active_charge']['charge_id'], @shop)
25
25
  if !rec_cancel_data["errors"].present? && (rec_cancel_data["data"].present? && rec_cancel_data["data"]["appSubscriptionCancel"].present? && !rec_cancel_data["data"]["appSubscriptionCancel"]["userErrors"].any? && (rec_cancel_data["data"]["appSubscriptionCancel"]["appSubscription"]["status"] == 'CANCELLED'))
26
- cancelled_charge_id = rec_cancel_data["data"]["appSubscriptionCancel"]["appSubscription"]["id"].split('/')[-1]
27
- plan_obj.cancel_charge(params[:shop], cancelled_charge_id)
26
+ # cancelled_charge_id = rec_cancel_data["data"]["appSubscriptionCancel"]["appSubscription"]["id"].split('/')[-1]
27
+ shop_plan_id = @shop[AppManager.configuration.plan_id_or_name_field]
28
+ if !shop_plan_id.nil?
29
+ plan_obj.cancel_charge(params[:shop], shop_plan_id)
30
+ end
28
31
  end
29
32
  end
30
33
  rescue Exception => e
@@ -152,6 +152,41 @@ module AppManager
152
152
  end
153
153
  end
154
154
 
155
+ def cancel_current_shopify_charge
156
+ begin
157
+ @field_names = AppManager.configuration.field_names
158
+ shopify_active_charge_id = self.active_shopify_charge_id
159
+ if shopify_active_charge_id.present?
160
+ gq_obj = AppManager::GraphqlHelper.new(self.shopify_domain, self.shopify_token)
161
+ rec_cancel_data = gq_obj.recurring_charge_cancel_api_call(shopify_active_charge_id, self)
162
+ if !rec_cancel_data["errors"].present? && (rec_cancel_data["data"].present? && rec_cancel_data["data"]["appSubscriptionCancel"].present? && !rec_cancel_data["data"]["appSubscriptionCancel"]["userErrors"].any? && (rec_cancel_data["data"]["appSubscriptionCancel"]["appSubscription"]["status"] == 'CANCELLED'))
163
+ cancelled_charge_id = rec_cancel_data["data"]["appSubscriptionCancel"]["appSubscription"]["id"].split('/')[-1]
164
+ self.cancel_charge
165
+ grandfathered_field = @field_names['grandfathered']
166
+ update_info = {AppManager.configuration.plan_id_or_name_field => nil,grandfathered_field => false}
167
+ if self.update(update_info)
168
+ AppManager.clear_cache
169
+ end
170
+ end
171
+ end
172
+ rescue Exception => e
173
+ return "#{e.inspect}"
174
+ end
175
+ end
176
+
177
+ def get_current_shopify_charge
178
+ begin
179
+ gq_obj = AppManager::GraphqlHelper.new(self.shopify_domain, self.shopify_token)
180
+ data = gq_obj.recurring_charge_current_api_call(self)
181
+ if !data["errors"].present? && (data["data"].present? && data["data"]["currentAppInstallation"].present? && data["data"]["currentAppInstallation"]["activeSubscriptions"].present?)
182
+ return data["data"]["currentAppInstallation"]["activeSubscriptions"].first
183
+ end
184
+ rescue Exception => e
185
+ Rollbar.error("Warning in APP MANAGER, trying to get_current_shopify_charge >>>> #{e.inspect}")
186
+ return nil
187
+ end
188
+ end
189
+
155
190
  def get_active_charge_app_manager
156
191
  active_charge = self.get_charge rescue nil
157
192
  return active_charge && active_charge['active_charge'].present? && !active_charge['active_charge'].nil? ? active_charge['active_charge'] : nil
@@ -182,17 +217,16 @@ module AppManager
182
217
  end
183
218
  return charge_updated
184
219
  rescue Exception => e
185
- Rollbar.error("Warning in APP MANAGER, trying to get active shopify charge id >>>> #{e.inspect}")
220
+ Rollbar.error("Warning in APP MANAGER, trying to get update_app_manager_charge >>>> #{e.inspect}")
186
221
  return nil
187
222
  end
188
223
  end
189
224
 
190
225
  def active_shopify_charge_id
191
226
  begin
192
- gq_obj = AppManager::GraphqlHelper.new(self.shopify_domain, self.shopify_token)
193
- data = gq_obj.recurring_charge_current_api_call(self)
194
- if !data["errors"].present? && (data["data"].present? && data["data"]["currentAppInstallation"].present? && data["data"]["currentAppInstallation"]["activeSubscriptions"].present?)
195
- current_shopify_charge_id = data["data"]["currentAppInstallation"]["activeSubscriptions"].first["id"]
227
+ get_active_shopify_charge = self.get_current_shopify_charge
228
+ if get_active_shopify_charge.present? && !get_active_shopify_charge.nil?
229
+ current_shopify_charge_id = get_active_shopify_charge["id"]
196
230
  if current_shopify_charge_id
197
231
  return current_shopify_charge_id.split('/')[-1] rescue nil
198
232
  else
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppManager
4
- VERSION = "1.6.0"
4
+ VERSION = "1.6.1"
5
5
  end
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: 1.6.0
4
+ version: 1.6.1
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: 2023-02-08 00:00:00.000000000 Z
11
+ date: 2023-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty