From 751a5d9e6140287d15b395955d5764042f36270b Mon Sep 17 00:00:00 2001 From: David Taylor Date: Mon, 23 Mar 2026 11:10:02 +0000 Subject: [PATCH] Update for new core plugin compiler - Module-level code is now evaluated earlier, so site-settings are not available. Move that logic to an initializer - Importing admin modules from non-admin code will now raise an error. Updated to use `optionalRequire()` https://meta.discourse.org/t/398713 --- .../discourse/components/wizard-value-list.js | 32 ++++++++++++------- .../custom-wizard-dynamic-schema.js | 14 ++++++++ .../discourse/lib/wizard-schema.js | 9 ------ 3 files changed, 34 insertions(+), 21 deletions(-) create mode 100644 assets/javascripts/discourse/initializers/custom-wizard-dynamic-schema.js diff --git a/assets/javascripts/discourse/components/wizard-value-list.js b/assets/javascripts/discourse/components/wizard-value-list.js index ccc5479445..182404fdde 100644 --- a/assets/javascripts/discourse/components/wizard-value-list.js +++ b/assets/javascripts/discourse/components/wizard-value-list.js @@ -1,12 +1,20 @@ -import ValueList from "admin/components/value-list"; - -export default ValueList.extend({ - _saveValues() { - if (this.inputType === "array") { - this.onChange(this.collection); - return; - } - - this.onChange(this.collection.join(this.inputDelimiter || "\n")); - }, -}); +import { optionalRequire } from "discourse/lib/utilities"; + +const ValueList = optionalRequire("admin/components/value-list"); + +let WizardValueList; + +if (ValueList) { + ValueList.extend({ + _saveValues() { + if (this.inputType === "array") { + this.onChange(this.collection); + return; + } + + this.onChange(this.collection.join(this.inputDelimiter || "\n")); + }, + }); +} + +export default WizardValueList; diff --git a/assets/javascripts/discourse/initializers/custom-wizard-dynamic-schema.js b/assets/javascripts/discourse/initializers/custom-wizard-dynamic-schema.js new file mode 100644 index 0000000000..948ca701ef --- /dev/null +++ b/assets/javascripts/discourse/initializers/custom-wizard-dynamic-schema.js @@ -0,0 +1,14 @@ +import wizardSchema from "../lib/wizard-schema"; + +export default { + initialize(container) { + const siteSettings = container.lookup("service:site-settings"); + if (siteSettings.wizard_apis_enabled) { + wizardSchema.action.types.send_to_api = { + api: null, + api_endpoint: null, + api_body: null, + }; + } + }, +}; diff --git a/assets/javascripts/discourse/lib/wizard-schema.js b/assets/javascripts/discourse/lib/wizard-schema.js index 9b0f73890d..424af3277e 100644 --- a/assets/javascripts/discourse/lib/wizard-schema.js +++ b/assets/javascripts/discourse/lib/wizard-schema.js @@ -288,15 +288,6 @@ export function filterValues(currentWizard, feature, attribute, values = null) { return values; } -const siteSettings = getOwnerWithFallback(this).lookup("service:site-settings"); -if (siteSettings.wizard_apis_enabled) { - wizardSchema.action.types.send_to_api = { - api: null, - api_endpoint: null, - api_body: null, - }; -} - export function setWizardDefaults(obj, itemType) { const objSchema = wizardSchema[itemType]; const basicDefaults = objSchema.basic;