disco_app 0.9.10 → 0.9.11

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: 6733d6f14a6a34189871a0255a65ca91527f864eb9e79ffff55e60aa4dc92a5d
4
- data.tar.gz: a2988c764253a7e52a6ee67d1d27d57443296dc5c38534697d736fcb39c6575f
3
+ metadata.gz: a0c6b01c549910c77034c7919306f6e56fa865539febeceabb830dafb962df79
4
+ data.tar.gz: b7d9a8d7fcd1c30edaa545ff5c90bf1fe52f7e9d9707d6ec627ac0865216bb3f
5
5
  SHA512:
6
- metadata.gz: 4a2f55c26a2f1bdb55825784a3eb35015c3cb5dc4999a28ba73f8ed7d8a12d482259c5675f70650f1b3530a259da29dba4a221d7df282c15df721981a5a8bd7d
7
- data.tar.gz: f7205e93ab775c08e91a692874e84bd5914f2db122e73123862c88b2854dec7b98f72cac97d7e2f9f6c65d05e67d3ec03e346a5e9d59e9aef07732b1e1819574
6
+ metadata.gz: ead80f00f63df3bda1d53c3e5a64c4677f6fe638b7b346435d19d649e81bb3d87bf9a4a7adc16216993bbf3705c2b2e2308698747e1cf34afcb54b4846f4f16a
7
+ data.tar.gz: 3b9cc45b96bf4a34a48a8b11369f70bbaf0b216c95c1447b951388c5ef68ee46d52f1bd5e23cd9a5a2579853790b02a074e2d5312f070960214de1441a1fcd99
@@ -270,16 +270,31 @@ RulesEditor.EQUALS_STRING = {
270
270
  relation: 'is_equal_to',
271
271
  type: 'text'
272
272
  };
273
+ RulesEditor.NOT_EQUALS_STRING = {
274
+ label: 'is not equal to',
275
+ relation: 'is_not_equal_to',
276
+ type: 'text'
277
+ };
273
278
  RulesEditor.EQUALS_COUNTRY_CODE = {
274
279
  label: 'is equal to',
275
280
  relation: 'is_equal_to',
276
281
  type: 'country_code'
277
282
  };
283
+ RulesEditor.NOT_EQUALS_COUNTRY_CODE = {
284
+ label: 'is not equal to',
285
+ relation: 'is_not_equal_to',
286
+ type: 'country_code'
287
+ };
278
288
  RulesEditor.CONTAINS_STRING = {
279
289
  label: 'contains',
280
290
  relation: 'contains_string',
281
291
  type: 'text'
282
292
  };
293
+ RulesEditor.DOES_NOT_CONTAIN_STRING = {
294
+ label: 'does not contain',
295
+ relation: 'does_not_contain_string',
296
+ type: 'text'
297
+ };
283
298
  RulesEditor.EQUALS_TAG = {
284
299
  label: 'is equal to',
285
300
  relation: 'find_in_set',
@@ -1,11 +1,12 @@
1
- const Button = ({ children, disabled, onClick }) => {
1
+ const Button = ({ children, disabled, name=false, onClick = ()=>{}, primary = false, type = 'button' }) => {
2
2
 
3
3
  const className = classNames({
4
- 'btn': true
4
+ 'btn': true,
5
+ 'btn-primary': primary
5
6
  });
6
7
 
7
8
  return(
8
- <button type="button" disabled={disabled} className={className} onClick={onClick}>
9
+ <button type={type} name={name} disabled={disabled} className={className} onClick={onClick}>
9
10
  {children}
10
11
  </button>
11
12
  )
@@ -0,0 +1,30 @@
1
+ const InputCheckbox = ({ label, name, value, checked, inline, isLast, onChange }) => {
2
+
3
+ const id = `${name}[${value}]`;
4
+
5
+ const wrapperClassName = classNames({
6
+ 'next-input-wrapper': true,
7
+ 'inline': inline,
8
+ 'sr': !isLast
9
+ });
10
+
11
+ const labelClassName = classNames({
12
+ 'next-label': true,
13
+ 'next-label--switch': true,
14
+ 'inline': inline,
15
+ 'fw-normal': inline
16
+ });
17
+
18
+ const handleChange = (e) => {
19
+ onChange && onChange(e.target.value);
20
+ };
21
+
22
+ return(
23
+ <div className={wrapperClassName}>
24
+ <label htmlFor={id} className={labelClassName}>{label}</label>
25
+ <input id={id} className="next-checkbox" type="checkbox" value={value} name={name} checked={checked} onChange={handleChange} />
26
+ <span className="next-checkbox--styled" />
27
+ </div>
28
+ )
29
+
30
+ };
@@ -14,7 +14,7 @@ class InputText extends BaseInput {
14
14
  });
15
15
 
16
16
  const handleChange = (e) => {
17
- onChange(e.target.value);
17
+ onChange && onChange(e.target.value);
18
18
  };
19
19
 
20
20
  let helpElement = null;
@@ -6,10 +6,10 @@ module DiscoApp
6
6
  def process_webhook
7
7
  # Get the topic and domain for this webhook.
8
8
  topic = request.headers['HTTP_X_SHOPIFY_TOPIC']
9
- domain = request.headers['HTTP_X_SHOPIFY_SHOP_DOMAIN']
9
+ shopify_domain = request.headers['HTTP_X_SHOPIFY_SHOP_DOMAIN']
10
10
 
11
11
  # Ensure a domain was provided in the headers.
12
- unless domain
12
+ unless shopify_domain
13
13
  head :bad_request
14
14
  end
15
15
 
@@ -23,7 +23,7 @@ module DiscoApp
23
23
 
24
24
  # Decode the body data and enqueue the appropriate job.
25
25
  data = ActiveSupport::JSON::decode(request.body.read).with_indifferent_access
26
- job_class.perform_later(domain, data)
26
+ job_class.perform_later(shopify_domain, data)
27
27
 
28
28
  render nothing: true
29
29
  end
@@ -12,7 +12,7 @@ module DiscoApp::Concerns::AppUninstalledJob
12
12
  # - Mark any recurring application charges as cancelled.
13
13
  # - Remove any stored sessions for the shop.
14
14
  #
15
- def perform(domain, shop_data)
15
+ def perform(shop, shop_data)
16
16
  DiscoApp::ChargesService.cancel_recurring_charges(@shop)
17
17
  @shop.sessions.delete_all
18
18
  end
@@ -7,7 +7,7 @@ module DiscoApp::Concerns::CanBeLiquified
7
7
 
8
8
  # Return this model as an array of Liquid {% assign %} statements.
9
9
  def as_liquid
10
- as_json.map { |k, v| "{% assign #{liquid_model_name}_#{k} = #{as_liquid_value(v)} %}" }
10
+ as_json.map { |k, v| "{% assign #{liquid_model_name}_#{k} = #{as_liquid_value(k, v)} %}" }
11
11
  end
12
12
 
13
13
  # Render this model as a series of concatenated Liquid {% assign %} statements.
@@ -24,17 +24,20 @@ module DiscoApp::Concerns::CanBeLiquified
24
24
  private
25
25
 
26
26
  # Return given value as a string expression that will be evaluated in Liquid to result in the correct value type.
27
- def as_liquid_value(value)
27
+ def as_liquid_value(key, value)
28
28
  if value.is_a? Numeric or (!!value == value)
29
29
  return value.to_s
30
30
  end
31
31
  if value.nil?
32
- return "nil"
32
+ return 'nil'
33
33
  end
34
34
  if value.is_a? Array
35
- return "\"#{value.map { |e| (e.is_a? String) ? CGI::escapeHTML(e) : e }.join(SPLIT_ARRAY_SEPARATOR)}\" | split: \"#{SPLIT_ARRAY_SEPARATOR}\""
35
+ return "'#{value.map { |e| (e.is_a? String) ? CGI::escapeHTML(e) : e }.join(SPLIT_ARRAY_SEPARATOR)}' | split: '#{SPLIT_ARRAY_SEPARATOR}'"
36
36
  end
37
- "\"#{CGI::escapeHTML(value.to_s)}\""
37
+ if value.is_a? String and key.end_with? '_html'
38
+ return "'#{value.to_s.gsub("'", "&#39;")}'"
39
+ end
40
+ "'#{CGI::escapeHTML(value.to_s)}'"
38
41
  end
39
42
 
40
43
  end
@@ -1,3 +1,3 @@
1
1
  module DiscoApp
2
- VERSION = '0.9.10'
2
+ VERSION = '0.9.11'
3
3
  end
@@ -30,7 +30,7 @@ class DiscoAppGenerator < Rails::Generators::Base
30
30
  gem 'shopify_app', '~> 6.4.1'
31
31
  gem 'sidekiq', '~> 4.0.2'
32
32
  gem 'puma', '~> 2.14.0'
33
- gem 'activerecord-session_store', '~> 0.1.2'
33
+ gem 'activerecord-session_store', '~> 1.0.0'
34
34
  gem 'activeresource', github: 'shopify/activeresource', tag: '4.2-threadsafe'
35
35
  gem 'rails-bigint-pk', '~> 1.2.0'
36
36
  gem 'acts_as_singleton', '~> 0.0.8'
@@ -80,6 +80,10 @@ class DiscoAppGenerator < Rails::Generators::Base
80
80
  # Uncomment to ensure config.force_ssl = true in production.
81
81
  uncomment_lines 'config/environments/production.rb', /force_ssl/
82
82
 
83
+ # Set time zone to UTC
84
+ application "config.time_zone = 'UTC'"
85
+ application "# Ensure UTC is the default timezone"
86
+
83
87
  # Set server side rendereing for components.js
84
88
  application "config.react.server_renderer_options = {\nfiles: ['components.js'], # files to load for prerendering\n}"
85
89
  application "# Enable server side react rendering"
@@ -1,7 +1,8 @@
1
1
  {% assign model_numeric = 42 %}
2
2
  {% assign model_boolean = true %}
3
3
  {% assign model_empty = nil %}
4
- {% assign model_string = "The cat&#39;s pyjamas are &quot;great&quot;." %}
5
- {% assign model_array_of_numerics = "1@!@2@!@3" | split: "@!@" %}
6
- {% assign model_array_of_strings = "A@!@B@!@C" | split: "@!@" %}
7
- {% assign model_hash = "{}" %}
4
+ {% assign model_string = 'The cat&#39;s pyjamas are &quot;great&quot;.' %}
5
+ {% assign model_string_html = 'The cat&#39;s pyjamas are <strong style="color: red;">great</strong>.' %}
6
+ {% assign model_array_of_numerics = '1@!@2@!@3' | split: '@!@' %}
7
+ {% assign model_array_of_strings = 'A@!@B@!@C' | split: '@!@' %}
8
+ {% assign model_hash = '{}' %}
@@ -25,6 +25,7 @@ class DiscoApp::CanBeLiquifiedTest < ActiveSupport::TestCase
25
25
  boolean: true,
26
26
  empty: nil,
27
27
  string: "The cat's pyjamas are \"great\".",
28
+ string_html: "The cat's pyjamas are <strong style=\"color: red;\">great</strong>.",
28
29
  array_of_numerics: [1, 2, 3],
29
30
  array_of_strings: ['A', 'B', 'C'],
30
31
  hash: {}
@@ -48,7 +49,7 @@ class DiscoApp::CanBeLiquifiedTest < ActiveSupport::TestCase
48
49
  # Return an asset fixture as a string.
49
50
  def liquid_fixture(path)
50
51
  filename = File.join(File.dirname(File.dirname(File.dirname(__FILE__))), 'fixtures', 'liquid', "#{path}")
51
- File.read(filename)
52
+ File.read(filename).strip
52
53
  end
53
54
 
54
55
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: disco_app
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.10
4
+ version: 0.9.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Ballard
@@ -142,14 +142,14 @@ dependencies:
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 0.1.2
145
+ version: 1.0.0
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 0.1.2
152
+ version: 1.0.0
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: omniauth-shopify-oauth2
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -360,6 +360,7 @@ files:
360
360
  - app/assets/javascripts/disco_app/components/ui-kit/forms/base_form.es6.jsx
361
361
  - app/assets/javascripts/disco_app/components/ui-kit/forms/base_input.es6.jsx
362
362
  - app/assets/javascripts/disco_app/components/ui-kit/forms/button.es6.jsx
363
+ - app/assets/javascripts/disco_app/components/ui-kit/forms/input-checkbox.es6.jsx
363
364
  - app/assets/javascripts/disco_app/components/ui-kit/forms/input-radio.es6.jsx
364
365
  - app/assets/javascripts/disco_app/components/ui-kit/forms/input-select.es6.jsx
365
366
  - app/assets/javascripts/disco_app/components/ui-kit/forms/input-text.es6.jsx