diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fc794d..689917a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # @codee-sh/medusa-plugin-notification-emails +## 1.0.2 + +### Patch Changes + +- bff5e4e: Normalize external template registration to use a single shape + (`templateBlocks` + `translations`) and ensure `getConfig` is + always available for external templates. + ## 1.0.1 ### Patch Changes diff --git a/package.json b/package.json index 8646878..a369b18 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@codee-sh/medusa-plugin-notification-emails", - "version": "1.0.1", + "version": "1.0.2", "description": "Medusa plugin for notifications emails.", "author": "Codee Team (https://codee.dev)", "license": "MIT", diff --git a/src/modules/mpn-builder/service.ts b/src/modules/mpn-builder/service.ts index 176e4f9..b3ee7f9 100644 --- a/src/modules/mpn-builder/service.ts +++ b/src/modules/mpn-builder/service.ts @@ -119,9 +119,8 @@ class MpnBuilderService extends MedusaService({ const templateModule = await import( templateValue ) - const template = templateModule.default - // renderer = template?.default || template - renderer = template?.default || templateModule + renderer = + templateModule?.default || templateModule if (!renderer) { this.logger_.warn( @@ -129,6 +128,12 @@ class MpnBuilderService extends MedusaService({ ) return } + + renderer = + this.normalizeExternalRenderer( + renderer, + templateService + ) } catch (error: any) { this.logger_.warn( `Failed to load template from "${templateValue}": ${error?.message || "Unknown error"}` @@ -155,6 +160,34 @@ class MpnBuilderService extends MedusaService({ ) } + /** + * Normalize external template modules to match system template shape. + * Ensures getConfig() exists and base template renderers are included. + */ + private normalizeExternalRenderer( + renderer: any, + templateService: BaseTemplateService + ) { + if (!renderer) { + return renderer + } + + const templateBlocks = renderer.templateBlocks + const translations = renderer.translations + + const baseTemplateConfig = (templateService as any) + ?.baseTemplateConfig + + return { + ...(baseTemplateConfig || {}), + ...renderer, + getConfig: () => ({ + blocks: templateBlocks || [], + translations: translations || {}, + }), + } + } + /** * Get template types * diff --git a/src/workflows/mpn-builder-services/steps/slack-service.ts b/src/workflows/mpn-builder-services/steps/slack-service.ts index 4ca329e..a23b3fc 100644 --- a/src/workflows/mpn-builder-services/steps/slack-service.ts +++ b/src/workflows/mpn-builder-services/steps/slack-service.ts @@ -51,6 +51,12 @@ export const slackServiceStep = createStep( let blocks: any[] = [] + console.log('templateId', templateId); + console.log('isSystemTemplateId', isSystemTemplateId); + console.log('isExternalTemplateId', isExternalTemplateId); + console.log('isRegistryTemplate', isRegistryTemplate); + + // If it's not a registry template, get the blocks from the database if (!isRegistryTemplate) { const { result: templateData } = await getTemplateWorkflow(container).run({