FIX: call method only if it exists

discourse-objects creating empty Discourse object in window. It fails the _registerPluginCode method call since it is not exist.
This commit is contained in:
Vinoth Kannan 2019-01-15 15:55:32 +05:30
parent 10fbb07e1a
commit 59e5af466b
2 changed files with 3 additions and 3 deletions

View File

@ -63,7 +63,7 @@ class ThemeField < ActiveRecord::Base
def transpile(es6_source, version)
template = Tilt::ES6ModuleTranspilerTemplate.new {}
wrapped = <<PLUGIN_API_JS
if ('Discourse' in window) {
if ('Discourse' in window && typeof Discourse._registerPluginCode === 'function') {
Discourse._registerPluginCode('#{version}', api => {
#{settings(es6_source)}
#{es6_source}

View File

@ -326,7 +326,7 @@ HTML
theme.save!
transpiled = <<~HTML
if ('Discourse' in window) {
if ('Discourse' in window && typeof Discourse._registerPluginCode === 'function') {
Discourse._registerPluginCode('1.0', function (api) {
var settings = { "name": "bob" };
alert(settings.name);var a = function a() {};
@ -342,7 +342,7 @@ HTML
setting.value = 'bill'
transpiled = <<~HTML
if ('Discourse' in window) {
if ('Discourse' in window && typeof Discourse._registerPluginCode === 'function') {
Discourse._registerPluginCode('1.0', function (api) {
var settings = { "name": "bill" };
alert(settings.name);var a = function a() {};