@acorex-platform/extension-communication-meta-client 0.0.33 → 0.0.38
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.
- package/fesm2022/acorex-platform-extension-communication-meta-client-communication-meta-command-error.util-Be3gOQPr.mjs.map +1 -1
- package/fesm2022/acorex-platform-extension-communication-meta-client-communication-test-whatsapp.command-GVjrHXJx.mjs.map +1 -1
- package/fesm2022/acorex-platform-extension-communication-meta-client-connect-whatsapp.command-Dpo-31ex.mjs.map +1 -1
- package/fesm2022/acorex-platform-extension-communication-meta-client-contracts.mjs.map +1 -1
- package/fesm2022/acorex-platform-extension-communication-meta-client.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-extension-communication-meta-client-communication-meta-command-error.util-Be3gOQPr.mjs","sources":["../../../../libs/extensions/communication/meta/client/src/lib/commands/communication-meta-command.i18n.ts","../../../../libs/extensions/communication/meta/client/src/lib/commands/communication-meta-command-error.util.ts"],"sourcesContent":["import { RootConfig } from '@acorex-platform/extension-communication-meta-client/contracts';\n\nconst ROOT = `@${RootConfig.config.i18n}`;\n\nexport const CommunicationMetaCommandI18n = {\n errors: {\n phoneNumberRequired: `${ROOT}:settings.whatsapp.errors.phone-number-required`,\n accessTokenNotConfigured: `${ROOT}:settings.whatsapp.errors.access-token-not-configured`,\n phoneNumberIdNotConfigured: `${ROOT}:settings.whatsapp.errors.phone-number-id-not-configured`,\n tenantRequired: `${ROOT}:settings.whatsapp.errors.tenant-required`,\n recipientNotFound: `${ROOT}:settings.whatsapp.errors.recipient-not-found`,\n unauthorized: `${ROOT}:settings.whatsapp.errors.unauthorized`,\n outsideWindow: `${ROOT}:settings.whatsapp.errors.outside-window`,\n apiError: `${ROOT}:settings.whatsapp.errors.api-error`,\n },\n test: {\n failed: `${ROOT}:settings.whatsapp.test.messages.failed`,\n },\n connect: {\n failed: `${ROOT}:integration.connect.messages.failed`,\n },\n} as const;\n","import { extractRequestErrorInfo } from '@acorex-platform/framework-client/common';\nimport { AXP_COMMUNICATION_META_ERROR_CODES } from '@acorex-platform/extension-communication-meta-client/contracts';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { CommunicationMetaCommandI18n } from './communication-meta-command.i18n';\n\nconst ERROR_I18N_BY_CODE: Record<string, string> = {\n [AXP_COMMUNICATION_META_ERROR_CODES.PHONE_NUMBER_REQUIRED]: CommunicationMetaCommandI18n.errors.phoneNumberRequired,\n [AXP_COMMUNICATION_META_ERROR_CODES.ACCESS_TOKEN_NOT_CONFIGURED]:\n CommunicationMetaCommandI18n.errors.accessTokenNotConfigured,\n [AXP_COMMUNICATION_META_ERROR_CODES.PHONE_NUMBER_ID_NOT_CONFIGURED]:\n CommunicationMetaCommandI18n.errors.phoneNumberIdNotConfigured,\n [AXP_COMMUNICATION_META_ERROR_CODES.TENANT_REQUIRED]: CommunicationMetaCommandI18n.errors.tenantRequired,\n [AXP_COMMUNICATION_META_ERROR_CODES.RECIPIENT_NOT_FOUND]: CommunicationMetaCommandI18n.errors.recipientNotFound,\n [AXP_COMMUNICATION_META_ERROR_CODES.UNAUTHORIZED]: CommunicationMetaCommandI18n.errors.unauthorized,\n [AXP_COMMUNICATION_META_ERROR_CODES.OUTSIDE_WINDOW]: CommunicationMetaCommandI18n.errors.outsideWindow,\n [AXP_COMMUNICATION_META_ERROR_CODES.API_ERROR]: CommunicationMetaCommandI18n.errors.apiError,\n};\n\nexport async function resolveCommunicationMetaCommandError(\n translationService: AXTranslationService,\n error: unknown,\n fallbackKey: string = CommunicationMetaCommandI18n.test.failed,\n): Promise<{ messageKeyOrText: string; displayText: string }> {\n const httpInfo = extractRequestErrorInfo(error);\n if (httpInfo?.code) {\n const messageKey = ERROR_I18N_BY_CODE[httpInfo.code];\n if (messageKey) {\n const displayText = await translationService.translateAsync(messageKey, {\n params: httpInfo.params,\n });\n return { messageKeyOrText: messageKey, displayText };\n }\n }\n\n if (httpInfo?.message) {\n return { messageKeyOrText: httpInfo.message, displayText: httpInfo.message };\n }\n\n if (error instanceof Error && error.message.trim()) {\n return { messageKeyOrText: error.message, displayText: error.message };\n }\n\n const displayText = await translationService.translateAsync(fallbackKey);\n return { messageKeyOrText: fallbackKey, displayText };\n}\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"acorex-platform-extension-communication-meta-client-communication-meta-command-error.util-Be3gOQPr.mjs","sources":["../../../../libs/extensions/communication/meta/client/src/lib/commands/communication-meta-command.i18n.ts","../../../../libs/extensions/communication/meta/client/src/lib/commands/communication-meta-command-error.util.ts"],"sourcesContent":["import { RootConfig } from '@acorex-platform/extension-communication-meta-client/contracts';\n\nconst ROOT = `@${RootConfig.config.i18n}`;\n\nexport const CommunicationMetaCommandI18n = {\n errors: {\n phoneNumberRequired: `${ROOT}:settings.whatsapp.errors.phone-number-required`,\n accessTokenNotConfigured: `${ROOT}:settings.whatsapp.errors.access-token-not-configured`,\n phoneNumberIdNotConfigured: `${ROOT}:settings.whatsapp.errors.phone-number-id-not-configured`,\n tenantRequired: `${ROOT}:settings.whatsapp.errors.tenant-required`,\n recipientNotFound: `${ROOT}:settings.whatsapp.errors.recipient-not-found`,\n unauthorized: `${ROOT}:settings.whatsapp.errors.unauthorized`,\n outsideWindow: `${ROOT}:settings.whatsapp.errors.outside-window`,\n apiError: `${ROOT}:settings.whatsapp.errors.api-error`,\n },\n test: {\n failed: `${ROOT}:settings.whatsapp.test.messages.failed`,\n },\n connect: {\n failed: `${ROOT}:integration.connect.messages.failed`,\n },\n} as const;\n","import { extractRequestErrorInfo } from '@acorex-platform/framework-client/common';\nimport { AXP_COMMUNICATION_META_ERROR_CODES } from '@acorex-platform/extension-communication-meta-client/contracts';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { CommunicationMetaCommandI18n } from './communication-meta-command.i18n';\n\nconst ERROR_I18N_BY_CODE: Record<string, string> = {\n [AXP_COMMUNICATION_META_ERROR_CODES.PHONE_NUMBER_REQUIRED]: CommunicationMetaCommandI18n.errors.phoneNumberRequired,\n [AXP_COMMUNICATION_META_ERROR_CODES.ACCESS_TOKEN_NOT_CONFIGURED]:\n CommunicationMetaCommandI18n.errors.accessTokenNotConfigured,\n [AXP_COMMUNICATION_META_ERROR_CODES.PHONE_NUMBER_ID_NOT_CONFIGURED]:\n CommunicationMetaCommandI18n.errors.phoneNumberIdNotConfigured,\n [AXP_COMMUNICATION_META_ERROR_CODES.TENANT_REQUIRED]: CommunicationMetaCommandI18n.errors.tenantRequired,\n [AXP_COMMUNICATION_META_ERROR_CODES.RECIPIENT_NOT_FOUND]: CommunicationMetaCommandI18n.errors.recipientNotFound,\n [AXP_COMMUNICATION_META_ERROR_CODES.UNAUTHORIZED]: CommunicationMetaCommandI18n.errors.unauthorized,\n [AXP_COMMUNICATION_META_ERROR_CODES.OUTSIDE_WINDOW]: CommunicationMetaCommandI18n.errors.outsideWindow,\n [AXP_COMMUNICATION_META_ERROR_CODES.API_ERROR]: CommunicationMetaCommandI18n.errors.apiError,\n};\n\nexport async function resolveCommunicationMetaCommandError(\n translationService: AXTranslationService,\n error: unknown,\n fallbackKey: string = CommunicationMetaCommandI18n.test.failed,\n): Promise<{ messageKeyOrText: string; displayText: string }> {\n const httpInfo = extractRequestErrorInfo(error);\n if (httpInfo?.code) {\n const messageKey = ERROR_I18N_BY_CODE[httpInfo.code];\n if (messageKey) {\n const displayText = await translationService.translateAsync(messageKey, {\n params: httpInfo.params,\n });\n return { messageKeyOrText: messageKey, displayText };\n }\n }\n\n if (httpInfo?.message) {\n return { messageKeyOrText: httpInfo.message, displayText: httpInfo.message };\n }\n\n if (error instanceof Error && error.message.trim()) {\n return { messageKeyOrText: error.message, displayText: error.message };\n }\n\n const displayText = await translationService.translateAsync(fallbackKey);\n return { messageKeyOrText: fallbackKey, displayText };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-extension-communication-meta-client-communication-test-whatsapp.command-GVjrHXJx.mjs","sources":["../../../../libs/extensions/communication/meta/client/src/lib/features/whatsapp/communication-whatsapp-test-dialog.service.ts","../../../../libs/extensions/communication/meta/client/src/lib/commands/communication-test-whatsapp.command.ts"],"sourcesContent":["import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult, AXP_INTEGRATION_CONNECTION_STATUS } from '@acorex-platform/framework-shared/core';\nimport {\n AXPLayoutBuilderService,\n resolveLayoutBuilderDialogResult,\n type AXPDialogRef,\n} from '@acorex-platform/framework-client/layout/builder';\nimport { Injectable, inject } from '@angular/core';\nimport {\n RootConfig,\n type CommunicationMetaWhatsAppTestResult,\n type CommunicationMetaWhatsAppUserLinkConfig,\n} from '@acorex-platform/extension-communication-meta-client/contracts';\nimport { AXMIntegrationConnectionManager } from '@acorex-platform/module-integration-management-client';\nimport { resolveCommunicationMetaCommandError } from '../../commands/communication-meta-command-error.util';\nimport { AXPCommunicationMetaClient } from '../../communication-meta-client.port';\n\n//#region ----- Types -----\n\ntype WhatsAppTestDialogResult = AXPRuntimeCommandResult<CommunicationMetaWhatsAppTestResult> | null;\n\n//#endregion\n\n//#region ----- WhatsApp test dialog -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXECommunicationWhatsAppTestDialogService {\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n private readonly client = inject(AXPCommunicationMetaClient);\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n\n private async resolveDefaultPhoneNumber(): Promise<string> {\n const connection = await this.connectionManager.findByUniqueKey({\n providerId: RootConfig.integration.providerId,\n connectionScope: 'user',\n connectionKey: 'default',\n });\n\n if (\n !connection ||\n connection.status !== AXP_INTEGRATION_CONNECTION_STATUS.Connected ||\n connection.isRevoked ||\n connection.isDisabled\n ) {\n return '';\n }\n\n const config = (connection.config ?? {}) as unknown as CommunicationMetaWhatsAppUserLinkConfig;\n return String(config.phoneNumber ?? connection.externalAccountId ?? '').trim();\n }\n\n async openAndSendTestMessage(): Promise<WhatsAppTestDialogResult> {\n const defaultPhoneNumber = await this.resolveDefaultPhoneNumber();\n\n try {\n const result = await this.layoutBuilder\n .create()\n .dialog<WhatsAppTestDialogResult>((dialog) => {\n dialog\n .setTitle('@extensions-communication-meta:settings.whatsapp.test.dialog.title')\n .setSize('sm')\n .setCloseButton(true)\n .setContext({ phoneNumber: defaultPhoneNumber })\n .content((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(\n '@extensions-communication-meta:settings.whatsapp.test.dialog.fields.phone-number.title',\n (field) => {\n field.path('phoneNumber');\n field.textBox({\n validations: [{ rule: 'required' }],\n placeholder:\n '@extensions-communication-meta:settings.whatsapp.test.dialog.fields.phone-number.placeholder',\n });\n },\n );\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@extensions-communication-meta:settings.whatsapp.test.dialog.actions.send');\n })\n .onAction(async (dialogRef: AXPDialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n const context = dialogRef.context() as Record<string, unknown> | null;\n const phoneNumber = String(context?.['phoneNumber'] ?? '').trim();\n if (!phoneNumber) {\n throw new Error(\n await this.translationService.translateAsync(\n '@extensions-communication-meta:settings.whatsapp.test.messages.phone-number-required',\n ),\n );\n }\n\n try {\n const data = await this.client.testWhatsApp({ phoneNumber });\n return { success: true, kind: 'object', data };\n } catch (error) {\n const { messageKeyOrText } = await resolveCommunicationMetaCommandError(\n this.translationService,\n error,\n );\n return {\n success: false,\n message: { text: messageKeyOrText },\n };\n }\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<AXPRuntimeCommandResult<CommunicationMetaWhatsAppTestResult>>(result);\n } catch (error) {\n const { messageKeyOrText } = await resolveCommunicationMetaCommandError(this.translationService, error);\n return {\n success: false,\n message: { text: messageKeyOrText },\n };\n }\n }\n}\n\n//#endregion\n","import { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXPCommand, AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport type { CommunicationMetaWhatsAppTestResult } from '@acorex-platform/extension-communication-meta-client/contracts';\nimport { Injectable, inject } from '@angular/core';\nimport { CommunicationMetaCommandI18n } from './communication-meta-command.i18n';\nimport { AXECommunicationWhatsAppTestDialogService } from '../features/whatsapp/communication-whatsapp-test-dialog.service';\n\n//#region ----- WhatsApp test command -----\n\n@Injectable()\nexport class CommunicationTestWhatsAppCommand\n implements AXPCommand<void, CommunicationMetaWhatsAppTestResult | null>\n{\n private readonly dialog = inject(AXECommunicationWhatsAppTestDialogService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(): AXPCommandExecuteResultPromise<CommunicationMetaWhatsAppTestResult | null> {\n const result = await this.dialog.openAndSendTestMessage();\n\n // Cancel / header close — not a failure for the integrations panel.\n if (!result) {\n return { success: true, kind: 'object', data: null };\n }\n\n if (result.success) {\n this.toastService.success(\n await this.translationService.translateAsync(\n '@extensions-communication-meta:settings.whatsapp.test.messages.success',\n ),\n );\n return result;\n }\n\n if (result.message?.text) {\n const content = await this.translationService.translateAsync(result.message.text);\n const title = await this.translationService.translateAsync(CommunicationMetaCommandI18n.test.failed);\n this.toastService.show({ color: 'danger', title, content });\n }\n\n return result;\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-extension-communication-meta-client-communication-test-whatsapp.command-GVjrHXJx.mjs","sources":["../../../../libs/extensions/communication/meta/client/src/lib/features/whatsapp/communication-whatsapp-test-dialog.service.ts","../../../../libs/extensions/communication/meta/client/src/lib/commands/communication-test-whatsapp.command.ts"],"sourcesContent":["import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult, AXP_INTEGRATION_CONNECTION_STATUS } from '@acorex-platform/framework-shared/core';\nimport {\n AXPLayoutBuilderService,\n resolveLayoutBuilderDialogResult,\n type AXPDialogRef,\n} from '@acorex-platform/framework-client/layout/builder';\nimport { Injectable, inject } from '@angular/core';\nimport {\n RootConfig,\n type CommunicationMetaWhatsAppTestResult,\n type CommunicationMetaWhatsAppUserLinkConfig,\n} from '@acorex-platform/extension-communication-meta-client/contracts';\nimport { AXMIntegrationConnectionManager } from '@acorex-platform/module-integration-management-client';\nimport { resolveCommunicationMetaCommandError } from '../../commands/communication-meta-command-error.util';\nimport { AXPCommunicationMetaClient } from '../../communication-meta-client.port';\n\n//#region ----- Types -----\n\ntype WhatsAppTestDialogResult = AXPRuntimeCommandResult<CommunicationMetaWhatsAppTestResult> | null;\n\n//#endregion\n\n//#region ----- WhatsApp test dialog -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXECommunicationWhatsAppTestDialogService {\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n private readonly client = inject(AXPCommunicationMetaClient);\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n\n private async resolveDefaultPhoneNumber(): Promise<string> {\n const connection = await this.connectionManager.findByUniqueKey({\n providerId: RootConfig.integration.providerId,\n connectionScope: 'user',\n connectionKey: 'default',\n });\n\n if (\n !connection ||\n connection.status !== AXP_INTEGRATION_CONNECTION_STATUS.Connected ||\n connection.isRevoked ||\n connection.isDisabled\n ) {\n return '';\n }\n\n const config = (connection.config ?? {}) as unknown as CommunicationMetaWhatsAppUserLinkConfig;\n return String(config.phoneNumber ?? connection.externalAccountId ?? '').trim();\n }\n\n async openAndSendTestMessage(): Promise<WhatsAppTestDialogResult> {\n const defaultPhoneNumber = await this.resolveDefaultPhoneNumber();\n\n try {\n const result = await this.layoutBuilder\n .create()\n .dialog<WhatsAppTestDialogResult>((dialog) => {\n dialog\n .setTitle('@extensions-communication-meta:settings.whatsapp.test.dialog.title')\n .setSize('sm')\n .setCloseButton(true)\n .setContext({ phoneNumber: defaultPhoneNumber })\n .content((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(\n '@extensions-communication-meta:settings.whatsapp.test.dialog.fields.phone-number.title',\n (field) => {\n field.path('phoneNumber');\n field.textBox({\n validations: [{ rule: 'required' }],\n placeholder:\n '@extensions-communication-meta:settings.whatsapp.test.dialog.fields.phone-number.placeholder',\n });\n },\n );\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@extensions-communication-meta:settings.whatsapp.test.dialog.actions.send');\n })\n .onAction(async (dialogRef: AXPDialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n const context = dialogRef.context() as Record<string, unknown> | null;\n const phoneNumber = String(context?.['phoneNumber'] ?? '').trim();\n if (!phoneNumber) {\n throw new Error(\n await this.translationService.translateAsync(\n '@extensions-communication-meta:settings.whatsapp.test.messages.phone-number-required',\n ),\n );\n }\n\n try {\n const data = await this.client.testWhatsApp({ phoneNumber });\n return { success: true, kind: 'object', data };\n } catch (error) {\n const { messageKeyOrText } = await resolveCommunicationMetaCommandError(\n this.translationService,\n error,\n );\n return {\n success: false,\n message: { text: messageKeyOrText },\n };\n }\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<AXPRuntimeCommandResult<CommunicationMetaWhatsAppTestResult>>(result);\n } catch (error) {\n const { messageKeyOrText } = await resolveCommunicationMetaCommandError(this.translationService, error);\n return {\n success: false,\n message: { text: messageKeyOrText },\n };\n }\n }\n}\n\n//#endregion\n","import { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXPCommand, AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport type { CommunicationMetaWhatsAppTestResult } from '@acorex-platform/extension-communication-meta-client/contracts';\nimport { Injectable, inject } from '@angular/core';\nimport { CommunicationMetaCommandI18n } from './communication-meta-command.i18n';\nimport { AXECommunicationWhatsAppTestDialogService } from '../features/whatsapp/communication-whatsapp-test-dialog.service';\n\n//#region ----- WhatsApp test command -----\n\n@Injectable()\nexport class CommunicationTestWhatsAppCommand\n implements AXPCommand<void, CommunicationMetaWhatsAppTestResult | null>\n{\n private readonly dialog = inject(AXECommunicationWhatsAppTestDialogService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(): AXPCommandExecuteResultPromise<CommunicationMetaWhatsAppTestResult | null> {\n const result = await this.dialog.openAndSendTestMessage();\n\n // Cancel / header close — not a failure for the integrations panel.\n if (!result) {\n return { success: true, kind: 'object', data: null };\n }\n\n if (result.success) {\n this.toastService.success(\n await this.translationService.translateAsync(\n '@extensions-communication-meta:settings.whatsapp.test.messages.success',\n ),\n );\n return result;\n }\n\n if (result.message?.text) {\n const content = await this.translationService.translateAsync(result.message.text);\n const title = await this.translationService.translateAsync(CommunicationMetaCommandI18n.test.failed);\n this.toastService.show({ color: 'danger', title, content });\n }\n\n return result;\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-extension-communication-meta-client-connect-whatsapp.command-Dpo-31ex.mjs","sources":["../../../../libs/extensions/communication/meta/client/src/lib/features/connect/communication-whatsapp-connect-dialog.service.ts","../../../../libs/extensions/communication/meta/client/src/lib/features/connect/connect-whatsapp.command.ts"],"sourcesContent":["import { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPLayoutBuilderService,\n resolveLayoutBuilderDialogResult,\n type AXPDialogRef,\n type IActionBuilder,\n type IDialogBuilder,\n type IFlexContainerBuilder,\n} from '@acorex-platform/framework-client/layout/builder';\nimport { Injectable, inject } from '@angular/core';\n\n//#region ----- Types -----\n\nexport interface CommunicationWhatsAppConnectResult {\n phoneNumber: string;\n displayName?: string;\n}\n\ninterface WhatsAppConnectDialogContext {\n phoneNumber: string;\n displayName: string;\n}\n\n//#endregion\n\n//#region ----- WhatsApp connect dialog -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXECommunicationWhatsAppConnectDialogService {\n //#region ----- Services & Dependencies -----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n async openAndLinkAccount(): Promise<CommunicationWhatsAppConnectResult | null> {\n const result = await this.layoutBuilder\n .create()\n .dialog<CommunicationWhatsAppConnectResult | null>((dialog: IDialogBuilder<CommunicationWhatsAppConnectResult | null>) => {\n dialog\n .setTitle('@extensions-communication-meta:integration.connect.dialog.title')\n .setSize('sm')\n .setCloseButton(true)\n .setContext({ phoneNumber: '', displayName: '' } satisfies WhatsAppConnectDialogContext)\n .content((flex: IFlexContainerBuilder) => {\n flex\n .setDirection('column')\n .setGap('12px')\n .customWidget('text-block-layout', {\n content: '@extensions-communication-meta:integration.connect.dialog.instructions',\n })\n .formField('@extensions-communication-meta:integration.connect.dialog.fields.phone-number.title', (field) => {\n field.path('phoneNumber');\n field.textBox({\n validations: [{ rule: 'required' }],\n placeholder:\n '@extensions-communication-meta:integration.connect.dialog.fields.phone-number.placeholder',\n });\n })\n .formField('@extensions-communication-meta:integration.connect.dialog.fields.display-name.title', (field) => {\n field.path('displayName');\n field.textBox({\n placeholder:\n '@extensions-communication-meta:integration.connect.dialog.fields.display-name.placeholder',\n });\n });\n })\n .setActions((actions: IActionBuilder) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@extensions-communication-meta:integration.connect.dialog.actions.connect');\n })\n .onAction(async (ref: AXPDialogRef) => {\n if (ref.action() === 'cancel') {\n return null;\n }\n\n const context = ref.context() as WhatsAppConnectDialogContext;\n const phoneNumber = String(context?.phoneNumber ?? '').trim();\n if (!phoneNumber) {\n throw new Error(\n await this.translationService.translateAsync(\n '@extensions-communication-meta:settings.whatsapp.errors.phone-number-required',\n ),\n );\n }\n\n const displayName = String(context?.displayName ?? '').trim();\n return {\n phoneNumber,\n ...(displayName ? { displayName } : {}),\n };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<CommunicationWhatsAppConnectResult>(result);\n }\n}\n\n//#endregion\n\n//#endregion\n","import { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXP_INTEGRATION_AUTH_METHOD_TYPE,\n AXP_INTEGRATION_CONNECTION_SCOPE,\n AXP_INTEGRATION_CONNECTION_STATUS,\n type AXPRuntimeCommandResult,\n type AXPIntegrationConnectionScope,\n} from '@acorex-platform/framework-shared/core';\nimport type { AXPCommand, AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n AXPLayoutBuilderService,\n resolveLayoutBuilderDialogResult,\n type AXPDialogRef,\n type IActionBuilder,\n type IDialogBuilder,\n type IFlexContainerBuilder,\n} from '@acorex-platform/framework-client/layout/builder';\nimport {\n AXMIntegrationConnectionManager,\n AXP_INTEGRATION_CREDENTIAL_MASK,\n hasConfiguredIntegrationCredentials,\n isMaskedIntegrationCredential,\n toSafeIntegrationConnectionDto,\n type ConnectCommandResult,\n} from '@acorex-platform/module-integration-management-client';\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo, trim } from 'lodash-es';\nimport {\n RootConfig,\n type CommunicationMetaWhatsAppTenantConnectionConfig,\n} from '@acorex-platform/extension-communication-meta-client/contracts';\nimport { resolveCommunicationMetaCommandError } from '../../commands/communication-meta-command-error.util';\nimport { CommunicationMetaCommandI18n } from '../../commands/communication-meta-command.i18n';\nimport { AXECommunicationWhatsAppConnectDialogService } from './communication-whatsapp-connect-dialog.service';\n\nexport interface ConnectWhatsAppCommandInput {\n providerId?: string;\n connectionScope?: AXPIntegrationConnectionScope;\n}\n\ninterface WhatsAppTenantConnectFormContext {\n accessToken: string;\n phoneNumberId: string;\n webhookVerifyToken: string;\n appSecret: string;\n}\n\ninterface WhatsAppTenantConnectFormResult {\n accessToken: string;\n phoneNumberId: string;\n webhookVerifyToken: string;\n appSecret: string;\n}\n\n//#region ---- Connect WhatsApp (tenant Cloud API or user link) ----\n\n@Injectable({ providedIn: 'root' })\nexport class ConnectWhatsAppCommand implements AXPCommand<ConnectWhatsAppCommandInput, ConnectCommandResult> {\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n private readonly connectDialog = inject(AXECommunicationWhatsAppConnectDialogService);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(input: ConnectWhatsAppCommandInput = {}): AXPCommandExecuteResultPromise<ConnectCommandResult> {\n const connectionScope = input.connectionScope ?? AXP_INTEGRATION_CONNECTION_SCOPE.User;\n if (connectionScope === AXP_INTEGRATION_CONNECTION_SCOPE.Tenant) {\n return this.connectTenantCloudApi(input);\n }\n return this.connectUserLink(input);\n }\n\n private async connectTenantCloudApi(\n input: ConnectWhatsAppCommandInput,\n ): AXPCommandExecuteResultPromise<ConnectCommandResult> {\n try {\n const providerId = input.providerId ?? RootConfig.integration.providerId;\n const connectionScope = AXP_INTEGRATION_CONNECTION_SCOPE.Tenant;\n const I18N = `@${RootConfig.config.i18n}:integration.connect.tenant`;\n const existing = await this.connectionManager.findByUniqueKey({\n providerId,\n connectionScope,\n connectionKey: 'default',\n });\n const isReconfigure = hasConfiguredIntegrationCredentials(existing);\n const existingConfig = (existing?.config ?? {}) as CommunicationMetaWhatsAppTenantConnectionConfig;\n\n const form = await this.openTenantConnectDialog({\n i18nPrefix: I18N,\n isReconfigure,\n context: {\n accessToken: isReconfigure ? AXP_INTEGRATION_CREDENTIAL_MASK : '',\n phoneNumberId: existingConfig.phoneNumberId ?? '',\n webhookVerifyToken: isReconfigure && existingConfig.webhookVerifyToken\n ? AXP_INTEGRATION_CREDENTIAL_MASK\n : '',\n appSecret: isReconfigure && existingConfig.appSecret ? AXP_INTEGRATION_CREDENTIAL_MASK : '',\n },\n });\n\n if (!form) {\n return { success: true, kind: 'object', data: { outcome: 'cancelled' } };\n }\n\n let accessToken = trim(form.accessToken);\n if (isMaskedIntegrationCredential(accessToken) && existing) {\n accessToken = trim(existingConfig.accessToken ?? '');\n }\n\n let webhookVerifyToken = trim(form.webhookVerifyToken);\n if (isMaskedIntegrationCredential(webhookVerifyToken) && existing) {\n webhookVerifyToken = trim(existingConfig.webhookVerifyToken ?? '');\n }\n\n let appSecret = trim(form.appSecret);\n if (isMaskedIntegrationCredential(appSecret) && existing) {\n appSecret = trim(existingConfig.appSecret ?? '');\n }\n\n const phoneNumberId = trim(form.phoneNumberId);\n if (!accessToken || !phoneNumberId) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(`${I18N}.messages.credentials-required`),\n },\n };\n }\n\n const connection = await this.connectionManager.upsertConnection({\n providerId,\n authMethodType: AXP_INTEGRATION_AUTH_METHOD_TYPE.ApiToken,\n connectionScope,\n connectionKey: 'default',\n displayName: existing?.displayName ?? 'WhatsApp',\n externalAccountId: phoneNumberId,\n externalAccountName: AXP_INTEGRATION_CREDENTIAL_MASK,\n config: {\n accessToken,\n phoneNumberId,\n webhookVerifyToken: webhookVerifyToken || null,\n appSecret: appSecret || null,\n },\n status: AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n isRevoked: false,\n isDisabled: false,\n });\n\n this.toastService.success(\n await this.translationService.translateAsync(`${I18N}.messages.success`),\n );\n\n return { success: true, kind: 'object',\n data: {\n outcome: 'connected',\n connection: toSafeIntegrationConnectionDto(connection),\n },\n };\n } catch (error: unknown) {\n const { displayText } = await resolveCommunicationMetaCommandError(\n this.translationService,\n error,\n CommunicationMetaCommandI18n.connect.failed,\n );\n return { success: false, message: { text: displayText } };\n }\n }\n\n private async connectUserLink(\n input: ConnectWhatsAppCommandInput,\n ): AXPCommandExecuteResultPromise<ConnectCommandResult> {\n try {\n const providerId = input.providerId ?? RootConfig.integration.providerId;\n const connectionScope = AXP_INTEGRATION_CONNECTION_SCOPE.User;\n const existing = await this.connectionManager.findByUniqueKey({\n providerId,\n connectionScope,\n connectionKey: 'default',\n });\n\n const linked = await this.connectDialog.openAndLinkAccount();\n if (!linked || typeof linked !== 'object' || !('phoneNumber' in linked)) {\n return { success: true, kind: 'object', data: { outcome: 'cancelled' } };\n }\n\n const phoneNumber = trim(linked.phoneNumber);\n if (!phoneNumber) {\n return { success: true, kind: 'object', data: { outcome: 'cancelled' } };\n }\n\n const displayName = defaultTo(trim(linked.displayName), 'WhatsApp');\n\n const connection = await this.connectionManager.upsertConnection({\n providerId,\n authMethodType: AXP_INTEGRATION_AUTH_METHOD_TYPE.ApiToken,\n connectionScope,\n connectionKey: 'default',\n displayName: existing?.displayName ?? displayName,\n externalAccountId: phoneNumber,\n externalAccountName: displayName,\n config: {\n phoneNumber,\n displayName: displayName || null,\n },\n status: AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n isRevoked: false,\n isDisabled: false,\n });\n\n this.toastService.success(\n await this.translationService.translateAsync(\n '@extensions-communication-meta:integration.connect.messages.success',\n ),\n );\n\n return { success: true, kind: 'object',\n data: {\n outcome: 'connected',\n connection: toSafeIntegrationConnectionDto(connection),\n },\n };\n } catch (error: unknown) {\n const { displayText } = await resolveCommunicationMetaCommandError(\n this.translationService,\n error,\n CommunicationMetaCommandI18n.connect.failed,\n );\n return { success: false, message: { text: displayText } };\n }\n }\n\n private async openTenantConnectDialog(input: {\n i18nPrefix: string;\n isReconfigure: boolean;\n context: WhatsAppTenantConnectFormContext;\n }): Promise<WhatsAppTenantConnectFormResult | null> {\n const result = await this.layoutBuilder\n .create()\n .dialog<WhatsAppTenantConnectFormResult | null>((dialog: IDialogBuilder<WhatsAppTenantConnectFormResult | null>) => {\n dialog\n .setTitle(\n input.isReconfigure\n ? `${input.i18nPrefix}.dialog.configure-title`\n : `${input.i18nPrefix}.dialog.title`,\n )\n .setSize('md')\n .setCloseButton(true)\n .setContext({ ...input.context })\n .content((flex: IFlexContainerBuilder) => {\n flex\n .setDirection('column')\n .setGap('12px')\n .customWidget('text-block-layout', {\n content: `${input.i18nPrefix}.dialog.instructions`,\n })\n .formField(`${input.i18nPrefix}.dialog.fields.access-token`, (field) => {\n field.path('accessToken');\n field.passwordBox({\n placeholder: `${input.i18nPrefix}.dialog.placeholders.access-token`,\n revealToggle: true,\n validations: [{ rule: 'required' }],\n });\n })\n .formField(`${input.i18nPrefix}.dialog.fields.phone-number-id`, (field) => {\n field.path('phoneNumberId');\n field.textBox({\n placeholder: `${input.i18nPrefix}.dialog.placeholders.phone-number-id`,\n validations: [{ rule: 'required' }],\n });\n })\n .formField(`${input.i18nPrefix}.dialog.fields.webhook-verify-token`, (field) => {\n field.path('webhookVerifyToken');\n field.passwordBox({\n placeholder: `${input.i18nPrefix}.dialog.placeholders.webhook-verify-token`,\n revealToggle: true,\n });\n })\n .formField(`${input.i18nPrefix}.dialog.fields.app-secret`, (field) => {\n field.path('appSecret');\n field.passwordBox({\n placeholder: `${input.i18nPrefix}.dialog.placeholders.app-secret`,\n revealToggle: true,\n });\n });\n })\n .setActions((actions: IActionBuilder) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit(`${input.i18nPrefix}.dialog.actions.save`);\n })\n .onAction(async (ref: AXPDialogRef) => {\n if (ref.action() === 'cancel') {\n return null;\n }\n const ctx = ref.context() as WhatsAppTenantConnectFormContext;\n const accessToken = trim(ctx.accessToken);\n const phoneNumberId = trim(ctx.phoneNumberId);\n if (!accessToken || !phoneNumberId) {\n throw new Error(`${input.i18nPrefix}.messages.credentials-required`);\n }\n return {\n accessToken,\n phoneNumberId,\n webhookVerifyToken: trim(ctx.webhookVerifyToken),\n appSecret: trim(ctx.appSecret),\n };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<WhatsAppTenantConnectFormResult>(result);\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-extension-communication-meta-client-connect-whatsapp.command-Dpo-31ex.mjs","sources":["../../../../libs/extensions/communication/meta/client/src/lib/features/connect/communication-whatsapp-connect-dialog.service.ts","../../../../libs/extensions/communication/meta/client/src/lib/features/connect/connect-whatsapp.command.ts"],"sourcesContent":["import { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPLayoutBuilderService,\n resolveLayoutBuilderDialogResult,\n type AXPDialogRef,\n type IActionBuilder,\n type IDialogBuilder,\n type IFlexContainerBuilder,\n} from '@acorex-platform/framework-client/layout/builder';\nimport { Injectable, inject } from '@angular/core';\n\n//#region ----- Types -----\n\nexport interface CommunicationWhatsAppConnectResult {\n phoneNumber: string;\n displayName?: string;\n}\n\ninterface WhatsAppConnectDialogContext {\n phoneNumber: string;\n displayName: string;\n}\n\n//#endregion\n\n//#region ----- WhatsApp connect dialog -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXECommunicationWhatsAppConnectDialogService {\n //#region ----- Services & Dependencies -----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n async openAndLinkAccount(): Promise<CommunicationWhatsAppConnectResult | null> {\n const result = await this.layoutBuilder\n .create()\n .dialog<CommunicationWhatsAppConnectResult | null>((dialog: IDialogBuilder<CommunicationWhatsAppConnectResult | null>) => {\n dialog\n .setTitle('@extensions-communication-meta:integration.connect.dialog.title')\n .setSize('sm')\n .setCloseButton(true)\n .setContext({ phoneNumber: '', displayName: '' } satisfies WhatsAppConnectDialogContext)\n .content((flex: IFlexContainerBuilder) => {\n flex\n .setDirection('column')\n .setGap('12px')\n .customWidget('text-block-layout', {\n content: '@extensions-communication-meta:integration.connect.dialog.instructions',\n })\n .formField('@extensions-communication-meta:integration.connect.dialog.fields.phone-number.title', (field) => {\n field.path('phoneNumber');\n field.textBox({\n validations: [{ rule: 'required' }],\n placeholder:\n '@extensions-communication-meta:integration.connect.dialog.fields.phone-number.placeholder',\n });\n })\n .formField('@extensions-communication-meta:integration.connect.dialog.fields.display-name.title', (field) => {\n field.path('displayName');\n field.textBox({\n placeholder:\n '@extensions-communication-meta:integration.connect.dialog.fields.display-name.placeholder',\n });\n });\n })\n .setActions((actions: IActionBuilder) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@extensions-communication-meta:integration.connect.dialog.actions.connect');\n })\n .onAction(async (ref: AXPDialogRef) => {\n if (ref.action() === 'cancel') {\n return null;\n }\n\n const context = ref.context() as WhatsAppConnectDialogContext;\n const phoneNumber = String(context?.phoneNumber ?? '').trim();\n if (!phoneNumber) {\n throw new Error(\n await this.translationService.translateAsync(\n '@extensions-communication-meta:settings.whatsapp.errors.phone-number-required',\n ),\n );\n }\n\n const displayName = String(context?.displayName ?? '').trim();\n return {\n phoneNumber,\n ...(displayName ? { displayName } : {}),\n };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<CommunicationWhatsAppConnectResult>(result);\n }\n}\n\n//#endregion\n\n//#endregion\n","import { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXP_INTEGRATION_AUTH_METHOD_TYPE,\n AXP_INTEGRATION_CONNECTION_SCOPE,\n AXP_INTEGRATION_CONNECTION_STATUS,\n type AXPRuntimeCommandResult,\n type AXPIntegrationConnectionScope,\n} from '@acorex-platform/framework-shared/core';\nimport type { AXPCommand, AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n AXPLayoutBuilderService,\n resolveLayoutBuilderDialogResult,\n type AXPDialogRef,\n type IActionBuilder,\n type IDialogBuilder,\n type IFlexContainerBuilder,\n} from '@acorex-platform/framework-client/layout/builder';\nimport {\n AXMIntegrationConnectionManager,\n AXP_INTEGRATION_CREDENTIAL_MASK,\n hasConfiguredIntegrationCredentials,\n isMaskedIntegrationCredential,\n toSafeIntegrationConnectionDto,\n type ConnectCommandResult,\n} from '@acorex-platform/module-integration-management-client';\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo, trim } from 'lodash-es';\nimport {\n RootConfig,\n type CommunicationMetaWhatsAppTenantConnectionConfig,\n} from '@acorex-platform/extension-communication-meta-client/contracts';\nimport { resolveCommunicationMetaCommandError } from '../../commands/communication-meta-command-error.util';\nimport { CommunicationMetaCommandI18n } from '../../commands/communication-meta-command.i18n';\nimport { AXECommunicationWhatsAppConnectDialogService } from './communication-whatsapp-connect-dialog.service';\n\nexport interface ConnectWhatsAppCommandInput {\n providerId?: string;\n connectionScope?: AXPIntegrationConnectionScope;\n}\n\ninterface WhatsAppTenantConnectFormContext {\n accessToken: string;\n phoneNumberId: string;\n webhookVerifyToken: string;\n appSecret: string;\n}\n\ninterface WhatsAppTenantConnectFormResult {\n accessToken: string;\n phoneNumberId: string;\n webhookVerifyToken: string;\n appSecret: string;\n}\n\n//#region ---- Connect WhatsApp (tenant Cloud API or user link) ----\n\n@Injectable({ providedIn: 'root' })\nexport class ConnectWhatsAppCommand implements AXPCommand<ConnectWhatsAppCommandInput, ConnectCommandResult> {\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n private readonly connectDialog = inject(AXECommunicationWhatsAppConnectDialogService);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(input: ConnectWhatsAppCommandInput = {}): AXPCommandExecuteResultPromise<ConnectCommandResult> {\n const connectionScope = input.connectionScope ?? AXP_INTEGRATION_CONNECTION_SCOPE.User;\n if (connectionScope === AXP_INTEGRATION_CONNECTION_SCOPE.Tenant) {\n return this.connectTenantCloudApi(input);\n }\n return this.connectUserLink(input);\n }\n\n private async connectTenantCloudApi(\n input: ConnectWhatsAppCommandInput,\n ): AXPCommandExecuteResultPromise<ConnectCommandResult> {\n try {\n const providerId = input.providerId ?? RootConfig.integration.providerId;\n const connectionScope = AXP_INTEGRATION_CONNECTION_SCOPE.Tenant;\n const I18N = `@${RootConfig.config.i18n}:integration.connect.tenant`;\n const existing = await this.connectionManager.findByUniqueKey({\n providerId,\n connectionScope,\n connectionKey: 'default',\n });\n const isReconfigure = hasConfiguredIntegrationCredentials(existing);\n const existingConfig = (existing?.config ?? {}) as CommunicationMetaWhatsAppTenantConnectionConfig;\n\n const form = await this.openTenantConnectDialog({\n i18nPrefix: I18N,\n isReconfigure,\n context: {\n accessToken: isReconfigure ? AXP_INTEGRATION_CREDENTIAL_MASK : '',\n phoneNumberId: existingConfig.phoneNumberId ?? '',\n webhookVerifyToken: isReconfigure && existingConfig.webhookVerifyToken\n ? AXP_INTEGRATION_CREDENTIAL_MASK\n : '',\n appSecret: isReconfigure && existingConfig.appSecret ? AXP_INTEGRATION_CREDENTIAL_MASK : '',\n },\n });\n\n if (!form) {\n return { success: true, kind: 'object', data: { outcome: 'cancelled' } };\n }\n\n let accessToken = trim(form.accessToken);\n if (isMaskedIntegrationCredential(accessToken) && existing) {\n accessToken = trim(existingConfig.accessToken ?? '');\n }\n\n let webhookVerifyToken = trim(form.webhookVerifyToken);\n if (isMaskedIntegrationCredential(webhookVerifyToken) && existing) {\n webhookVerifyToken = trim(existingConfig.webhookVerifyToken ?? '');\n }\n\n let appSecret = trim(form.appSecret);\n if (isMaskedIntegrationCredential(appSecret) && existing) {\n appSecret = trim(existingConfig.appSecret ?? '');\n }\n\n const phoneNumberId = trim(form.phoneNumberId);\n if (!accessToken || !phoneNumberId) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(`${I18N}.messages.credentials-required`),\n },\n };\n }\n\n const connection = await this.connectionManager.upsertConnection({\n providerId,\n authMethodType: AXP_INTEGRATION_AUTH_METHOD_TYPE.ApiToken,\n connectionScope,\n connectionKey: 'default',\n displayName: existing?.displayName ?? 'WhatsApp',\n externalAccountId: phoneNumberId,\n externalAccountName: AXP_INTEGRATION_CREDENTIAL_MASK,\n config: {\n accessToken,\n phoneNumberId,\n webhookVerifyToken: webhookVerifyToken || null,\n appSecret: appSecret || null,\n },\n status: AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n isRevoked: false,\n isDisabled: false,\n });\n\n this.toastService.success(\n await this.translationService.translateAsync(`${I18N}.messages.success`),\n );\n\n return { success: true, kind: 'object',\n data: {\n outcome: 'connected',\n connection: toSafeIntegrationConnectionDto(connection),\n },\n };\n } catch (error: unknown) {\n const { displayText } = await resolveCommunicationMetaCommandError(\n this.translationService,\n error,\n CommunicationMetaCommandI18n.connect.failed,\n );\n return { success: false, message: { text: displayText } };\n }\n }\n\n private async connectUserLink(\n input: ConnectWhatsAppCommandInput,\n ): AXPCommandExecuteResultPromise<ConnectCommandResult> {\n try {\n const providerId = input.providerId ?? RootConfig.integration.providerId;\n const connectionScope = AXP_INTEGRATION_CONNECTION_SCOPE.User;\n const existing = await this.connectionManager.findByUniqueKey({\n providerId,\n connectionScope,\n connectionKey: 'default',\n });\n\n const linked = await this.connectDialog.openAndLinkAccount();\n if (!linked || typeof linked !== 'object' || !('phoneNumber' in linked)) {\n return { success: true, kind: 'object', data: { outcome: 'cancelled' } };\n }\n\n const phoneNumber = trim(linked.phoneNumber);\n if (!phoneNumber) {\n return { success: true, kind: 'object', data: { outcome: 'cancelled' } };\n }\n\n const displayName = defaultTo(trim(linked.displayName), 'WhatsApp');\n\n const connection = await this.connectionManager.upsertConnection({\n providerId,\n authMethodType: AXP_INTEGRATION_AUTH_METHOD_TYPE.ApiToken,\n connectionScope,\n connectionKey: 'default',\n displayName: existing?.displayName ?? displayName,\n externalAccountId: phoneNumber,\n externalAccountName: displayName,\n config: {\n phoneNumber,\n displayName: displayName || null,\n },\n status: AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n isRevoked: false,\n isDisabled: false,\n });\n\n this.toastService.success(\n await this.translationService.translateAsync(\n '@extensions-communication-meta:integration.connect.messages.success',\n ),\n );\n\n return { success: true, kind: 'object',\n data: {\n outcome: 'connected',\n connection: toSafeIntegrationConnectionDto(connection),\n },\n };\n } catch (error: unknown) {\n const { displayText } = await resolveCommunicationMetaCommandError(\n this.translationService,\n error,\n CommunicationMetaCommandI18n.connect.failed,\n );\n return { success: false, message: { text: displayText } };\n }\n }\n\n private async openTenantConnectDialog(input: {\n i18nPrefix: string;\n isReconfigure: boolean;\n context: WhatsAppTenantConnectFormContext;\n }): Promise<WhatsAppTenantConnectFormResult | null> {\n const result = await this.layoutBuilder\n .create()\n .dialog<WhatsAppTenantConnectFormResult | null>((dialog: IDialogBuilder<WhatsAppTenantConnectFormResult | null>) => {\n dialog\n .setTitle(\n input.isReconfigure\n ? `${input.i18nPrefix}.dialog.configure-title`\n : `${input.i18nPrefix}.dialog.title`,\n )\n .setSize('md')\n .setCloseButton(true)\n .setContext({ ...input.context })\n .content((flex: IFlexContainerBuilder) => {\n flex\n .setDirection('column')\n .setGap('12px')\n .customWidget('text-block-layout', {\n content: `${input.i18nPrefix}.dialog.instructions`,\n })\n .formField(`${input.i18nPrefix}.dialog.fields.access-token`, (field) => {\n field.path('accessToken');\n field.passwordBox({\n placeholder: `${input.i18nPrefix}.dialog.placeholders.access-token`,\n revealToggle: true,\n validations: [{ rule: 'required' }],\n });\n })\n .formField(`${input.i18nPrefix}.dialog.fields.phone-number-id`, (field) => {\n field.path('phoneNumberId');\n field.textBox({\n placeholder: `${input.i18nPrefix}.dialog.placeholders.phone-number-id`,\n validations: [{ rule: 'required' }],\n });\n })\n .formField(`${input.i18nPrefix}.dialog.fields.webhook-verify-token`, (field) => {\n field.path('webhookVerifyToken');\n field.passwordBox({\n placeholder: `${input.i18nPrefix}.dialog.placeholders.webhook-verify-token`,\n revealToggle: true,\n });\n })\n .formField(`${input.i18nPrefix}.dialog.fields.app-secret`, (field) => {\n field.path('appSecret');\n field.passwordBox({\n placeholder: `${input.i18nPrefix}.dialog.placeholders.app-secret`,\n revealToggle: true,\n });\n });\n })\n .setActions((actions: IActionBuilder) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit(`${input.i18nPrefix}.dialog.actions.save`);\n })\n .onAction(async (ref: AXPDialogRef) => {\n if (ref.action() === 'cancel') {\n return null;\n }\n const ctx = ref.context() as WhatsAppTenantConnectFormContext;\n const accessToken = trim(ctx.accessToken);\n const phoneNumberId = trim(ctx.phoneNumberId);\n if (!accessToken || !phoneNumberId) {\n throw new Error(`${input.i18nPrefix}.messages.credentials-required`);\n }\n return {\n accessToken,\n phoneNumberId,\n webhookVerifyToken: trim(ctx.webhookVerifyToken),\n appSecret: trim(ctx.appSecret),\n };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<WhatsAppTenantConnectFormResult>(result);\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-extension-communication-meta-client-contracts.mjs","sources":["../../../../libs/extensions/communication/meta/contracts/src/root-config.ts","../../../../libs/extensions/communication/meta/contracts/src/integration-domain.constants.ts","../../../../libs/extensions/communication/meta/contracts/src/communication-meta.errors.ts","../../../../libs/extensions/communication/meta/contracts/src/communication-meta.test.types.ts","../../../../libs/extensions/communication/meta/contracts/src/acorex-platform-extension-communication-meta-client-contracts.ts"],"sourcesContent":["/**\n * Meta communication extension (WhatsApp Cloud API first; Messenger / Instagram later).\n * Package group: libs/extensions/communication/meta — no separate core lib.\n */\nexport const RootConfig = {\n module: {\n name: 'CommunicationMetaExtension',\n icon: 'fa-brands fa-whatsapp',\n },\n config: {\n i18n: 'extensions-communication-meta',\n },\n integration: {\n /** WhatsApp Cloud API — first Meta messaging product in this extension. */\n channelKey: 'whatsapp',\n providerId: 'whatsapp',\n },\n} as const;\n\nexport const AXPCommunicationMetaSettingKeys = {\n DebugRedirectPhoneNumber: 'CommunicationMetaExtension:Setting:Debug.Redirect.PhoneNumber',\n UserDeliveryChannelEnabled: 'CommunicationMetaExtension:Setting:User.Whatsapp.DeliveryChannel.Enabled',\n} as const;\n\n/** Keys seeded at platform scope on startup (never include secrets). */\nexport const AXP_COMMUNICATION_META_PLATFORM_SEED_DEFAULTS: Record<string, unknown> = {\n [AXPCommunicationMetaSettingKeys.DebugRedirectPhoneNumber]: '',\n};\n\nexport const AXP_COMMUNICATION_META_SETTING_DEFAULTS: Record<string, unknown> = {\n ...AXP_COMMUNICATION_META_PLATFORM_SEED_DEFAULTS,\n [AXPCommunicationMetaSettingKeys.UserDeliveryChannelEnabled]: true,\n};\n\nexport const AXECommunicationMetaCommandKeys = {\n TestWhatsApp: 'CommunicationMetaExtension:Communication:TestWhatsApp',\n ConnectionConnect: 'CommunicationMetaExtension:Integration:ConnectWhatsApp',\n} as const;\n","/** Shared communication integration domain (Telegram, WhatsApp, …). */\nexport const AXE_COMMUNICATION_DOMAIN_ID = 'communication';\n","export const AXP_COMMUNICATION_META_ERROR_CODES = {\n PHONE_NUMBER_REQUIRED: 'COMMUNICATION_META_WHATSAPP_PHONE_NUMBER_REQUIRED',\n ACCESS_TOKEN_NOT_CONFIGURED: 'COMMUNICATION_META_WHATSAPP_ACCESS_TOKEN_NOT_CONFIGURED',\n PHONE_NUMBER_ID_NOT_CONFIGURED: 'COMMUNICATION_META_WHATSAPP_PHONE_NUMBER_ID_NOT_CONFIGURED',\n TENANT_REQUIRED: 'COMMUNICATION_META_WHATSAPP_TENANT_REQUIRED',\n RECIPIENT_NOT_FOUND: 'COMMUNICATION_META_WHATSAPP_RECIPIENT_NOT_FOUND',\n UNAUTHORIZED: 'COMMUNICATION_META_WHATSAPP_UNAUTHORIZED',\n OUTSIDE_WINDOW: 'COMMUNICATION_META_WHATSAPP_OUTSIDE_WINDOW',\n API_ERROR: 'COMMUNICATION_META_WHATSAPP_API_ERROR',\n} as const;\n\nexport type AXPCommunicationMetaErrorCode =\n (typeof AXP_COMMUNICATION_META_ERROR_CODES)[keyof typeof AXP_COMMUNICATION_META_ERROR_CODES];\n\nexport interface AXPCommunicationMetaApiErrorPayload {\n code: AXPCommunicationMetaErrorCode;\n description?: string;\n}\n","//#region ---- WhatsApp test types ----\n\nexport interface CommunicationMetaWhatsAppTestInput {\n phoneNumber: string;\n}\n\nexport interface CommunicationMetaWhatsAppTestResult {\n phoneNumber: string;\n messageId?: string;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;;AAGG;AACI,MAAM,UAAU,GAAG;AACxB,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,IAAI,EAAE,uBAAuB;AAC9B,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,+BAA+B;AACtC,KAAA;AACD,IAAA,WAAW,EAAE;;AAEX,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,UAAU,EAAE,UAAU;AACvB,KAAA;;AAGI,MAAM,+BAA+B,GAAG;AAC7C,IAAA,wBAAwB,EAAE,+DAA+D;AACzF,IAAA,0BAA0B,EAAE,0EAA0E;;AAGxG;AACO,MAAM,6CAA6C,GAA4B;AACpF,IAAA,CAAC,+BAA+B,CAAC,wBAAwB,GAAG,EAAE;;AAGzD,MAAM,uCAAuC,GAA4B;AAC9E,IAAA,GAAG,6CAA6C;AAChD,IAAA,CAAC,+BAA+B,CAAC,0BAA0B,GAAG,IAAI;;AAG7D,MAAM,+BAA+B,GAAG;AAC7C,IAAA,YAAY,EAAE,uDAAuD;AACrE,IAAA,iBAAiB,EAAE,wDAAwD;;;ACpC7E;AACO,MAAM,2BAA2B,GAAG;;ACDpC,MAAM,kCAAkC,GAAG;AAChD,IAAA,qBAAqB,EAAE,mDAAmD;AAC1E,IAAA,2BAA2B,EAAE,yDAAyD;AACtF,IAAA,8BAA8B,EAAE,4DAA4D;AAC5F,IAAA,eAAe,EAAE,6CAA6C;AAC9D,IAAA,mBAAmB,EAAE,iDAAiD;AACtE,IAAA,YAAY,EAAE,0CAA0C;AACxD,IAAA,cAAc,EAAE,4CAA4C;AAC5D,IAAA,SAAS,EAAE,uCAAuC;;;ACRpD;AAWA;;ACXA;;AAEG
|
|
1
|
+
{"version":3,"file":"acorex-platform-extension-communication-meta-client-contracts.mjs","sources":["../../../../libs/extensions/communication/meta/contracts/src/root-config.ts","../../../../libs/extensions/communication/meta/contracts/src/integration-domain.constants.ts","../../../../libs/extensions/communication/meta/contracts/src/communication-meta.errors.ts","../../../../libs/extensions/communication/meta/contracts/src/communication-meta.test.types.ts","../../../../libs/extensions/communication/meta/contracts/src/acorex-platform-extension-communication-meta-client-contracts.ts"],"sourcesContent":["/**\n * Meta communication extension (WhatsApp Cloud API first; Messenger / Instagram later).\n * Package group: libs/extensions/communication/meta — no separate core lib.\n */\nexport const RootConfig = {\n module: {\n name: 'CommunicationMetaExtension',\n icon: 'fa-brands fa-whatsapp',\n },\n config: {\n i18n: 'extensions-communication-meta',\n },\n integration: {\n /** WhatsApp Cloud API — first Meta messaging product in this extension. */\n channelKey: 'whatsapp',\n providerId: 'whatsapp',\n },\n} as const;\n\nexport const AXPCommunicationMetaSettingKeys = {\n DebugRedirectPhoneNumber: 'CommunicationMetaExtension:Setting:Debug.Redirect.PhoneNumber',\n UserDeliveryChannelEnabled: 'CommunicationMetaExtension:Setting:User.Whatsapp.DeliveryChannel.Enabled',\n} as const;\n\n/** Keys seeded at platform scope on startup (never include secrets). */\nexport const AXP_COMMUNICATION_META_PLATFORM_SEED_DEFAULTS: Record<string, unknown> = {\n [AXPCommunicationMetaSettingKeys.DebugRedirectPhoneNumber]: '',\n};\n\nexport const AXP_COMMUNICATION_META_SETTING_DEFAULTS: Record<string, unknown> = {\n ...AXP_COMMUNICATION_META_PLATFORM_SEED_DEFAULTS,\n [AXPCommunicationMetaSettingKeys.UserDeliveryChannelEnabled]: true,\n};\n\nexport const AXECommunicationMetaCommandKeys = {\n TestWhatsApp: 'CommunicationMetaExtension:Communication:TestWhatsApp',\n ConnectionConnect: 'CommunicationMetaExtension:Integration:ConnectWhatsApp',\n} as const;\n","/** Shared communication integration domain (Telegram, WhatsApp, …). */\nexport const AXE_COMMUNICATION_DOMAIN_ID = 'communication';\n","export const AXP_COMMUNICATION_META_ERROR_CODES = {\n PHONE_NUMBER_REQUIRED: 'COMMUNICATION_META_WHATSAPP_PHONE_NUMBER_REQUIRED',\n ACCESS_TOKEN_NOT_CONFIGURED: 'COMMUNICATION_META_WHATSAPP_ACCESS_TOKEN_NOT_CONFIGURED',\n PHONE_NUMBER_ID_NOT_CONFIGURED: 'COMMUNICATION_META_WHATSAPP_PHONE_NUMBER_ID_NOT_CONFIGURED',\n TENANT_REQUIRED: 'COMMUNICATION_META_WHATSAPP_TENANT_REQUIRED',\n RECIPIENT_NOT_FOUND: 'COMMUNICATION_META_WHATSAPP_RECIPIENT_NOT_FOUND',\n UNAUTHORIZED: 'COMMUNICATION_META_WHATSAPP_UNAUTHORIZED',\n OUTSIDE_WINDOW: 'COMMUNICATION_META_WHATSAPP_OUTSIDE_WINDOW',\n API_ERROR: 'COMMUNICATION_META_WHATSAPP_API_ERROR',\n} as const;\n\nexport type AXPCommunicationMetaErrorCode =\n (typeof AXP_COMMUNICATION_META_ERROR_CODES)[keyof typeof AXP_COMMUNICATION_META_ERROR_CODES];\n\nexport interface AXPCommunicationMetaApiErrorPayload {\n code: AXPCommunicationMetaErrorCode;\n description?: string;\n}\n","//#region ---- WhatsApp test types ----\n\nexport interface CommunicationMetaWhatsAppTestInput {\n phoneNumber: string;\n}\n\nexport interface CommunicationMetaWhatsAppTestResult {\n phoneNumber: string;\n messageId?: string;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;;AAGG;AACI,MAAM,UAAU,GAAG;AACxB,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,IAAI,EAAE,uBAAuB;AAC9B,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,+BAA+B;AACtC,KAAA;AACD,IAAA,WAAW,EAAE;;AAEX,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,UAAU,EAAE,UAAU;AACvB,KAAA;;AAGI,MAAM,+BAA+B,GAAG;AAC7C,IAAA,wBAAwB,EAAE,+DAA+D;AACzF,IAAA,0BAA0B,EAAE,0EAA0E;;AAGxG;AACO,MAAM,6CAA6C,GAA4B;AACpF,IAAA,CAAC,+BAA+B,CAAC,wBAAwB,GAAG,EAAE;;AAGzD,MAAM,uCAAuC,GAA4B;AAC9E,IAAA,GAAG,6CAA6C;AAChD,IAAA,CAAC,+BAA+B,CAAC,0BAA0B,GAAG,IAAI;;AAG7D,MAAM,+BAA+B,GAAG;AAC7C,IAAA,YAAY,EAAE,uDAAuD;AACrE,IAAA,iBAAiB,EAAE,wDAAwD;;;ACpC7E;AACO,MAAM,2BAA2B,GAAG;;ACDpC,MAAM,kCAAkC,GAAG;AAChD,IAAA,qBAAqB,EAAE,mDAAmD;AAC1E,IAAA,2BAA2B,EAAE,yDAAyD;AACtF,IAAA,8BAA8B,EAAE,4DAA4D;AAC5F,IAAA,eAAe,EAAE,6CAA6C;AAC9D,IAAA,mBAAmB,EAAE,iDAAiD;AACtE,IAAA,YAAY,EAAE,0CAA0C;AACxD,IAAA,cAAc,EAAE,4CAA4C;AAC5D,IAAA,SAAS,EAAE,uCAAuC;;;ACRpD;AAWA;;ACXA;;AAEG;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-extension-communication-meta-client.mjs","sources":["../../../../libs/extensions/communication/meta/client/src/lib/integration/communication.integration-domain.provider.ts","../../../../libs/extensions/communication/meta/client/src/lib/brand/whatsapp-logo-key.ts","../../../../libs/extensions/communication/meta/client/src/lib/integration/whatsapp.integration.provider.ts","../../../../libs/extensions/communication/meta/client/src/lib/integration/whatsapp.integration-runtime.provider.ts","../../../../libs/extensions/communication/meta/client/src/lib/brand/whatsapp-logo.provider.ts","../../../../libs/extensions/communication/meta/client/src/lib/manifest.ts","../../../../libs/extensions/communication/meta/client/src/lib/settings/communication-meta-settings.provider.ts","../../../../libs/extensions/communication/meta/client/src/lib/templates/communication-meta-whatsapp-text-template-channel-definition.provider.ts","../../../../libs/extensions/communication/meta/client/src/lib/communication-meta-extension.module.ts","../../../../libs/extensions/communication/meta/client/src/lib/communication-meta-client.port.ts","../../../../libs/extensions/communication/meta/client/src/lib/brand/whatsapp-mark.paths.ts","../../../../libs/extensions/communication/meta/client/src/lib/brand/whatsapp-logo.component.ts","../../../../libs/extensions/communication/meta/client/src/acorex-platform-extension-communication-meta-client.ts"],"sourcesContent":["import { AXP_INTEGRATION_CATEGORY } from '@acorex-platform/framework-shared/core';\nimport {\n type AXPIntegrationDomainProvider,\n AXPIntegrationDomainProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { Injectable } from '@angular/core';\nimport {\n AXE_COMMUNICATION_DOMAIN_ID,\n RootConfig,\n} from '@acorex-platform/extension-communication-meta-client/contracts';\n\nconst I18N = `@${RootConfig.config.i18n}:integration.domain`;\n\n//#region ---- Communication integration domain ----\n\n@Injectable()\nexport class AXECommunicationMetaIntegrationDomainProvider implements AXPIntegrationDomainProvider {\n async provide(context: AXPIntegrationDomainProviderContext): Promise<void> {\n context.register({\n id: AXE_COMMUNICATION_DOMAIN_ID,\n module: RootConfig.module.name,\n displayName: `${I18N}.title`,\n description: `${I18N}.description`,\n icon: 'fa-light fa-comments',\n category: AXP_INTEGRATION_CATEGORY.Messaging,\n capabilities: [],\n settingsGroup: AXE_COMMUNICATION_DOMAIN_ID,\n sortOrder: 20,\n });\n }\n}\n\n//#endregion\n","//#region ---- WhatsApp logo registry key ----\n\nexport const axpWhatsAppLogoKey = 'whatsapp' as const;\n\n//#endregion\n","import {\n AXP_INTEGRATION_AUTH_METHOD_TYPE,\n AXP_INTEGRATION_CAPABILITY,\n AXP_INTEGRATION_CONNECTION_SCOPE,\n} from '@acorex-platform/framework-shared/core';\nimport {\n AXPIntegrationProvider,\n AXPIntegrationProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { Injectable } from '@angular/core';\nimport {\n AXE_COMMUNICATION_DOMAIN_ID,\n AXECommunicationMetaCommandKeys,\n RootConfig,\n} from '@acorex-platform/extension-communication-meta-client/contracts';\nimport { axpWhatsAppLogoKey } from '../brand/whatsapp-logo-key';\n\n//#region ---- WhatsApp integration provider ----\n\n@Injectable()\nexport class AXECommunicationWhatsAppIntegrationProvider implements AXPIntegrationProvider {\n async provide(context: AXPIntegrationProviderContext): Promise<void> {\n const I18N = `@${RootConfig.config.i18n}:integration`;\n\n context.register({\n domainId: AXE_COMMUNICATION_DOMAIN_ID,\n id: RootConfig.integration.providerId,\n module: RootConfig.module.name,\n displayName: `${I18N}.display-name`,\n description: `${I18N}.description`,\n icon: RootConfig.module.icon,\n logoKey: axpWhatsAppLogoKey,\n capabilities: [AXP_INTEGRATION_CAPABILITY.Messaging],\n connectionScopes: [\n AXP_INTEGRATION_CONNECTION_SCOPE.Tenant,\n AXP_INTEGRATION_CONNECTION_SCOPE.User,\n ],\n allowMultipleConnections: false,\n defaultConnectionKey: 'default',\n connectCommandKey: AXECommunicationMetaCommandKeys.ConnectionConnect,\n connectDisabledBadgeKey: `@${RootConfig.config.i18n}:settings.user-integration.not-configured-badge`,\n connectDisabledMessageKey: `@${RootConfig.config.i18n}:settings.user-integration.not-configured-notice`,\n manageActions: [\n {\n titleKey: `@${RootConfig.config.i18n}:settings.whatsapp.test.action`,\n commandKey: AXECommunicationMetaCommandKeys.TestWhatsApp,\n icon: 'fa-brands fa-whatsapp',\n color: 'primary',\n connectionScopes: [AXP_INTEGRATION_CONNECTION_SCOPE.Tenant],\n },\n ],\n authMethods: [\n {\n type: AXP_INTEGRATION_AUTH_METHOD_TYPE.ApiToken,\n label: `${I18N}.auth.link.label`,\n instructions: `${I18N}.auth.link.instructions`,\n supportsValidation: true,\n fields: [],\n },\n ],\n });\n }\n}\n\n//#endregion\n","import {\n AXP_INTEGRATION_CONNECTION_SCOPE,\n AXP_INTEGRATION_CONNECTION_STATUS,\n type AXPIntegrationConnectAvailabilityContext,\n type AXPIntegrationProviderRuntimeHooks,\n type AXPIntegrationRuntimeContext,\n type AXPIntegrationValidationResult,\n} from '@acorex-platform/framework-shared/core';\nimport { type AXPIntegrationRuntimeProvider } from '@acorex-platform/framework-client/common';\nimport {\n AXMIntegrationConnectionManager,\n hasConfiguredIntegrationCredentials,\n} from '@acorex-platform/module-integration-management-client';\nimport { Injectable, inject } from '@angular/core';\nimport {\n RootConfig,\n type CommunicationMetaWhatsAppTenantConnectionConfig,\n type CommunicationMetaWhatsAppUserLinkConfig,\n} from '@acorex-platform/extension-communication-meta-client/contracts';\n\n//#region ---- WhatsApp integration runtime ----\n\n@Injectable()\nexport class AXECommunicationWhatsAppIntegrationRuntimeProvider implements AXPIntegrationRuntimeProvider {\n readonly providerId = RootConfig.integration.providerId;\n\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n\n async getHooks(): Promise<AXPIntegrationProviderRuntimeHooks> {\n return {\n getConnectAvailability: (ctx) => this.isConnectAvailable(ctx),\n validateConnection: (ctx) => this.validateConnection(ctx),\n };\n }\n\n private async isConnectAvailable(\n ctx?: AXPIntegrationConnectAvailabilityContext,\n ): Promise<boolean> {\n if (ctx?.connectionScope !== AXP_INTEGRATION_CONNECTION_SCOPE.User) {\n return true;\n }\n\n const tenantConnection = await this.connectionManager.findByUniqueKey({\n providerId: RootConfig.integration.providerId,\n connectionScope: AXP_INTEGRATION_CONNECTION_SCOPE.Tenant,\n connectionKey: 'default',\n });\n\n return hasConfiguredIntegrationCredentials(tenantConnection);\n }\n\n private async validateConnection(\n ctx: AXPIntegrationRuntimeContext,\n ): Promise<AXPIntegrationValidationResult> {\n if (ctx.connectionScope === AXP_INTEGRATION_CONNECTION_SCOPE.Tenant) {\n const config = (ctx.config ?? {}) as CommunicationMetaWhatsAppTenantConnectionConfig;\n const accessToken = String(config.accessToken ?? '').trim();\n const phoneNumberId = String(config.phoneNumberId ?? '').trim();\n if (!accessToken || !phoneNumberId) {\n return {\n valid: false,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Invalid,\n errorMessage: 'WhatsApp Cloud API credentials are incomplete on the connection.',\n };\n }\n return {\n valid: true,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n externalAccountId: phoneNumberId,\n externalAccountName: phoneNumberId,\n };\n }\n\n const config = (ctx.config ?? {}) as unknown as CommunicationMetaWhatsAppUserLinkConfig;\n const phoneNumber = String(config.phoneNumber ?? '').trim();\n\n if (!phoneNumber) {\n return {\n valid: false,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Invalid,\n errorMessage: 'WhatsApp phone number is missing from the connection.',\n };\n }\n\n const displayName = String(config.displayName ?? '').trim();\n return {\n valid: true,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n externalAccountId: phoneNumber,\n externalAccountName: displayName || phoneNumber,\n };\n }\n}\n\n//#endregion\n","import {\n AXP_LOGO_PROVIDER,\n type AXPLogoProvider,\n type AXPLogoRequest,\n type AXPLogoView,\n} from '@acorex-platform/framework-client/core';\nimport { axpWhatsAppLogoKey } from './whatsapp-logo-key';\n\nconst whatsAppLogoProvider: AXPLogoProvider = {\n key: axpWhatsAppLogoKey,\n resolve: async (request: AXPLogoRequest): Promise<AXPLogoView> => ({\n kind: 'component',\n load: () =>\n import('./whatsapp-logo.component').then((module) => module.AXECommunicationWhatsAppLogoComponent),\n inputs: {\n appearance: request.appearance,\n size: request.size,\n },\n }),\n};\n\nexport const AXE_WHATSAPP_LOGO_PROVIDER = {\n provide: AXP_LOGO_PROVIDER,\n useValue: whatsAppLogoProvider,\n multi: true,\n} as const;\n","import { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/extension-communication-meta-client/contracts';\n\nexport const CommunicationMetaExtensionManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: `@${RootConfig.config.i18n}:integration.display-name`,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'integration',\n domain: 'communication',\n dependencies: [],\n};\n","import { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport {\n AXPSettingDefinitionProvider,\n AXPSettingDefinitionProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { Injectable, inject } from '@angular/core';\nimport {\n AXPCommunicationMetaSettingKeys,\n AXP_COMMUNICATION_META_SETTING_DEFAULTS,\n RootConfig,\n} from '@acorex-platform/extension-communication-meta-client/contracts';\nimport {\n AXP_PLATFORM_DEV_TOOLS_COMMUNICATION_DEBUG_REDIRECT_SECTION,\n AXP_PLATFORM_DEV_TOOLS_SETTINGS_GROUP,\n} from '@acorex-platform/module-platform-dev-tools-client/contracts';\nimport { resolveCommunicationDeliveryChannelsSettingsSection } from '@acorex-platform/module-communication-management-client';\n\nconst INTEGRATIONS_SETTINGS_GROUP = 'integrations';\nconst USER_INTEGRATION_I18N = `@${RootConfig.config.i18n}:settings.user-integration`;\nconst DELIVERY_CHANNEL_I18N = `@${RootConfig.config.i18n}:settings.delivery-channel`;\nconst DEV_TOOLS_I18N = '@platform-dev-tools:settings.communication-debug-redirect';\nconst DELIVERY_CHANNEL_VISIBILITY = `{{ integration.isUserConnected('${RootConfig.integration.providerId}') }}`;\n\n//#region ---- Meta / WhatsApp settings provider ----\n\n@Injectable()\nexport class AXECommunicationMetaSettingsProvider implements AXPSettingDefinitionProvider {\n private readonly sessionService = inject(AXPSessionService);\n\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n // User-facing WhatsApp settings only when the edition entitles this extension.\n if (this.sessionService.isModuleEnabled(RootConfig.module.name)) {\n this.registerDeliveryChannelPreference(context);\n this.registerUserIntegrationSettings(context);\n }\n this.registerDevToolsRedirectSettings(context);\n }\n\n /** User-scope receive toggle — only when WhatsApp integration is wired in this app. */\n private registerDeliveryChannelPreference(context: AXPSettingDefinitionProviderContext): void {\n if (!context.hasGroup(INTEGRATIONS_SETTINGS_GROUP)) {\n return;\n }\n\n const section = resolveCommunicationDeliveryChannelsSettingsSection(context);\n if (!section) {\n return;\n }\n\n section\n .addSetting({\n key: AXPCommunicationMetaSettingKeys.UserDeliveryChannelEnabled,\n title: `${DELIVERY_CHANNEL_I18N}.title`,\n scope: 'U',\n overridableAt: [],\n isInherited: true,\n defaultValue:\n AXP_COMMUNICATION_META_SETTING_DEFAULTS[\n AXPCommunicationMetaSettingKeys.UserDeliveryChannelEnabled\n ],\n widget: {\n type: AXPWidgetsList.Editors.ToggleSwitch,\n options: { visibility: DELIVERY_CHANNEL_VISIBILITY },\n },\n description: `${DELIVERY_CHANNEL_I18N}.description`,\n })\n .endSection();\n }\n\n private registerDevToolsRedirectSettings(context: AXPSettingDefinitionProviderContext): void {\n const section = resolveCommunicationDebugRedirectSection(context);\n if (!section) {\n return;\n }\n\n section\n .addSetting({\n key: AXPCommunicationMetaSettingKeys.DebugRedirectPhoneNumber,\n title: `${DEV_TOOLS_I18N}.whatsapp-phone-number.title`,\n scope: 'P',\n overridableAt: [],\n isInherited: false,\n defaultValue: '',\n widget: {\n type: AXPWidgetsList.Editors.TextBox,\n },\n description: `${DEV_TOOLS_I18N}.whatsapp-phone-number.description`,\n })\n .endSection();\n }\n\n private registerUserIntegrationSettings(context: AXPSettingDefinitionProviderContext): void {\n if (!context.hasGroup(INTEGRATIONS_SETTINGS_GROUP)) {\n return;\n }\n\n const integrations = context.group(INTEGRATIONS_SETTINGS_GROUP);\n if (!integrations) {\n return;\n }\n\n integrations\n .addSection('whatsapp', `${USER_INTEGRATION_I18N}.section-title`, `${USER_INTEGRATION_I18N}.section-description`)\n .addSetting({\n key: 'WhatsApp:Setting:ConnectionPanel',\n title: `${USER_INTEGRATION_I18N}.connection-title`,\n scope: 'U',\n overridableAt: [],\n isInherited: false,\n widget: {\n type: AXPWidgetsList.Advanced.IntegrationConnectionsPanel,\n layout: { stacked: true },\n options: {\n providerId: RootConfig.integration.providerId,\n connectionScope: 'user',\n },\n },\n description: `${USER_INTEGRATION_I18N}.connection-description`,\n })\n .endSection();\n }\n}\n\nfunction resolveCommunicationDebugRedirectSection(context: AXPSettingDefinitionProviderContext) {\n const devTools = context.group(AXP_PLATFORM_DEV_TOOLS_SETTINGS_GROUP);\n if (!devTools) {\n return null;\n }\n\n const hasSection = context\n .getGroup(AXP_PLATFORM_DEV_TOOLS_SETTINGS_GROUP)\n ?.sections.some((section) => section.name === AXP_PLATFORM_DEV_TOOLS_COMMUNICATION_DEBUG_REDIRECT_SECTION);\n\n if (hasSection) {\n return devTools.section(AXP_PLATFORM_DEV_TOOLS_COMMUNICATION_DEBUG_REDIRECT_SECTION);\n }\n\n return devTools.addSection(\n AXP_PLATFORM_DEV_TOOLS_COMMUNICATION_DEBUG_REDIRECT_SECTION,\n `${DEV_TOOLS_I18N}.title`,\n `${DEV_TOOLS_I18N}.description`,\n );\n}\n\n//#endregion\n","import { Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/extension-communication-meta-client/contracts';\nimport { AXP_TEXT_TEMPLATE_CHANNEL_DEFINITION_PROVIDER } from '@acorex-platform/module-content-management-client';\nimport type {\n AXMTextTemplateChannelDefinition,\n AXMTextTemplateChannelDefinitionProvider,\n} from '@acorex-platform/module-content-management-client/contracts';\n\nconst TEMPLATE_I18N = `@${RootConfig.config.i18n}:templates.channels`;\n\n//#region ---- WhatsApp text template channel ----\n\n@Injectable()\nexport class AXECommunicationMetaWhatsAppTextTemplateChannelDefinitionProvider\n implements AXMTextTemplateChannelDefinitionProvider\n{\n getChannels(): AXMTextTemplateChannelDefinition[] {\n return [\n {\n name: 'whatsapp',\n communicationChannelKey: RootConfig.integration.channelKey,\n title: `${TEMPLATE_I18N}.whatsapp`,\n type: 'plain',\n hasSubject: true,\n notConfiguredMessageKey: `${TEMPLATE_I18N}.not-configured.whatsapp`,\n configureSettings: {\n group: 'integrations',\n section: 'communication',\n scope: 'T',\n },\n },\n ];\n }\n}\n\n//#endregion\n\nexport const communicationMetaWhatsAppTextTemplateChannelProvider = {\n provide: AXP_TEXT_TEMPLATE_CHANNEL_DEFINITION_PROVIDER,\n useClass: AXECommunicationMetaWhatsAppTextTemplateChannelDefinitionProvider,\n multi: true,\n};\n","import { AXMIntegrationManagementModule } from '@acorex-platform/module-integration-management-client';\nimport {\n AXP_INTEGRATION_DOMAIN_PROVIDER,\n AXP_INTEGRATION_PROVIDER,\n AXP_INTEGRATION_RUNTIME_PROVIDER,\n AXP_SETTING_DEFINITION_PROVIDER,\n} from '@acorex-platform/framework-client/common';\nimport { AXP_MODULE_MANIFEST_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\nimport { AXECommunicationMetaCommandKeys } from '@acorex-platform/extension-communication-meta-client/contracts';\nimport { AXECommunicationMetaIntegrationDomainProvider } from './integration/communication.integration-domain.provider';\nimport { AXECommunicationWhatsAppIntegrationProvider } from './integration/whatsapp.integration.provider';\nimport { AXECommunicationWhatsAppIntegrationRuntimeProvider } from './integration/whatsapp.integration-runtime.provider';\nimport { AXE_WHATSAPP_LOGO_PROVIDER } from './brand/whatsapp-logo.provider';\nimport { CommunicationMetaExtensionManifest } from './manifest';\nimport { AXECommunicationMetaSettingsProvider } from './settings/communication-meta-settings.provider';\nimport { communicationMetaWhatsAppTextTemplateChannelProvider } from './templates/communication-meta-whatsapp-text-template-channel-definition.provider';\n\n//#region ---- Meta communication extension client module ----\n\n@NgModule({\n imports: [AXMIntegrationManagementModule],\n providers: [\n { provide: AXP_MODULE_MANIFEST_PROVIDER, useValue: CommunicationMetaExtensionManifest, multi: true },\n AXE_WHATSAPP_LOGO_PROVIDER,\n provideCommandSetups([\n {\n key: AXECommunicationMetaCommandKeys.TestWhatsApp,\n command: () =>\n import('./commands/communication-test-whatsapp.command').then((m) => m.CommunicationTestWhatsAppCommand),\n },\n {\n key: AXECommunicationMetaCommandKeys.ConnectionConnect,\n command: () => import('./features/connect/connect-whatsapp.command').then((m) => m.ConnectWhatsAppCommand),\n },\n ]),\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXECommunicationMetaSettingsProvider,\n multi: true,\n },\n {\n provide: AXP_INTEGRATION_DOMAIN_PROVIDER,\n useClass: AXECommunicationMetaIntegrationDomainProvider,\n multi: true,\n },\n {\n provide: AXP_INTEGRATION_PROVIDER,\n useClass: AXECommunicationWhatsAppIntegrationProvider,\n multi: true,\n },\n {\n provide: AXP_INTEGRATION_RUNTIME_PROVIDER,\n useClass: AXECommunicationWhatsAppIntegrationRuntimeProvider,\n multi: true,\n },\n communicationMetaWhatsAppTextTemplateChannelProvider,\n ],\n})\nexport class AXECommunicationMetaExtensionModule {}\n\n//#endregion\n","import type {\n CommunicationMetaWhatsAppTestInput,\n CommunicationMetaWhatsAppTestResult,\n} from '@acorex-platform/extension-communication-meta-client/contracts';\n\nexport abstract class AXPCommunicationMetaClient {\n abstract testWhatsApp(input: CommunicationMetaWhatsAppTestInput): Promise<CommunicationMetaWhatsAppTestResult>;\n}\n","//#region ---- WhatsApp mark vector paths ----\n\nexport const AXE_WHATSAPP_MARK_GREEN = '#25D366';\n\n/** Official-style WhatsApp speech-bubble mark (simplified path). */\nexport const AXE_WHATSAPP_MARK_PATH =\n 'M12.04 2C6.58 2 2.13 6.45 2.13 11.91c0 1.75.46 3.45 1.32 4.95L2.05 22l5.25-1.38c1.45.79 3.08 1.21 4.74 1.21 5.46 0 9.91-4.45 9.91-9.91C21.95 6.45 17.5 2 12.04 2zm5.77 14.05c-.24.68-1.42 1.28-1.96 1.36-.5.07-1.14.1-1.84-.12-.42-.13-.96-.31-1.66-.61-2.92-1.26-4.82-4.21-4.96-4.4-.14-.19-1.15-1.53-1.15-2.92 0-1.39.73-2.07.99-2.35.26-.28.57-.35.76-.35h.55c.17 0 .41-.06.64.49.24.57.81 1.97.88 2.11.07.14.12.31.02.5-.1.19-.14.31-.28.48-.14.17-.29.37-.42.5-.14.14-.28.29-.12.57.17.28.74 1.22 1.59 1.98 1.09.97 2.01 1.27 2.29 1.41.28.14.45.12.61-.07.17-.19.69-.8.87-1.08.19-.28.37-.23.62-.14.26.1 1.64.77 1.92.91.28.14.47.21.54.33.07.12.07.68-.17 1.36z';\n\n//#endregion\n","import type { AXPLogoAppearance } from '@acorex-platform/framework-client/core';\nimport { Component, computed, input, ChangeDetectionStrategy } from '@angular/core';\nimport { AXE_WHATSAPP_MARK_GREEN, AXE_WHATSAPP_MARK_PATH } from './whatsapp-mark.paths';\n\n//#region ---- WhatsApp brand logo (owned by Meta communication extension) ----\n\n@Component({\n selector: 'axe-whatsapp-logo',\n host: { class: 'inline-flex items-center justify-center' },\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n @switch (resolvedAppearance()) {\n @case ('monochrome') {\n <svg [attr.width]=\"size()\" [attr.height]=\"size()\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path fill=\"currentColor\" [attr.d]=\"markPath\" />\n </svg>\n }\n @default {\n <svg [attr.width]=\"size()\" [attr.height]=\"size()\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path [attr.fill]=\"markGreen\" [attr.d]=\"markPath\" />\n </svg>\n }\n }\n `,\n})\nexport class AXECommunicationWhatsAppLogoComponent {\n appearance = input<AXPLogoAppearance>('colored');\n size = input(20);\n\n protected readonly markPath = AXE_WHATSAPP_MARK_PATH;\n protected readonly markGreen = AXE_WHATSAPP_MARK_GREEN;\n\n protected readonly resolvedAppearance = computed(() => {\n const value = this.appearance();\n return value === 'monochrome' ? 'monochrome' : 'colored';\n });\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-extension-communication-meta-client.mjs","sources":["../../../../libs/extensions/communication/meta/client/src/lib/integration/communication.integration-domain.provider.ts","../../../../libs/extensions/communication/meta/client/src/lib/brand/whatsapp-logo-key.ts","../../../../libs/extensions/communication/meta/client/src/lib/integration/whatsapp.integration.provider.ts","../../../../libs/extensions/communication/meta/client/src/lib/integration/whatsapp.integration-runtime.provider.ts","../../../../libs/extensions/communication/meta/client/src/lib/brand/whatsapp-logo.provider.ts","../../../../libs/extensions/communication/meta/client/src/lib/manifest.ts","../../../../libs/extensions/communication/meta/client/src/lib/settings/communication-meta-settings.provider.ts","../../../../libs/extensions/communication/meta/client/src/lib/templates/communication-meta-whatsapp-text-template-channel-definition.provider.ts","../../../../libs/extensions/communication/meta/client/src/lib/communication-meta-extension.module.ts","../../../../libs/extensions/communication/meta/client/src/lib/communication-meta-client.port.ts","../../../../libs/extensions/communication/meta/client/src/lib/brand/whatsapp-mark.paths.ts","../../../../libs/extensions/communication/meta/client/src/lib/brand/whatsapp-logo.component.ts","../../../../libs/extensions/communication/meta/client/src/acorex-platform-extension-communication-meta-client.ts"],"sourcesContent":["import { AXP_INTEGRATION_CATEGORY } from '@acorex-platform/framework-shared/core';\nimport {\n type AXPIntegrationDomainProvider,\n AXPIntegrationDomainProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { Injectable } from '@angular/core';\nimport {\n AXE_COMMUNICATION_DOMAIN_ID,\n RootConfig,\n} from '@acorex-platform/extension-communication-meta-client/contracts';\n\nconst I18N = `@${RootConfig.config.i18n}:integration.domain`;\n\n//#region ---- Communication integration domain ----\n\n@Injectable()\nexport class AXECommunicationMetaIntegrationDomainProvider implements AXPIntegrationDomainProvider {\n async provide(context: AXPIntegrationDomainProviderContext): Promise<void> {\n context.register({\n id: AXE_COMMUNICATION_DOMAIN_ID,\n module: RootConfig.module.name,\n displayName: `${I18N}.title`,\n description: `${I18N}.description`,\n icon: 'fa-light fa-comments',\n category: AXP_INTEGRATION_CATEGORY.Messaging,\n capabilities: [],\n settingsGroup: AXE_COMMUNICATION_DOMAIN_ID,\n sortOrder: 20,\n });\n }\n}\n\n//#endregion\n","//#region ---- WhatsApp logo registry key ----\n\nexport const axpWhatsAppLogoKey = 'whatsapp' as const;\n\n//#endregion\n","import {\n AXP_INTEGRATION_AUTH_METHOD_TYPE,\n AXP_INTEGRATION_CAPABILITY,\n AXP_INTEGRATION_CONNECTION_SCOPE,\n} from '@acorex-platform/framework-shared/core';\nimport {\n AXPIntegrationProvider,\n AXPIntegrationProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { Injectable } from '@angular/core';\nimport {\n AXE_COMMUNICATION_DOMAIN_ID,\n AXECommunicationMetaCommandKeys,\n RootConfig,\n} from '@acorex-platform/extension-communication-meta-client/contracts';\nimport { axpWhatsAppLogoKey } from '../brand/whatsapp-logo-key';\n\n//#region ---- WhatsApp integration provider ----\n\n@Injectable()\nexport class AXECommunicationWhatsAppIntegrationProvider implements AXPIntegrationProvider {\n async provide(context: AXPIntegrationProviderContext): Promise<void> {\n const I18N = `@${RootConfig.config.i18n}:integration`;\n\n context.register({\n domainId: AXE_COMMUNICATION_DOMAIN_ID,\n id: RootConfig.integration.providerId,\n module: RootConfig.module.name,\n displayName: `${I18N}.display-name`,\n description: `${I18N}.description`,\n icon: RootConfig.module.icon,\n logoKey: axpWhatsAppLogoKey,\n capabilities: [AXP_INTEGRATION_CAPABILITY.Messaging],\n connectionScopes: [\n AXP_INTEGRATION_CONNECTION_SCOPE.Tenant,\n AXP_INTEGRATION_CONNECTION_SCOPE.User,\n ],\n allowMultipleConnections: false,\n defaultConnectionKey: 'default',\n connectCommandKey: AXECommunicationMetaCommandKeys.ConnectionConnect,\n connectDisabledBadgeKey: `@${RootConfig.config.i18n}:settings.user-integration.not-configured-badge`,\n connectDisabledMessageKey: `@${RootConfig.config.i18n}:settings.user-integration.not-configured-notice`,\n manageActions: [\n {\n titleKey: `@${RootConfig.config.i18n}:settings.whatsapp.test.action`,\n commandKey: AXECommunicationMetaCommandKeys.TestWhatsApp,\n icon: 'fa-brands fa-whatsapp',\n color: 'primary',\n connectionScopes: [AXP_INTEGRATION_CONNECTION_SCOPE.Tenant],\n },\n ],\n authMethods: [\n {\n type: AXP_INTEGRATION_AUTH_METHOD_TYPE.ApiToken,\n label: `${I18N}.auth.link.label`,\n instructions: `${I18N}.auth.link.instructions`,\n supportsValidation: true,\n fields: [],\n },\n ],\n });\n }\n}\n\n//#endregion\n","import {\n AXP_INTEGRATION_CONNECTION_SCOPE,\n AXP_INTEGRATION_CONNECTION_STATUS,\n type AXPIntegrationConnectAvailabilityContext,\n type AXPIntegrationProviderRuntimeHooks,\n type AXPIntegrationRuntimeContext,\n type AXPIntegrationValidationResult,\n} from '@acorex-platform/framework-shared/core';\nimport { type AXPIntegrationRuntimeProvider } from '@acorex-platform/framework-client/common';\nimport {\n AXMIntegrationConnectionManager,\n hasConfiguredIntegrationCredentials,\n} from '@acorex-platform/module-integration-management-client';\nimport { Injectable, inject } from '@angular/core';\nimport {\n RootConfig,\n type CommunicationMetaWhatsAppTenantConnectionConfig,\n type CommunicationMetaWhatsAppUserLinkConfig,\n} from '@acorex-platform/extension-communication-meta-client/contracts';\n\n//#region ---- WhatsApp integration runtime ----\n\n@Injectable()\nexport class AXECommunicationWhatsAppIntegrationRuntimeProvider implements AXPIntegrationRuntimeProvider {\n readonly providerId = RootConfig.integration.providerId;\n\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n\n async getHooks(): Promise<AXPIntegrationProviderRuntimeHooks> {\n return {\n getConnectAvailability: (ctx) => this.isConnectAvailable(ctx),\n validateConnection: (ctx) => this.validateConnection(ctx),\n };\n }\n\n private async isConnectAvailable(\n ctx?: AXPIntegrationConnectAvailabilityContext,\n ): Promise<boolean> {\n if (ctx?.connectionScope !== AXP_INTEGRATION_CONNECTION_SCOPE.User) {\n return true;\n }\n\n const tenantConnection = await this.connectionManager.findByUniqueKey({\n providerId: RootConfig.integration.providerId,\n connectionScope: AXP_INTEGRATION_CONNECTION_SCOPE.Tenant,\n connectionKey: 'default',\n });\n\n return hasConfiguredIntegrationCredentials(tenantConnection);\n }\n\n private async validateConnection(\n ctx: AXPIntegrationRuntimeContext,\n ): Promise<AXPIntegrationValidationResult> {\n if (ctx.connectionScope === AXP_INTEGRATION_CONNECTION_SCOPE.Tenant) {\n const config = (ctx.config ?? {}) as CommunicationMetaWhatsAppTenantConnectionConfig;\n const accessToken = String(config.accessToken ?? '').trim();\n const phoneNumberId = String(config.phoneNumberId ?? '').trim();\n if (!accessToken || !phoneNumberId) {\n return {\n valid: false,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Invalid,\n errorMessage: 'WhatsApp Cloud API credentials are incomplete on the connection.',\n };\n }\n return {\n valid: true,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n externalAccountId: phoneNumberId,\n externalAccountName: phoneNumberId,\n };\n }\n\n const config = (ctx.config ?? {}) as unknown as CommunicationMetaWhatsAppUserLinkConfig;\n const phoneNumber = String(config.phoneNumber ?? '').trim();\n\n if (!phoneNumber) {\n return {\n valid: false,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Invalid,\n errorMessage: 'WhatsApp phone number is missing from the connection.',\n };\n }\n\n const displayName = String(config.displayName ?? '').trim();\n return {\n valid: true,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n externalAccountId: phoneNumber,\n externalAccountName: displayName || phoneNumber,\n };\n }\n}\n\n//#endregion\n","import {\n AXP_LOGO_PROVIDER,\n type AXPLogoProvider,\n type AXPLogoRequest,\n type AXPLogoView,\n} from '@acorex-platform/framework-client/core';\nimport { axpWhatsAppLogoKey } from './whatsapp-logo-key';\n\nconst whatsAppLogoProvider: AXPLogoProvider = {\n key: axpWhatsAppLogoKey,\n resolve: async (request: AXPLogoRequest): Promise<AXPLogoView> => ({\n kind: 'component',\n load: () =>\n import('./whatsapp-logo.component').then((module) => module.AXECommunicationWhatsAppLogoComponent),\n inputs: {\n appearance: request.appearance,\n size: request.size,\n },\n }),\n};\n\nexport const AXE_WHATSAPP_LOGO_PROVIDER = {\n provide: AXP_LOGO_PROVIDER,\n useValue: whatsAppLogoProvider,\n multi: true,\n} as const;\n","import { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/extension-communication-meta-client/contracts';\n\nexport const CommunicationMetaExtensionManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: `@${RootConfig.config.i18n}:integration.display-name`,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'integration',\n domain: 'communication',\n dependencies: [],\n};\n","import { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport {\n AXPSettingDefinitionProvider,\n AXPSettingDefinitionProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { Injectable, inject } from '@angular/core';\nimport {\n AXPCommunicationMetaSettingKeys,\n AXP_COMMUNICATION_META_SETTING_DEFAULTS,\n RootConfig,\n} from '@acorex-platform/extension-communication-meta-client/contracts';\nimport {\n AXP_PLATFORM_DEV_TOOLS_COMMUNICATION_DEBUG_REDIRECT_SECTION,\n AXP_PLATFORM_DEV_TOOLS_SETTINGS_GROUP,\n} from '@acorex-platform/module-platform-dev-tools-client/contracts';\nimport { resolveCommunicationDeliveryChannelsSettingsSection } from '@acorex-platform/module-communication-management-client';\n\nconst INTEGRATIONS_SETTINGS_GROUP = 'integrations';\nconst USER_INTEGRATION_I18N = `@${RootConfig.config.i18n}:settings.user-integration`;\nconst DELIVERY_CHANNEL_I18N = `@${RootConfig.config.i18n}:settings.delivery-channel`;\nconst DEV_TOOLS_I18N = '@platform-dev-tools:settings.communication-debug-redirect';\nconst DELIVERY_CHANNEL_VISIBILITY = `{{ integration.isUserConnected('${RootConfig.integration.providerId}') }}`;\n\n//#region ---- Meta / WhatsApp settings provider ----\n\n@Injectable()\nexport class AXECommunicationMetaSettingsProvider implements AXPSettingDefinitionProvider {\n private readonly sessionService = inject(AXPSessionService);\n\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n // User-facing WhatsApp settings only when the edition entitles this extension.\n if (this.sessionService.isModuleEnabled(RootConfig.module.name)) {\n this.registerDeliveryChannelPreference(context);\n this.registerUserIntegrationSettings(context);\n }\n this.registerDevToolsRedirectSettings(context);\n }\n\n /** User-scope receive toggle — only when WhatsApp integration is wired in this app. */\n private registerDeliveryChannelPreference(context: AXPSettingDefinitionProviderContext): void {\n if (!context.hasGroup(INTEGRATIONS_SETTINGS_GROUP)) {\n return;\n }\n\n const section = resolveCommunicationDeliveryChannelsSettingsSection(context);\n if (!section) {\n return;\n }\n\n section\n .addSetting({\n key: AXPCommunicationMetaSettingKeys.UserDeliveryChannelEnabled,\n title: `${DELIVERY_CHANNEL_I18N}.title`,\n scope: 'U',\n overridableAt: [],\n isInherited: true,\n defaultValue:\n AXP_COMMUNICATION_META_SETTING_DEFAULTS[\n AXPCommunicationMetaSettingKeys.UserDeliveryChannelEnabled\n ],\n widget: {\n type: AXPWidgetsList.Editors.ToggleSwitch,\n options: { visibility: DELIVERY_CHANNEL_VISIBILITY },\n },\n description: `${DELIVERY_CHANNEL_I18N}.description`,\n })\n .endSection();\n }\n\n private registerDevToolsRedirectSettings(context: AXPSettingDefinitionProviderContext): void {\n const section = resolveCommunicationDebugRedirectSection(context);\n if (!section) {\n return;\n }\n\n section\n .addSetting({\n key: AXPCommunicationMetaSettingKeys.DebugRedirectPhoneNumber,\n title: `${DEV_TOOLS_I18N}.whatsapp-phone-number.title`,\n scope: 'P',\n overridableAt: [],\n isInherited: false,\n defaultValue: '',\n widget: {\n type: AXPWidgetsList.Editors.TextBox,\n },\n description: `${DEV_TOOLS_I18N}.whatsapp-phone-number.description`,\n })\n .endSection();\n }\n\n private registerUserIntegrationSettings(context: AXPSettingDefinitionProviderContext): void {\n if (!context.hasGroup(INTEGRATIONS_SETTINGS_GROUP)) {\n return;\n }\n\n const integrations = context.group(INTEGRATIONS_SETTINGS_GROUP);\n if (!integrations) {\n return;\n }\n\n integrations\n .addSection('whatsapp', `${USER_INTEGRATION_I18N}.section-title`, `${USER_INTEGRATION_I18N}.section-description`)\n .addSetting({\n key: 'WhatsApp:Setting:ConnectionPanel',\n title: `${USER_INTEGRATION_I18N}.connection-title`,\n scope: 'U',\n overridableAt: [],\n isInherited: false,\n widget: {\n type: AXPWidgetsList.Advanced.IntegrationConnectionsPanel,\n layout: { stacked: true },\n options: {\n providerId: RootConfig.integration.providerId,\n connectionScope: 'user',\n },\n },\n description: `${USER_INTEGRATION_I18N}.connection-description`,\n })\n .endSection();\n }\n}\n\nfunction resolveCommunicationDebugRedirectSection(context: AXPSettingDefinitionProviderContext) {\n const devTools = context.group(AXP_PLATFORM_DEV_TOOLS_SETTINGS_GROUP);\n if (!devTools) {\n return null;\n }\n\n const hasSection = context\n .getGroup(AXP_PLATFORM_DEV_TOOLS_SETTINGS_GROUP)\n ?.sections.some((section) => section.name === AXP_PLATFORM_DEV_TOOLS_COMMUNICATION_DEBUG_REDIRECT_SECTION);\n\n if (hasSection) {\n return devTools.section(AXP_PLATFORM_DEV_TOOLS_COMMUNICATION_DEBUG_REDIRECT_SECTION);\n }\n\n return devTools.addSection(\n AXP_PLATFORM_DEV_TOOLS_COMMUNICATION_DEBUG_REDIRECT_SECTION,\n `${DEV_TOOLS_I18N}.title`,\n `${DEV_TOOLS_I18N}.description`,\n );\n}\n\n//#endregion\n","import { Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/extension-communication-meta-client/contracts';\nimport { AXP_TEXT_TEMPLATE_CHANNEL_DEFINITION_PROVIDER } from '@acorex-platform/module-content-management-client';\nimport type {\n AXMTextTemplateChannelDefinition,\n AXMTextTemplateChannelDefinitionProvider,\n} from '@acorex-platform/module-content-management-client/contracts';\n\nconst TEMPLATE_I18N = `@${RootConfig.config.i18n}:templates.channels`;\n\n//#region ---- WhatsApp text template channel ----\n\n@Injectable()\nexport class AXECommunicationMetaWhatsAppTextTemplateChannelDefinitionProvider\n implements AXMTextTemplateChannelDefinitionProvider\n{\n getChannels(): AXMTextTemplateChannelDefinition[] {\n return [\n {\n name: 'whatsapp',\n communicationChannelKey: RootConfig.integration.channelKey,\n title: `${TEMPLATE_I18N}.whatsapp`,\n type: 'plain',\n hasSubject: true,\n notConfiguredMessageKey: `${TEMPLATE_I18N}.not-configured.whatsapp`,\n configureSettings: {\n group: 'integrations',\n section: 'communication',\n scope: 'T',\n },\n },\n ];\n }\n}\n\n//#endregion\n\nexport const communicationMetaWhatsAppTextTemplateChannelProvider = {\n provide: AXP_TEXT_TEMPLATE_CHANNEL_DEFINITION_PROVIDER,\n useClass: AXECommunicationMetaWhatsAppTextTemplateChannelDefinitionProvider,\n multi: true,\n};\n","import { AXMIntegrationManagementModule } from '@acorex-platform/module-integration-management-client';\nimport {\n AXP_INTEGRATION_DOMAIN_PROVIDER,\n AXP_INTEGRATION_PROVIDER,\n AXP_INTEGRATION_RUNTIME_PROVIDER,\n AXP_SETTING_DEFINITION_PROVIDER,\n} from '@acorex-platform/framework-client/common';\nimport { AXP_MODULE_MANIFEST_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\nimport { AXECommunicationMetaCommandKeys } from '@acorex-platform/extension-communication-meta-client/contracts';\nimport { AXECommunicationMetaIntegrationDomainProvider } from './integration/communication.integration-domain.provider';\nimport { AXECommunicationWhatsAppIntegrationProvider } from './integration/whatsapp.integration.provider';\nimport { AXECommunicationWhatsAppIntegrationRuntimeProvider } from './integration/whatsapp.integration-runtime.provider';\nimport { AXE_WHATSAPP_LOGO_PROVIDER } from './brand/whatsapp-logo.provider';\nimport { CommunicationMetaExtensionManifest } from './manifest';\nimport { AXECommunicationMetaSettingsProvider } from './settings/communication-meta-settings.provider';\nimport { communicationMetaWhatsAppTextTemplateChannelProvider } from './templates/communication-meta-whatsapp-text-template-channel-definition.provider';\n\n//#region ---- Meta communication extension client module ----\n\n@NgModule({\n imports: [AXMIntegrationManagementModule],\n providers: [\n { provide: AXP_MODULE_MANIFEST_PROVIDER, useValue: CommunicationMetaExtensionManifest, multi: true },\n AXE_WHATSAPP_LOGO_PROVIDER,\n provideCommandSetups([\n {\n key: AXECommunicationMetaCommandKeys.TestWhatsApp,\n command: () =>\n import('./commands/communication-test-whatsapp.command').then((m) => m.CommunicationTestWhatsAppCommand),\n },\n {\n key: AXECommunicationMetaCommandKeys.ConnectionConnect,\n command: () => import('./features/connect/connect-whatsapp.command').then((m) => m.ConnectWhatsAppCommand),\n },\n ]),\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXECommunicationMetaSettingsProvider,\n multi: true,\n },\n {\n provide: AXP_INTEGRATION_DOMAIN_PROVIDER,\n useClass: AXECommunicationMetaIntegrationDomainProvider,\n multi: true,\n },\n {\n provide: AXP_INTEGRATION_PROVIDER,\n useClass: AXECommunicationWhatsAppIntegrationProvider,\n multi: true,\n },\n {\n provide: AXP_INTEGRATION_RUNTIME_PROVIDER,\n useClass: AXECommunicationWhatsAppIntegrationRuntimeProvider,\n multi: true,\n },\n communicationMetaWhatsAppTextTemplateChannelProvider,\n ],\n})\nexport class AXECommunicationMetaExtensionModule {}\n\n//#endregion\n","import type {\n CommunicationMetaWhatsAppTestInput,\n CommunicationMetaWhatsAppTestResult,\n} from '@acorex-platform/extension-communication-meta-client/contracts';\n\nexport abstract class AXPCommunicationMetaClient {\n abstract testWhatsApp(input: CommunicationMetaWhatsAppTestInput): Promise<CommunicationMetaWhatsAppTestResult>;\n}\n","//#region ---- WhatsApp mark vector paths ----\n\nexport const AXE_WHATSAPP_MARK_GREEN = '#25D366';\n\n/** Official-style WhatsApp speech-bubble mark (simplified path). */\nexport const AXE_WHATSAPP_MARK_PATH =\n 'M12.04 2C6.58 2 2.13 6.45 2.13 11.91c0 1.75.46 3.45 1.32 4.95L2.05 22l5.25-1.38c1.45.79 3.08 1.21 4.74 1.21 5.46 0 9.91-4.45 9.91-9.91C21.95 6.45 17.5 2 12.04 2zm5.77 14.05c-.24.68-1.42 1.28-1.96 1.36-.5.07-1.14.1-1.84-.12-.42-.13-.96-.31-1.66-.61-2.92-1.26-4.82-4.21-4.96-4.4-.14-.19-1.15-1.53-1.15-2.92 0-1.39.73-2.07.99-2.35.26-.28.57-.35.76-.35h.55c.17 0 .41-.06.64.49.24.57.81 1.97.88 2.11.07.14.12.31.02.5-.1.19-.14.31-.28.48-.14.17-.29.37-.42.5-.14.14-.28.29-.12.57.17.28.74 1.22 1.59 1.98 1.09.97 2.01 1.27 2.29 1.41.28.14.45.12.61-.07.17-.19.69-.8.87-1.08.19-.28.37-.23.62-.14.26.1 1.64.77 1.92.91.28.14.47.21.54.33.07.12.07.68-.17 1.36z';\n\n//#endregion\n","import type { AXPLogoAppearance } from '@acorex-platform/framework-client/core';\nimport { Component, computed, input, ChangeDetectionStrategy } from '@angular/core';\nimport { AXE_WHATSAPP_MARK_GREEN, AXE_WHATSAPP_MARK_PATH } from './whatsapp-mark.paths';\n\n//#region ---- WhatsApp brand logo (owned by Meta communication extension) ----\n\n@Component({\n selector: 'axe-whatsapp-logo',\n host: { class: 'inline-flex items-center justify-center' },\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n @switch (resolvedAppearance()) {\n @case ('monochrome') {\n <svg [attr.width]=\"size()\" [attr.height]=\"size()\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path fill=\"currentColor\" [attr.d]=\"markPath\" />\n </svg>\n }\n @default {\n <svg [attr.width]=\"size()\" [attr.height]=\"size()\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path [attr.fill]=\"markGreen\" [attr.d]=\"markPath\" />\n </svg>\n }\n }\n `,\n})\nexport class AXECommunicationWhatsAppLogoComponent {\n appearance = input<AXPLogoAppearance>('colored');\n size = input(20);\n\n protected readonly markPath = AXE_WHATSAPP_MARK_PATH;\n protected readonly markGreen = AXE_WHATSAPP_MARK_GREEN;\n\n protected readonly resolvedAppearance = computed(() => {\n const value = this.appearance();\n return value === 'monochrome' ? 'monochrome' : 'colored';\n });\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|