disco_app 0.15.2 → 0.18.1
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/Rakefile +1 -5
- data/app/clients/disco_app/api_client.rb +25 -19
- data/app/clients/disco_app/graphql_client.rb +85 -0
- data/app/controllers/disco_app/admin/app_settings_controller.rb +2 -0
- data/app/controllers/disco_app/admin/application_controller.rb +1 -0
- data/app/controllers/disco_app/admin/concerns/app_settings_controller.rb +2 -1
- data/app/controllers/disco_app/admin/concerns/authenticated_controller.rb +5 -3
- data/app/controllers/disco_app/admin/concerns/plans_controller.rb +3 -2
- data/app/controllers/disco_app/admin/concerns/shops_controller.rb +1 -0
- data/app/controllers/disco_app/admin/concerns/sources_controller.rb +2 -1
- data/app/controllers/disco_app/admin/concerns/subscriptions_controller.rb +3 -2
- data/app/controllers/disco_app/admin/plans_controller.rb +2 -0
- data/app/controllers/disco_app/admin/resources/shops_controller.rb +2 -0
- data/app/controllers/disco_app/admin/shops_controller.rb +2 -0
- data/app/controllers/disco_app/admin/sources_controller.rb +2 -0
- data/app/controllers/disco_app/admin/subscriptions_controller.rb +2 -0
- data/app/controllers/disco_app/charges_controller.rb +6 -7
- data/app/controllers/disco_app/concerns/app_proxy_controller.rb +6 -6
- data/app/controllers/disco_app/concerns/authenticated_controller.rb +26 -27
- data/app/controllers/disco_app/concerns/carrier_request_controller.rb +22 -11
- data/app/controllers/disco_app/concerns/user_authenticated_controller.rb +1 -0
- data/app/controllers/disco_app/concerns/webhooks_controller.rb +13 -12
- data/app/controllers/disco_app/flow/actions_controller.rb +9 -0
- data/app/controllers/disco_app/flow/concerns/actions_controller.rb +23 -0
- data/app/controllers/disco_app/flow/concerns/trigger_usage_controller.rb +29 -0
- data/app/controllers/disco_app/flow/concerns/verifies_flow_payload.rb +39 -0
- data/app/controllers/disco_app/flow/trigger_usage_controller.rb +9 -0
- data/app/controllers/disco_app/frame_controller.rb +0 -1
- data/app/controllers/disco_app/install_controller.rb +3 -6
- data/app/controllers/disco_app/subscriptions_controller.rb +12 -4
- data/app/controllers/disco_app/user_sessions_controller.rb +1 -0
- data/app/controllers/disco_app/webhooks_controller.rb +2 -0
- data/app/controllers/sessions_controller.rb +5 -6
- data/app/helpers/disco_app/application_helper.rb +7 -7
- data/app/jobs/disco_app/app_installed_job.rb +2 -0
- data/app/jobs/disco_app/app_uninstalled_job.rb +2 -0
- data/app/jobs/disco_app/concerns/app_installed_job.rb +2 -3
- data/app/jobs/disco_app/concerns/app_uninstalled_job.rb +2 -1
- data/app/jobs/disco_app/concerns/customers_data_request_job.rb +13 -0
- data/app/jobs/disco_app/concerns/customers_redact_job.rb +13 -0
- data/app/jobs/disco_app/concerns/render_asset_group_job.rb +1 -0
- data/app/jobs/disco_app/concerns/shop_redact_job.rb +13 -0
- data/app/jobs/disco_app/concerns/shop_update_job.rb +9 -2
- data/app/jobs/disco_app/concerns/subscription_changed_job.rb +2 -1
- data/app/jobs/disco_app/concerns/synchronise_carrier_service_job.rb +8 -7
- data/app/jobs/disco_app/concerns/synchronise_resources_job.rb +1 -0
- data/app/jobs/disco_app/concerns/synchronise_users_job.rb +6 -3
- data/app/jobs/disco_app/concerns/synchronise_webhooks_job.rb +24 -11
- data/app/jobs/disco_app/customers_data_request_job.rb +5 -0
- data/app/jobs/disco_app/customers_redact_job.rb +5 -0
- data/app/jobs/disco_app/flow/process_action_job.rb +11 -0
- data/app/jobs/disco_app/flow/process_trigger_job.rb +11 -0
- data/app/jobs/disco_app/render_asset_group_job.rb +2 -0
- data/app/jobs/disco_app/shop_job.rb +10 -10
- data/app/jobs/disco_app/shop_redact_job.rb +5 -0
- data/app/jobs/disco_app/shop_update_job.rb +2 -0
- data/app/jobs/disco_app/subscription_changed_job.rb +2 -0
- data/app/jobs/disco_app/synchronise_carrier_service_job.rb +2 -0
- data/app/jobs/disco_app/synchronise_resources_job.rb +2 -0
- data/app/jobs/disco_app/synchronise_users_job.rb +2 -0
- data/app/jobs/disco_app/synchronise_webhooks_job.rb +2 -0
- data/app/models/application_record.rb +2 -0
- data/app/models/disco_app/app_settings.rb +2 -0
- data/app/models/disco_app/application_charge.rb +1 -1
- data/app/models/disco_app/concerns/app_settings.rb +2 -0
- data/app/models/disco_app/concerns/can_be_liquified.rb +29 -14
- data/app/models/disco_app/concerns/has_metafields.rb +1 -2
- data/app/models/disco_app/concerns/plan.rb +3 -4
- data/app/models/disco_app/concerns/plan_code.rb +1 -2
- data/app/models/disco_app/concerns/renders_assets.rb +15 -21
- data/app/models/disco_app/concerns/shop.rb +20 -14
- data/app/models/disco_app/concerns/source.rb +2 -3
- data/app/models/disco_app/concerns/subscription.rb +3 -3
- data/app/models/disco_app/concerns/synchronises.rb +10 -15
- data/app/models/disco_app/concerns/taggable.rb +1 -0
- data/app/models/disco_app/concerns/user.rb +3 -2
- data/app/models/disco_app/flow/action.rb +9 -0
- data/app/models/disco_app/flow/concerns/action.rb +27 -0
- data/app/models/disco_app/flow/concerns/trigger.rb +28 -0
- data/app/models/disco_app/flow/concerns/trigger_usage.rb +17 -0
- data/app/models/disco_app/flow/trigger.rb +9 -0
- data/app/models/disco_app/flow/trigger_usage.rb +9 -0
- data/app/models/disco_app/plan.rb +2 -0
- data/app/models/disco_app/plan_code.rb +2 -0
- data/app/models/disco_app/session_storage.rb +5 -2
- data/app/models/disco_app/shop.rb +2 -0
- data/app/models/disco_app/source.rb +2 -0
- data/app/models/disco_app/subscription.rb +2 -0
- data/app/models/disco_app/user.rb +2 -0
- data/app/resources/disco_app/admin/resources/concerns/shop_resource.rb +12 -15
- data/app/resources/disco_app/admin/resources/shop_resource.rb +1 -0
- data/app/services/disco_app/carrier_request_service.rb +3 -3
- data/app/services/disco_app/charges_service.rb +26 -34
- data/app/services/disco_app/flow/create_action.rb +35 -0
- data/app/services/disco_app/flow/create_trigger.rb +34 -0
- data/app/services/disco_app/flow/process_action.rb +50 -0
- data/app/services/disco_app/flow/process_trigger.rb +72 -0
- data/app/services/disco_app/flow/update_trigger_usage.rb +42 -0
- data/app/services/disco_app/partner_app_service.rb +1 -1
- data/app/services/disco_app/proxy_service.rb +2 -2
- data/app/services/disco_app/request_validation_service.rb +2 -2
- data/app/services/disco_app/subscription_service.rb +60 -32
- data/app/services/disco_app/webhook_service.rb +9 -11
- data/app/views/layouts/admin.html.erb +1 -2
- data/app/views/layouts/application.html.erb +1 -2
- data/app/views/layouts/embedded_app.html.erb +2 -4
- data/app/views/layouts/embedded_app_modal.html.erb +2 -3
- data/app/views/shopify_app/sessions/new.html.erb +2 -4
- data/config/routes.rb +11 -3
- data/db/migrate/20150525000000_create_shops_if_not_existent.rb +80 -80
- data/db/migrate/20170315062548_create_disco_app_sources.rb +2 -0
- data/db/migrate/20170315062629_add_sources_to_shop_subscriptions.rb +3 -1
- data/db/migrate/20170327214540_create_disco_app_users.rb +2 -1
- data/db/migrate/20170606160751_fix_disco_app_users_index.rb +2 -0
- data/db/migrate/20181229100327_create_flow_actions_and_triggers.rb +32 -0
- data/db/migrate/20200405000000_create_flow_trigger_usages.rb +16 -0
- data/lib/disco_app/configuration.rb +12 -5
- data/lib/disco_app/constants.rb +4 -2
- data/lib/disco_app/engine.rb +1 -1
- data/lib/disco_app/session.rb +1 -0
- data/lib/disco_app/support/file_fixtures.rb +2 -1
- data/lib/disco_app/version.rb +3 -1
- data/lib/generators/disco_app/install/USAGE +5 -0
- data/lib/generators/disco_app/install/install_generator.rb +297 -0
- data/lib/generators/disco_app/{templates → install/templates}/assets/javascripts/application.js +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/assets/javascripts/components.js +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/assets/stylesheets/application.scss +0 -0
- data/lib/generators/disco_app/install/templates/config/appsignal.yml +12 -0
- data/lib/generators/disco_app/install/templates/config/cable.yml.tt +11 -0
- data/lib/generators/disco_app/{templates → install/templates}/config/database.yml.tt +6 -3
- data/lib/generators/disco_app/install/templates/config/environments/staging.rb +108 -0
- data/lib/generators/disco_app/{templates → install/templates}/config/puma.rb +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/controllers/home_controller.rb +1 -0
- data/lib/generators/disco_app/{templates → install/templates}/initializers/disco_app.rb +5 -0
- data/lib/generators/disco_app/install/templates/initializers/session_store.rb +2 -0
- data/lib/generators/disco_app/install/templates/initializers/shopify_app.rb +11 -0
- data/lib/generators/disco_app/{templates → install/templates}/initializers/shopify_session_repository.rb +0 -0
- data/lib/generators/disco_app/install/templates/initializers/timber.rb +4 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.editorconfig +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.env +7 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.env.local +4 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.gitignore +6 -0
- data/lib/generators/disco_app/install/templates/root/.rspec +1 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.rubocop.yml +315 -217
- data/lib/generators/disco_app/install/templates/root/.tool-versions +2 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/CHECKS +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/Procfile +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/README.md +0 -0
- data/lib/generators/disco_app/install/templates/root/package.json.tt +17 -0
- data/lib/generators/disco_app/install/templates/spec/rails_helper.rb +40 -0
- data/lib/generators/disco_app/install/templates/spec/spec_helper.rb +24 -0
- data/lib/generators/disco_app/install/templates/spec/support/active_job.rb +13 -0
- data/lib/generators/disco_app/install/templates/spec/support/coveralls.rb +3 -0
- data/lib/generators/disco_app/install/templates/spec/support/database_cleaner.rb +17 -0
- data/lib/generators/disco_app/install/templates/spec/support/factory_bot.rb +3 -0
- data/lib/generators/disco_app/install/templates/spec/support/helpers/json_helper.rb +13 -0
- data/lib/generators/disco_app/install/templates/spec/support/shared_examples/a_synchronise_job.rb +12 -0
- data/lib/generators/disco_app/install/templates/spec/support/shoulda.rb +6 -0
- data/lib/generators/disco_app/install/templates/spec/support/vcr.rb +14 -0
- data/lib/generators/disco_app/install/templates/spec/support/webmock.rb +8 -0
- data/lib/generators/disco_app/{templates → install/templates}/views/home/index.html.erb +0 -0
- data/lib/generators/disco_app/react/USAGE +5 -0
- data/lib/generators/disco_app/react/react_generator.rb +108 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/api/base_controller.rb +18 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/api/home_controller.rb +10 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/api/shops_controller.rb +11 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/api/users_controller.rb +11 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/home_controller.rb +13 -0
- data/lib/generators/disco_app/react/templates/app/models/api_response.rb +107 -0
- data/lib/generators/disco_app/react/templates/app/serializers/disco_app/shop_serializer.rb +13 -0
- data/lib/generators/disco_app/react/templates/app/serializers/disco_app/user_serializer.rb +13 -0
- data/lib/generators/disco_app/react/templates/app/serializers/empty_serializer.rb +5 -0
- data/lib/generators/disco_app/react/templates/app/serializers/error_serializer.rb +76 -0
- data/lib/generators/disco_app/react/templates/app/views/embedded/home/index.html.erb +12 -0
- data/lib/generators/disco_app/react/templates/app/views/layouts/embedded.html.erb +10 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/App.jsx +77 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/HomePage.jsx +34 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/Shared/EmbeddedPage.jsx +70 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/Shared/ErrorBanner.jsx +58 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/Shared/PaginationWrapper.jsx +10 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/Shared/ScrollToTop.jsx +23 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/withApi.jsx +125 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/index.jsx +39 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/utils.js +19 -0
- data/lib/generators/disco_app/react/templates/app/webpack/packs/embedded.js +2 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded/shared/banners.scss +7 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded/shared/busy.scss +3 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded/shared/index.scss +3 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded/shared/pagination.scss +5 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded.scss +2 -0
- data/lib/generators/disco_app/react/templates/config/initializers/mime_types.rb +13 -0
- data/lib/generators/disco_app/react/templates/config/initializers/omniauth.rb +27 -0
- data/lib/generators/disco_app/react/templates/config/initializers/version.rb.tt +7 -0
- data/lib/generators/disco_app/react/templates/config/webpack/staging.js +5 -0
- data/lib/generators/disco_app/react/templates/config/webpack/test.js +5 -0
- data/lib/generators/disco_app/react/templates/config/webpacker.yml +96 -0
- data/lib/generators/disco_app/react/templates/root/.eslintignore +5 -0
- data/lib/generators/disco_app/react/templates/root/.eslintrc +69 -0
- data/lib/generators/disco_app/react/templates/root/.prettierrc +3 -0
- data/lib/generators/disco_app/react/templates/root/VERSION +1 -0
- data/lib/generators/disco_app/react/templates/root/babel.config.js +72 -0
- data/lib/generators/disco_app/react/templates/root/package.json.tt +84 -0
- data/lib/generators/disco_app/react/templates/root/postcss.config.js +14 -0
- data/lib/tasks/api.rake +0 -2
- data/lib/tasks/carrier_service.rake +0 -2
- data/lib/tasks/database.rake +1 -1
- data/lib/tasks/sessions.rake +0 -2
- data/lib/tasks/shops.rake +0 -2
- data/lib/tasks/users.rake +0 -2
- data/lib/tasks/webhooks.rake +0 -2
- data/test/clients/disco_app/api_client_test.rb +3 -3
- data/test/controllers/disco_app/admin/shops_controller_test.rb +1 -0
- data/test/controllers/disco_app/charges_controller_test.rb +8 -9
- data/test/controllers/disco_app/flow/trigger_usage_controller_test.rb +41 -0
- data/test/controllers/disco_app/install_controller_test.rb +2 -1
- data/test/controllers/disco_app/subscriptions_controller_test.rb +2 -1
- data/test/controllers/disco_app/webhooks_controller_test.rb +1 -0
- data/test/controllers/home_controller_test.rb +1 -1
- data/test/disco_app_test.rb +3 -1
- data/test/dummy/Rakefile +1 -1
- data/test/dummy/app/assets/config/manifest.js +2 -0
- data/test/dummy/app/controllers/application_controller.rb +2 -0
- data/test/dummy/app/controllers/carrier_request_controller.rb +1 -0
- data/test/dummy/app/controllers/disco_app/admin/shops_controller.rb +1 -0
- data/test/dummy/app/controllers/home_controller.rb +1 -0
- data/test/dummy/app/controllers/proxy_controller.rb +1 -0
- data/test/dummy/app/javascript/packs/application.js +18 -0
- data/test/dummy/app/jobs/disco_app/app_installed_job.rb +2 -3
- data/test/dummy/app/jobs/disco_app/app_uninstalled_job.rb +1 -0
- data/test/dummy/app/models/application_record.rb +2 -0
- data/test/dummy/app/models/cart.rb +4 -3
- data/test/dummy/app/models/disco_app/shop.rb +4 -5
- data/test/dummy/app/models/js_configuration.rb +1 -0
- data/test/dummy/app/models/product.rb +3 -2
- data/test/dummy/app/models/widget_configuration.rb +1 -0
- data/test/dummy/babel.config.js +72 -0
- data/test/dummy/bin/bundle +1 -1
- data/test/dummy/bin/rails +1 -1
- data/test/dummy/bin/setup +8 -8
- data/test/dummy/bin/webpack +19 -0
- data/test/dummy/bin/webpack-dev-server +19 -0
- data/test/dummy/config/application.rb +4 -3
- data/test/dummy/config/boot.rb +2 -2
- data/test/dummy/config/database.yml +3 -0
- data/test/dummy/config/environment.rb +1 -1
- data/test/dummy/config/environments/staging.rb +85 -0
- data/test/dummy/config/initializers/disco_app.rb +8 -1
- data/test/dummy/config/initializers/omniauth.rb +3 -4
- data/test/dummy/config/initializers/session_store.rb +1 -1
- data/test/dummy/config/initializers/shopify_app.rb +1 -0
- data/test/dummy/config/routes.rb +0 -2
- data/test/dummy/config/secrets.yml +3 -0
- data/test/dummy/config/webpack/development.js +5 -0
- data/test/dummy/config/webpack/environment.js +3 -0
- data/test/dummy/config/webpack/production.js +5 -0
- data/test/dummy/config/webpack/test.js +5 -0
- data/test/dummy/config/webpacker.yml +95 -0
- data/test/dummy/db/migrate/20160307182229_create_products.rb +3 -1
- data/test/dummy/db/migrate/20160530160739_create_asset_models.rb +3 -1
- data/test/dummy/db/migrate/20161105054746_create_carts.rb +2 -1
- data/test/dummy/db/schema.rb +45 -6
- data/test/dummy/package.json +8 -0
- data/test/dummy/postcss.config.js +12 -0
- data/test/dummy/yarn.lock +7244 -0
- data/test/fixtures/api/subscriptions/valid_request.json +1 -1
- data/test/fixtures/api/widget_store/empty_webhooks.json +3 -0
- data/test/fixtures/api/widget_store/existing_webhooks.json +43 -0
- data/test/fixtures/disco_app/shops.yml +3 -0
- data/test/fixtures/webhooks/flow/trigger_usage.json +7 -0
- data/test/integration/synchronises_test.rb +2 -1
- data/test/jobs/disco_app/app_installed_job_test.rb +28 -9
- data/test/jobs/disco_app/app_uninstalled_job_test.rb +5 -2
- data/test/jobs/disco_app/send_subscription_job_test.rb +3 -2
- data/test/jobs/disco_app/synchronise_carrier_service_job_test.rb +1 -0
- data/test/jobs/disco_app/synchronise_users_job_test.rb +1 -0
- data/test/jobs/disco_app/synchronise_webhooks_job_test.rb +70 -13
- data/test/models/disco_app/can_be_liquified_test.rb +3 -1
- data/test/models/disco_app/has_metafields_test.rb +37 -18
- data/test/models/disco_app/renders_assets_test.rb +2 -1
- data/test/models/disco_app/session_test.rb +2 -2
- data/test/models/disco_app/shop_test.rb +1 -1
- data/test/services/disco_app/charges_service_test.rb +7 -8
- data/test/services/disco_app/flow/create_action_test.rb +51 -0
- data/test/services/disco_app/flow/create_trigger_test.rb +56 -0
- data/test/services/disco_app/flow/process_action_test.rb +68 -0
- data/test/services/disco_app/flow/process_trigger_test.rb +94 -0
- data/test/services/disco_app/flow/update_trigger_usage_test.rb +87 -0
- data/test/services/disco_app/subscription_service_test.rb +3 -2
- data/test/support/test_file_fixtures.rb +2 -2
- data/test/support/test_shopify_api.rb +1 -1
- data/test/test_helper.rb +10 -7
- data/test/vcr/flow_trigger_invalid_title.yml +35 -0
- data/test/vcr/flow_trigger_valid.yml +38 -0
- data/test/vcr/webhook_failure.yml +13 -13
- metadata +282 -148
- data/app/clients/disco_app/disco_api_error.rb +0 -2
- data/app/clients/disco_app/rollbar_client.rb +0 -53
- data/app/clients/disco_app/rollbar_client_error.rb +0 -2
- data/lib/generators/disco_app/USAGE +0 -5
- data/lib/generators/disco_app/disco_app_generator.rb +0 -236
- data/lib/generators/disco_app/templates/config/newrelic.yml +0 -26
- data/lib/generators/disco_app/templates/initializers/rollbar.rb +0 -23
- data/lib/generators/disco_app/templates/initializers/session_store.rb +0 -2
- data/lib/generators/disco_app/templates/initializers/shopify_app.rb +0 -6
- data/lib/generators/disco_app/templates/root/.codeclimate.yml +0 -7
- data/lib/generators/disco_app/templates/root/.ruby-version +0 -1
- data/lib/tasks/rollbar.rake +0 -24
- data/test/fixtures/api/widget_store/webhooks.json +0 -1
@@ -8,13 +8,13 @@
|
|
8
8
|
// Initialise the Shopify App.
|
9
9
|
ShopifyApp.init({
|
10
10
|
"apiKey": "<%= ShopifyApp.configuration.api_key %>",
|
11
|
-
"shopOrigin": "<%= "https://#{ @shop_session.
|
11
|
+
"shopOrigin": "<%= "https://#{ @shop_session.domain }" if @shop_session %>",
|
12
12
|
"debug": <%= Rails.env.development? ? 'true' : 'false' %>
|
13
13
|
});
|
14
14
|
</script>
|
15
15
|
|
16
16
|
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
|
17
|
-
|
17
|
+
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload', 'data-turbolinks-eval': false %>
|
18
18
|
<%= csrf_meta_tags %>
|
19
19
|
|
20
20
|
<%= yield :extra_head %>
|
@@ -43,8 +43,6 @@
|
|
43
43
|
</script>
|
44
44
|
<% end %>
|
45
45
|
|
46
|
-
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true, 'data-turbolinks-eval' => false %>
|
47
|
-
|
48
46
|
<%= render 'disco_app/shared/icons' %>
|
49
47
|
</body>
|
50
48
|
</html>
|
@@ -7,15 +7,14 @@
|
|
7
7
|
// Initialise the Shopify App.
|
8
8
|
ShopifyApp.init({
|
9
9
|
"apiKey": "<%= ShopifyApp.configuration.api_key %>",
|
10
|
-
"shopOrigin": "<%= "https://#{ @shop_session.
|
10
|
+
"shopOrigin": "<%= "https://#{ @shop_session.domain }" if @shop_session %>",
|
11
11
|
"debug": <%= Rails.env.development? ? 'true' : 'false' %>,
|
12
12
|
"forceRedirect": false
|
13
13
|
});
|
14
14
|
</script>
|
15
15
|
|
16
|
-
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
|
17
16
|
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
|
18
|
-
|
17
|
+
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
|
19
18
|
<%= csrf_meta_tags %>
|
20
19
|
|
21
20
|
<%= yield :extra_head %>
|
@@ -3,8 +3,8 @@
|
|
3
3
|
<head>
|
4
4
|
<title>Install <%= DiscoApp.configuration.app_name %></title>
|
5
5
|
|
6
|
-
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track'
|
7
|
-
|
6
|
+
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
|
7
|
+
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
|
8
8
|
<%= csrf_meta_tags %>
|
9
9
|
|
10
10
|
<%= yield :extra_head %>
|
@@ -36,7 +36,5 @@
|
|
36
36
|
</section>
|
37
37
|
</div>
|
38
38
|
<% end %>
|
39
|
-
|
40
|
-
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
|
41
39
|
</body>
|
42
40
|
</html>
|
data/config/routes.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'sidekiq/web'
|
2
2
|
|
3
3
|
DiscoApp::Engine.routes.draw do
|
4
|
-
|
5
4
|
get 'ref', to: '/sessions#referral'
|
6
5
|
get '/auth/failure', to: '/sessions#failure'
|
7
6
|
|
@@ -9,6 +8,16 @@ DiscoApp::Engine.routes.draw do
|
|
9
8
|
post 'webhooks' => :process_webhook, as: :webhooks
|
10
9
|
end
|
11
10
|
|
11
|
+
namespace :flow do
|
12
|
+
controller :actions do
|
13
|
+
post 'actions/:id' => :create_flow_action, as: :flow_actions
|
14
|
+
end
|
15
|
+
|
16
|
+
controller :trigger_usage do
|
17
|
+
post 'trigger_usage' => :update_trigger_usage, as: :flow_trigger_usage
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
12
21
|
resources :user_sessions, only: [:new, :create, :destroy]
|
13
22
|
get 'auth/shopify_user/callback' => 'user_sessions#callback'
|
14
23
|
|
@@ -46,7 +55,7 @@ DiscoApp::Engine.routes.draw do
|
|
46
55
|
end
|
47
56
|
|
48
57
|
# Make the Sidekiq Web UI accessible using the same credentials as the admin.
|
49
|
-
if Rails.env.production?
|
58
|
+
if Rails.env.production? || Rails.env.staging?
|
50
59
|
Sidekiq::Web.use Rack::Auth::Basic do |username, password|
|
51
60
|
[
|
52
61
|
ENV['ADMIN_APP_USERNAME'].present?,
|
@@ -64,5 +73,4 @@ DiscoApp::Engine.routes.draw do
|
|
64
73
|
get 'frame' => :frame, as: :frame
|
65
74
|
end
|
66
75
|
end
|
67
|
-
|
68
76
|
end
|
@@ -6,105 +6,105 @@ class CreateShopsIfNotExistent < ActiveRecord::Migration[5.1]
|
|
6
6
|
def change
|
7
7
|
return if table_exists? :disco_app_shops
|
8
8
|
|
9
|
-
create_table
|
10
|
-
t.datetime
|
11
|
-
t.datetime
|
9
|
+
create_table :disco_app_app_settings, force: :cascade do |t|
|
10
|
+
t.datetime :created_at, null: false
|
11
|
+
t.datetime :updated_at, null: false
|
12
12
|
end
|
13
13
|
|
14
|
-
create_table
|
15
|
-
t.integer
|
16
|
-
t.integer
|
17
|
-
t.integer
|
18
|
-
t.datetime
|
19
|
-
t.datetime
|
20
|
-
t.integer
|
21
|
-
t.string
|
14
|
+
create_table :disco_app_application_charges, force: :cascade do |t|
|
15
|
+
t.integer :shop_id, limit: 8
|
16
|
+
t.integer :subscription_id, limit: 8
|
17
|
+
t.integer :status, default: 0
|
18
|
+
t.datetime :created_at, null: false
|
19
|
+
t.datetime :updated_at, null: false
|
20
|
+
t.integer :shopify_id, limit: 8
|
21
|
+
t.string :confirmation_url
|
22
22
|
end
|
23
23
|
|
24
|
-
create_table
|
25
|
-
t.integer
|
26
|
-
t.string
|
27
|
-
t.integer
|
28
|
-
t.integer
|
29
|
-
t.datetime
|
30
|
-
t.datetime
|
31
|
-
t.integer
|
24
|
+
create_table :disco_app_plan_codes, force: :cascade do |t|
|
25
|
+
t.integer :plan_id, limit: 8
|
26
|
+
t.string :code
|
27
|
+
t.integer :trial_period_days
|
28
|
+
t.integer :amount
|
29
|
+
t.datetime :created_at, null: false
|
30
|
+
t.datetime :updated_at, null: false
|
31
|
+
t.integer :status, default: 0
|
32
32
|
end
|
33
33
|
|
34
|
-
create_table
|
35
|
-
t.integer
|
36
|
-
t.string
|
37
|
-
t.integer
|
38
|
-
t.integer
|
39
|
-
t.datetime
|
40
|
-
t.datetime
|
41
|
-
t.integer
|
42
|
-
t.string
|
43
|
-
t.integer
|
44
|
-
t.integer
|
34
|
+
create_table :disco_app_plans, force: :cascade do |t|
|
35
|
+
t.integer :status, default: 0
|
36
|
+
t.string :name
|
37
|
+
t.integer :plan_type, default: 0
|
38
|
+
t.integer :trial_period_days
|
39
|
+
t.datetime :created_at, null: false
|
40
|
+
t.datetime :updated_at, null: false
|
41
|
+
t.integer :amount, default: 0
|
42
|
+
t.string :currency, default: 'USD'
|
43
|
+
t.integer :interval, default: 0
|
44
|
+
t.integer :interval_count, default: 1
|
45
45
|
end
|
46
46
|
|
47
|
-
create_table
|
48
|
-
t.integer
|
49
|
-
t.integer
|
50
|
-
t.integer
|
51
|
-
t.datetime
|
52
|
-
t.datetime
|
53
|
-
t.integer
|
54
|
-
t.string
|
47
|
+
create_table :disco_app_recurring_application_charges, force: :cascade do |t|
|
48
|
+
t.integer :shop_id, limit: 8
|
49
|
+
t.integer :subscription_id, limit: 8
|
50
|
+
t.integer :status, default: 0
|
51
|
+
t.datetime :created_at, null: false
|
52
|
+
t.datetime :updated_at, null: false
|
53
|
+
t.integer :shopify_id, limit: 8
|
54
|
+
t.string :confirmation_url
|
55
55
|
end
|
56
56
|
|
57
|
-
create_table
|
58
|
-
t.string
|
59
|
-
t.text
|
60
|
-
t.datetime
|
61
|
-
t.datetime
|
62
|
-
t.integer
|
57
|
+
create_table :disco_app_sessions, force: :cascade do |t|
|
58
|
+
t.string :session_id, null: false
|
59
|
+
t.text :data
|
60
|
+
t.datetime :created_at, null: false
|
61
|
+
t.datetime :updated_at, null: false
|
62
|
+
t.integer :shop_id
|
63
63
|
end
|
64
64
|
|
65
|
-
add_index
|
66
|
-
add_index
|
65
|
+
add_index :disco_app_sessions, [:session_id], name: 'index_disco_app_sessions_on_session_id', unique: true, using: :btree
|
66
|
+
add_index :disco_app_sessions, [:updated_at], name: 'index_disco_app_sessions_on_updated_at', using: :btree
|
67
67
|
|
68
|
-
create_table
|
69
|
-
t.string
|
70
|
-
t.string
|
71
|
-
t.datetime
|
72
|
-
t.datetime
|
73
|
-
t.integer
|
74
|
-
t.string
|
75
|
-
t.string
|
76
|
-
t.string
|
77
|
-
t.jsonb
|
68
|
+
create_table :disco_app_shops, force: :cascade do |t|
|
69
|
+
t.string :shopify_domain, null: false
|
70
|
+
t.string :shopify_token, null: false
|
71
|
+
t.datetime :created_at, null: false
|
72
|
+
t.datetime :updated_at, null: false
|
73
|
+
t.integer :status, default: 0
|
74
|
+
t.string :domain
|
75
|
+
t.string :plan_name
|
76
|
+
t.string :name
|
77
|
+
t.jsonb :data, default: {}
|
78
78
|
end
|
79
79
|
|
80
|
-
add_index
|
80
|
+
add_index :disco_app_shops, [:shopify_domain], name: 'index_disco_app_shops_on_shopify_domain', unique: true, using: :btree
|
81
81
|
|
82
|
-
create_table
|
83
|
-
t.integer
|
84
|
-
t.integer
|
85
|
-
t.integer
|
86
|
-
t.integer
|
87
|
-
t.datetime
|
88
|
-
t.datetime
|
89
|
-
t.datetime
|
90
|
-
t.datetime
|
91
|
-
t.datetime
|
92
|
-
t.integer
|
93
|
-
t.integer
|
94
|
-
t.string
|
95
|
-
t.integer
|
82
|
+
create_table :disco_app_subscriptions, force: :cascade do |t|
|
83
|
+
t.integer :shop_id
|
84
|
+
t.integer :plan_id
|
85
|
+
t.integer :status
|
86
|
+
t.integer :subscription_type
|
87
|
+
t.datetime :created_at, null: false
|
88
|
+
t.datetime :updated_at, null: false
|
89
|
+
t.datetime :trial_start_at
|
90
|
+
t.datetime :trial_end_at
|
91
|
+
t.datetime :cancelled_at
|
92
|
+
t.integer :amount, default: 0
|
93
|
+
t.integer :plan_code_id, limit: 8
|
94
|
+
t.string :source
|
95
|
+
t.integer :trial_period_days
|
96
96
|
end
|
97
97
|
|
98
|
-
add_index
|
99
|
-
add_index
|
98
|
+
add_index :disco_app_subscriptions, [:plan_id], name: 'index_disco_app_subscriptions_on_plan_id', using: :btree
|
99
|
+
add_index :disco_app_subscriptions, [:shop_id], name: 'index_disco_app_subscriptions_on_shop_id', using: :btree
|
100
100
|
|
101
|
-
add_foreign_key
|
102
|
-
add_foreign_key
|
103
|
-
add_foreign_key
|
104
|
-
add_foreign_key
|
105
|
-
add_foreign_key
|
106
|
-
add_foreign_key
|
107
|
-
add_foreign_key
|
101
|
+
add_foreign_key :disco_app_application_charges, :disco_app_shops, column: :shop_id
|
102
|
+
add_foreign_key :disco_app_application_charges, :disco_app_subscriptions, column: :subscription_id
|
103
|
+
add_foreign_key :disco_app_plan_codes, :disco_app_plans, column: :plan_id
|
104
|
+
add_foreign_key :disco_app_recurring_application_charges, :disco_app_shops, column: :shop_id
|
105
|
+
add_foreign_key :disco_app_recurring_application_charges, :disco_app_subscriptions, column: :subscription_id
|
106
|
+
add_foreign_key :disco_app_sessions, :disco_app_shops, column: :shop_id, on_delete: :cascade
|
107
|
+
add_foreign_key :disco_app_subscriptions, :disco_app_plan_codes, column: :plan_code_id
|
108
108
|
end
|
109
109
|
|
110
110
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
class CreateDiscoAppSources < ActiveRecord::Migration[5.1]
|
2
|
+
|
2
3
|
def change
|
3
4
|
create_table :disco_app_sources do |t|
|
4
5
|
t.string :source, null: true
|
@@ -7,4 +8,5 @@ class CreateDiscoAppSources < ActiveRecord::Migration[5.1]
|
|
7
8
|
end
|
8
9
|
add_index :disco_app_sources, :source
|
9
10
|
end
|
11
|
+
|
10
12
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
class AddSourcesToShopSubscriptions < ActiveRecord::Migration[5.1]
|
2
|
+
|
2
3
|
def change
|
3
4
|
add_column :disco_app_subscriptions, :source_id, :integer, limit: 8, index: true
|
4
5
|
add_foreign_key :disco_app_subscriptions, :disco_app_sources, column: :source_id
|
@@ -9,6 +10,7 @@ class AddSourcesToShopSubscriptions < ActiveRecord::Migration[5.1]
|
|
9
10
|
end
|
10
11
|
end
|
11
12
|
|
12
|
-
remove_column :disco_app_subscriptions, :source
|
13
|
+
remove_column :disco_app_subscriptions, :source, :string
|
13
14
|
end
|
15
|
+
|
14
16
|
end
|
@@ -1,13 +1,14 @@
|
|
1
1
|
class CreateDiscoAppUsers < ActiveRecord::Migration[5.1]
|
2
|
+
|
2
3
|
def change
|
3
4
|
create_table :disco_app_users do |t|
|
4
5
|
t.integer :shop_id, limit: 8
|
5
6
|
t.string :first_name
|
6
7
|
t.string :last_name
|
7
8
|
t.string :email
|
8
|
-
|
9
9
|
t.timestamps null: false
|
10
10
|
end
|
11
11
|
add_index :disco_app_users, :shop_id, unique: true
|
12
12
|
end
|
13
|
+
|
13
14
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class CreateFlowActionsAndTriggers < ActiveRecord::Migration[5.2]
|
2
|
+
|
3
|
+
def change
|
4
|
+
create_table :disco_app_flow_actions do |t|
|
5
|
+
t.integer :shop_id, limit: 8
|
6
|
+
t.string :action_id
|
7
|
+
t.string :action_run_id
|
8
|
+
t.jsonb :properties, default: {}
|
9
|
+
t.integer :status, default: 0
|
10
|
+
t.datetime :processed_at, null: true
|
11
|
+
t.jsonb :processing_errors, default: []
|
12
|
+
t.timestamps null: false
|
13
|
+
end
|
14
|
+
|
15
|
+
create_table :disco_app_flow_triggers do |t|
|
16
|
+
t.integer :shop_id, limit: 8
|
17
|
+
t.string :title
|
18
|
+
t.string :resource_name
|
19
|
+
t.string :resource_url
|
20
|
+
t.jsonb :properties, default: {}
|
21
|
+
t.integer :status, default: 0
|
22
|
+
t.datetime :processed_at, null: true
|
23
|
+
t.jsonb :processing_errors, default: []
|
24
|
+
t.timestamps null: false
|
25
|
+
end
|
26
|
+
|
27
|
+
add_foreign_key :disco_app_flow_actions, :disco_app_shops, column: :shop_id, on_delete: :cascade
|
28
|
+
add_foreign_key :disco_app_flow_triggers, :disco_app_shops, column: :shop_id, on_delete: :cascade
|
29
|
+
add_index :disco_app_flow_actions, :action_run_id, unique: true
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class CreateFlowTriggerUsages < ActiveRecord::Migration[5.2]
|
2
|
+
|
3
|
+
def change
|
4
|
+
create_table :disco_app_flow_trigger_usages do |t|
|
5
|
+
t.integer :shop_id, limit: 8
|
6
|
+
t.string :flow_trigger_definition_id
|
7
|
+
t.boolean :has_enabled_flow, default: true
|
8
|
+
t.datetime :timestamp, null: true
|
9
|
+
t.timestamps null: false
|
10
|
+
end
|
11
|
+
|
12
|
+
add_foreign_key :disco_app_flow_trigger_usages, :disco_app_shops, column: :shop_id, on_delete: :cascade
|
13
|
+
add_index :disco_app_flow_trigger_usages, [:shop_id, :flow_trigger_definition_id], unique: true, name: :index_disco_app_flow_actions_on_shop_id_and_trigger_id
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -8,6 +8,13 @@ module DiscoApp
|
|
8
8
|
# Set the list of Shopify webhook topics to register.
|
9
9
|
attr_accessor :webhook_topics
|
10
10
|
|
11
|
+
# Define the list of fields to receive for each webhook topic.
|
12
|
+
attr_accessor :webhook_fields
|
13
|
+
|
14
|
+
# Set Flow configuration
|
15
|
+
attr_accessor :flow_actions
|
16
|
+
attr_accessor :flow_triggers
|
17
|
+
|
11
18
|
# Set the below if using an application proxy.
|
12
19
|
attr_accessor :app_proxy_prefix
|
13
20
|
|
@@ -16,17 +23,17 @@ module DiscoApp
|
|
16
23
|
|
17
24
|
# Set the below to create real Shopify charges.
|
18
25
|
attr_accessor :real_charges
|
19
|
-
|
26
|
+
alias real_charges? real_charges
|
20
27
|
|
21
28
|
# Optional configuration, usually useful for development environments.
|
22
29
|
attr_accessor :skip_proxy_verification
|
23
|
-
|
30
|
+
alias skip_proxy_verification? skip_proxy_verification
|
24
31
|
attr_accessor :skip_webhook_verification
|
25
|
-
|
32
|
+
alias skip_webhook_verification? skip_webhook_verification
|
26
33
|
attr_accessor :skip_carrier_request_verification
|
27
|
-
|
34
|
+
alias skip_carrier_request_verification? skip_carrier_request_verification
|
28
35
|
attr_accessor :skip_oauth
|
29
|
-
|
36
|
+
alias skip_oauth? skip_oauth
|
30
37
|
|
31
38
|
end
|
32
39
|
|
data/lib/disco_app/constants.rb
CHANGED
data/lib/disco_app/engine.rb
CHANGED
@@ -19,7 +19,7 @@ module DiscoApp
|
|
19
19
|
|
20
20
|
# Ensure our frame assets are included for precompilation.
|
21
21
|
initializer 'disco_app.assets.precompile' do |app|
|
22
|
-
app.config.assets.precompile += %w
|
22
|
+
app.config.assets.precompile += %w[disco_app/icon.svg disco_app/admin.css disco_app/frame.css disco_app/frame.js]
|
23
23
|
end
|
24
24
|
|
25
25
|
end
|
data/lib/disco_app/session.rb
CHANGED
@@ -11,7 +11,8 @@ module DiscoApp::Test
|
|
11
11
|
def json_fixture(path, dir: 'json', parse: true)
|
12
12
|
filename = Rails.root.join('test', 'fixtures', dir, "#{path}.json")
|
13
13
|
return File.read(filename) unless parse
|
14
|
-
|
14
|
+
|
15
|
+
HashWithIndifferentAccess.new(JSON.parse(File.read(filename)))
|
15
16
|
end
|
16
17
|
|
17
18
|
# Webhook fixtures are special-case JSON fixtures.
|
data/lib/disco_app/version.rb
CHANGED