diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappApiRequest.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappApiRequest.js deleted file mode 100644 index ed6c2e875..000000000 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappApiRequest.js +++ /dev/null @@ -1,52 +0,0 @@ -export function useWhatsappApiRequest() { - const createSignupPayload = (authCode, store, businessDataParam) => { - const accountId = store.getters.getCurrentAccountId; - return { - account_id: accountId, - code: authCode.value, - business_id: businessDataParam.business_id, - waba_id: businessDataParam.waba_id, - phone_number_id: businessDataParam.phone_number_id, - }; - }; - - const createFetchOptions = (payload, authHeaders) => { - return { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'X-CSRF-Token': document - .querySelector('meta[name="csrf-token"]') - ?.getAttribute('content'), - ...authHeaders.value, - }, - body: JSON.stringify(payload), - }; - }; - - const makeSignupRequest = async (payload, authHeaders) => { - const options = createFetchOptions(payload, authHeaders); - return fetch('/whatsapp/embedded_signup', options); - }; - - const processApiResponse = async ( - response, - authCode, - handleSignupSuccess - ) => { - const responseData = await response.json(); - - if (response.ok) { - authCode.value = null; - handleSignupSuccess(responseData); - } else { - throw new Error(responseData.message || responseData.error); - } - }; - - return { - createSignupPayload, - makeSignupRequest, - processApiResponse, - }; -} diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappAuth.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappAuth.js deleted file mode 100644 index 888d1a03b..000000000 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappAuth.js +++ /dev/null @@ -1,33 +0,0 @@ -import { computed } from 'vue'; -import Auth from 'dashboard/api/auth'; - -export function useWhatsappAuth() { - const authHeaders = computed(() => { - if (!Auth.hasAuthCookie()) return {}; - - const { - 'access-token': accessToken, - 'token-type': tokenType, - client, - expiry, - uid, - } = Auth.getAuthData(); - - return { - 'access-token': accessToken, - 'token-type': tokenType, - client, - expiry, - uid, - }; - }); - - const validateAuthRequirements = (authCodeReceived, authCode) => { - return authCodeReceived.value && authCode.value; - }; - - return { - authHeaders, - validateAuthRequirements, - }; -} diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappAuthCallbacks.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappAuthCallbacks.js deleted file mode 100644 index 101069b47..000000000 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappAuthCallbacks.js +++ /dev/null @@ -1,54 +0,0 @@ -import { useAlert } from 'dashboard/composables'; - -export function useWhatsappAuthCallbacks({ - authCode, - authCodeReceived, - currentStep, - processingMessage, - isProcessing, - isAuthenticating, - hasSignupStarted, - businessData, - completeSignupFlow, - handleSignupError, - t, -}) { - const handleSuccessfulAuth = authResponse => { - authCode.value = authResponse.code; - authCodeReceived.value = true; - currentStep.value = 'auth_received'; - processingMessage.value = t( - 'INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.WAITING_FOR_BUSINESS_INFO' - ); - - if (businessData.value) { - completeSignupFlow(businessData.value); - } - }; - - const handleAuthError = error => { - handleSignupError({ error }); - }; - - const handleAuthCancellation = () => { - currentStep.value = 'initial'; - isProcessing.value = false; - isAuthenticating.value = false; - hasSignupStarted.value = false; - useAlert(t('INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.CANCELLED')); - }; - - const fbLoginCallback = response => { - if (response.authResponse?.code) { - handleSuccessfulAuth(response.authResponse); - } else if (response.error) { - handleAuthError(response.error); - } else { - handleAuthCancellation(); - } - }; - - return { - fbLoginCallback, - }; -} diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappComposableOrchestrator.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappComposableOrchestrator.js deleted file mode 100644 index 9e9182476..000000000 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappComposableOrchestrator.js +++ /dev/null @@ -1,100 +0,0 @@ -import { useWhatsappSignupValidation } from './useWhatsappSignupValidation'; -import { useWhatsappSignupState } from './useWhatsappSignupState'; -import { useWhatsappSignupHandlers } from './useWhatsappSignupHandlers'; -import { useWhatsappSignupApi } from './useWhatsappSignupApi'; -import { useWhatsappFacebookSDK } from './useWhatsappFacebookSDK'; -import { useWhatsappMessageHandler } from './useWhatsappMessageHandler'; - -export function useWhatsappComposableOrchestrator({ store, router, t }) { - // Validation composable - const { isValidBusinessData, normalizeBusinessData } = - useWhatsappSignupValidation(); - - // State composable - const { - fbSdkLoaded, - isProcessing, - processingMessage, - authCodeReceived, - currentStep, - authCode, - businessData, - isAuthenticating, - hasSignupStarted, - resetState, - } = useWhatsappSignupState(); - - // Handlers composable - const { handleSignupError, handleSignupCancellation, handleSignupSuccess } = - useWhatsappSignupHandlers({ - currentStep, - isProcessing, - isAuthenticating, - resetState, - store, - router, - t, - }); - - // API composable - const { completeSignupFlow } = useWhatsappSignupApi({ - authCodeReceived, - authCode, - currentStep, - isProcessing, - processingMessage, - store, - t, - handleSignupError, - handleSignupSuccess, - }); - - // Facebook SDK composable - const { loadFacebookSdk, launchEmbeddedSignup } = useWhatsappFacebookSDK({ - fbSdkLoaded, - hasSignupStarted, - processingMessage, - isProcessing, - isAuthenticating, - currentStep, - authCode, - authCodeReceived, - businessData, - completeSignupFlow, - handleSignupError, - t, - }); - - // Message handler composable - const { handleSignupMessage } = useWhatsappMessageHandler({ - isValidBusinessData, - normalizeBusinessData, - businessData, - authCodeReceived, - authCode, - completeSignupFlow, - currentStep, - processingMessage, - handleSignupError, - handleSignupCancellation, - t, - }); - - return { - // State - fbSdkLoaded, - isProcessing, - processingMessage, - authCodeReceived, - currentStep, - authCode, - businessData, - isAuthenticating, - hasSignupStarted, - - // Methods - loadFacebookSdk, - launchEmbeddedSignup, - handleSignupMessage, - }; -} diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappComputed.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappComputed.js deleted file mode 100644 index dd1f58a86..000000000 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappComputed.js +++ /dev/null @@ -1,27 +0,0 @@ -import { computed } from 'vue'; - -export function useWhatsappComputed({ t, hasSignupStarted, isProcessing }) { - const benefits = computed(() => [ - { - key: 'EASY_SETUP', - text: t('INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.BENEFITS.EASY_SETUP'), - }, - { - key: 'SECURE_AUTH', - text: t('INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.BENEFITS.SECURE_AUTH'), - }, - { - key: 'AUTO_CONFIG', - text: t('INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.BENEFITS.AUTO_CONFIG'), - }, - ]); - - const showLoader = computed( - () => hasSignupStarted.value || isProcessing.value - ); - - return { - benefits, - showLoader, - }; -} diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappEventProcessors.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappEventProcessors.js deleted file mode 100644 index 550a23807..000000000 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappEventProcessors.js +++ /dev/null @@ -1,58 +0,0 @@ -export function useWhatsappEventProcessors({ - isValidBusinessData, - normalizeBusinessData, - businessData, - authCodeReceived, - authCode, - completeSignupFlow, - currentStep, - processingMessage, - handleSignupError, - handleSignupCancellation, - t, -}) { - const processFinishEvent = async data => { - const businessDataLocal = - data.data || data.business_data || data.details || data; - - if (isValidBusinessData(businessDataLocal)) { - const normalizedData = normalizeBusinessData(businessDataLocal); - businessData.value = normalizedData; - - if (authCodeReceived.value && authCode.value) { - await completeSignupFlow(normalizedData); - } else { - currentStep.value = 'waiting_for_auth'; - processingMessage.value = t( - 'INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.WAITING_FOR_AUTH' - ); - } - } else { - handleSignupError({ - error: t( - 'INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.INVALID_BUSINESS_DATA' - ), - }); - } - }; - - const processErrorEvent = data => { - handleSignupError({ - error: - data.error_message || - t('INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.SIGNUP_ERROR'), - error_id: data.error_id, - session_id: data.session_id, - }); - }; - - const processCancelEvent = data => { - handleSignupCancellation(data); - }; - - return { - processFinishEvent, - processErrorEvent, - processCancelEvent, - }; -} diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappFacebookSDK.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappFacebookSDK.js index 046b3baba..dda13149f 100644 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappFacebookSDK.js +++ b/app/javascript/dashboard/composables/whatsapp/useWhatsappFacebookSDK.js @@ -1,5 +1,4 @@ -import { useWhatsappSDKHelpers } from './useWhatsappSDKHelpers'; -import { useWhatsappAuthCallbacks } from './useWhatsappAuthCallbacks'; +import { useAlert } from 'dashboard/composables'; export function useWhatsappFacebookSDK({ fbSdkLoaded, @@ -15,46 +14,56 @@ export function useWhatsappFacebookSDK({ handleSignupError, t, }) { - const { createFacebookScript, createLoginOptions } = useWhatsappSDKHelpers(); - - const { fbLoginCallback } = useWhatsappAuthCallbacks({ - authCode, - authCodeReceived, - currentStep, - processingMessage, - isProcessing, - isAuthenticating, - hasSignupStarted, - businessData, - completeSignupFlow, - handleSignupError, - t, - }); - const loadFacebookSdk = () => { if (window.FB) { fbSdkLoaded.value = true; return; } - createFacebookScript(fbSdkLoaded); + + const script = document.createElement('script'); + script.src = 'https://connect.facebook.net/en_US/sdk.js'; + script.async = true; + script.defer = true; + script.onload = () => { + window.FB.init({ + appId: window.chatwootConfig?.whatsappAppId, + status: true, + xfbml: true, + version: window.chatwootConfig?.whatsappApiVersion || 'v22.0', + }); + fbSdkLoaded.value = true; + }; + document.body.appendChild(script); }; - const setSignupProcessingState = () => { + const fbLoginCallback = response => { + if (response.authResponse && response.authResponse.code) { + authCode.value = response.authResponse.code; + authCodeReceived.value = true; + currentStep.value = 'auth_received'; + processingMessage.value = t( + 'INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.WAITING_FOR_BUSINESS_INFO' + ); + + if (businessData.value) { + completeSignupFlow(businessData.value); + } + } else if (response.error) { + handleSignupError({ error: response.error }); + } else { + currentStep.value = 'initial'; + isProcessing.value = false; + isAuthenticating.value = false; + hasSignupStarted.value = false; + useAlert(t('INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.CANCELLED')); + } + }; + + const launchEmbeddedSignup = () => { hasSignupStarted.value = true; processingMessage.value = t( 'INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.AUTH_PROCESSING' ); - }; - - const executeSignup = () => { - isAuthenticating.value = true; - currentStep.value = 'auth_processing'; - const options = createLoginOptions(); - window.FB.login(fbLoginCallback, options); - }; - - const launchEmbeddedSignup = () => { - setSignupProcessingState(); if (!window.FB) { loadFacebookSdk(); @@ -62,7 +71,19 @@ export function useWhatsappFacebookSDK({ return; } - executeSignup(); + isAuthenticating.value = true; + currentStep.value = 'auth_processing'; + + window.FB.login(fbLoginCallback, { + config_id: window.chatwootConfig?.whatsappConfigurationId, + response_type: 'code', + override_default_response_type: true, + extras: { + setup: {}, + featureType: '', + sessionInfoVersion: '3', + }, + }); }; return { diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappLifecycle.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappLifecycle.js deleted file mode 100644 index 20985caed..000000000 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappLifecycle.js +++ /dev/null @@ -1,19 +0,0 @@ -export function useWhatsappLifecycle({ loadFacebookSdk, handleSignupMessage }) { - const setupMessageListener = () => { - window.addEventListener('message', handleSignupMessage); - }; - - const cleanupMessageListener = () => { - window.removeEventListener('message', handleSignupMessage); - }; - - const initialize = () => { - loadFacebookSdk(); - setupMessageListener(); - }; - - return { - initialize, - cleanupMessageListener, - }; -} diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappMessageHandler.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappMessageHandler.js deleted file mode 100644 index 5131e557c..000000000 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappMessageHandler.js +++ /dev/null @@ -1,60 +0,0 @@ -import { useWhatsappMessageValidation } from './useWhatsappMessageValidation'; -import { useWhatsappEventProcessors } from './useWhatsappEventProcessors'; - -export function useWhatsappMessageHandler({ - isValidBusinessData, - normalizeBusinessData, - businessData, - authCodeReceived, - authCode, - completeSignupFlow, - currentStep, - processingMessage, - handleSignupError, - handleSignupCancellation, - t, -}) { - const { validateMessageOrigin, parseMessageData, isWhatsappSignupMessage } = - useWhatsappMessageValidation(); - - const { processFinishEvent, processErrorEvent, processCancelEvent } = - useWhatsappEventProcessors({ - isValidBusinessData, - normalizeBusinessData, - businessData, - authCodeReceived, - authCode, - completeSignupFlow, - currentStep, - processingMessage, - handleSignupError, - handleSignupCancellation, - t, - }); - - const eventProcessorMap = { - FINISH: processFinishEvent, - CANCEL: processCancelEvent, - error: processErrorEvent, - }; - - const handleEmbeddedSignupData = async data => { - const processor = eventProcessorMap[data.event]; - if (processor) { - await processor(data); - } - }; - - const handleSignupMessage = event => { - if (!validateMessageOrigin(event.origin)) return; - - const data = parseMessageData(event.data); - if (isWhatsappSignupMessage(data)) { - handleEmbeddedSignupData(data); - } - }; - - return { - handleSignupMessage, - }; -} diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappMessageValidation.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappMessageValidation.js deleted file mode 100644 index a35c1f5be..000000000 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappMessageValidation.js +++ /dev/null @@ -1,29 +0,0 @@ -export function useWhatsappMessageValidation() { - const validateMessageOrigin = origin => { - try { - const originUrl = new URL(origin); - const allowedHosts = ['facebook.com', 'www.facebook.com']; - return allowedHosts.includes(originUrl.hostname); - } catch (error) { - return false; - } - }; - - const parseMessageData = data => { - try { - return JSON.parse(data); - } catch (error) { - return null; - } - }; - - const isWhatsappSignupMessage = data => { - return data?.type === 'WA_EMBEDDED_SIGNUP'; - }; - - return { - validateMessageOrigin, - parseMessageData, - isWhatsappSignupMessage, - }; -} diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappSDKHelpers.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappSDKHelpers.js deleted file mode 100644 index 699ac4748..000000000 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappSDKHelpers.js +++ /dev/null @@ -1,37 +0,0 @@ -export function useWhatsappSDKHelpers() { - const initializeFacebookSDK = fbSdkLoaded => { - window.FB.init({ - appId: window.chatwootConfig?.whatsappAppId, - status: true, - xfbml: true, - version: window.chatwootConfig?.whatsappApiVersion || 'v22.0', - }); - fbSdkLoaded.value = true; - }; - - const createFacebookScript = fbSdkLoaded => { - const script = document.createElement('script'); - script.src = 'https://connect.facebook.net/en_US/sdk.js'; - script.async = true; - script.defer = true; - script.onload = () => initializeFacebookSDK(fbSdkLoaded); - document.body.appendChild(script); - }; - - const createLoginOptions = () => ({ - config_id: window.chatwootConfig?.whatsappConfigurationId, - response_type: 'code', - override_default_response_type: true, - extras: { - setup: {}, - featureType: '', - sessionInfoVersion: '3', - }, - }); - - return { - initializeFacebookSDK, - createFacebookScript, - createLoginOptions, - }; -} diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappSignupApi.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappSignupApi.js index ba51e9f37..9a762d1ec 100644 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappSignupApi.js +++ b/app/javascript/dashboard/composables/whatsapp/useWhatsappSignupApi.js @@ -1,6 +1,5 @@ -import { useWhatsappAuth } from './useWhatsappAuth'; -import { useWhatsappApiRequest } from './useWhatsappApiRequest'; -import { useWhatsappSignupFlow } from './useWhatsappSignupFlow'; +import { computed } from 'vue'; +import Auth from 'dashboard/api/auth'; export function useWhatsappSignupApi({ authCodeReceived, @@ -13,33 +12,70 @@ export function useWhatsappSignupApi({ handleSignupError, handleSignupSuccess, }) { - const { authHeaders, validateAuthRequirements } = useWhatsappAuth(); - - const { createSignupPayload, makeSignupRequest, processApiResponse } = - useWhatsappApiRequest(); - - const { setProcessingState, handleAuthError, handleRequestError } = - useWhatsappSignupFlow({ - currentStep, - isProcessing, - processingMessage, - t, - }); + const authHeaders = computed(() => { + if (Auth.hasAuthCookie()) { + const { + 'access-token': accessToken, + 'token-type': tokenType, + client, + expiry, + uid, + } = Auth.getAuthData(); + return { + 'access-token': accessToken, + 'token-type': tokenType, + client, + expiry, + uid, + }; + } + return {}; + }); const completeSignupFlow = async businessDataParam => { - if (!validateAuthRequirements(authCodeReceived, authCode)) { - handleAuthError(handleSignupError, t); + if (!authCodeReceived.value || !authCode.value) { + handleSignupError({ + error: t('INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.AUTH_NOT_COMPLETED'), + }); return; } - setProcessingState(); + currentStep.value = 'processing'; + isProcessing.value = true; + processingMessage.value = t( + 'INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.PROCESSING' + ); try { - const payload = createSignupPayload(authCode, store, businessDataParam); - const response = await makeSignupRequest(payload, authHeaders); - await processApiResponse(response, authCode, handleSignupSuccess); + const accountId = store.getters.getCurrentAccountId; + const response = await fetch('/whatsapp/embedded_signup', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-CSRF-Token': document + .querySelector('meta[name="csrf-token"]') + ?.getAttribute('content'), + ...authHeaders.value, + }, + body: JSON.stringify({ + account_id: accountId, + code: authCode.value, + business_id: businessDataParam.business_id, + waba_id: businessDataParam.waba_id, + phone_number_id: businessDataParam.phone_number_id, + }), + }); + + const responseData = await response.json(); + + if (response.ok) { + authCode.value = null; + handleSignupSuccess(responseData); + } else { + throw new Error(responseData.message || responseData.error); + } } catch (error) { - handleRequestError(error, handleSignupError); + handleSignupError({ error: error.message }); } }; diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappSignupFlow.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappSignupFlow.js deleted file mode 100644 index 237e1ea14..000000000 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappSignupFlow.js +++ /dev/null @@ -1,32 +0,0 @@ -export function useWhatsappSignupFlow({ - currentStep, - isProcessing, - processingMessage, - t, -}) { - const setProcessingState = () => { - currentStep.value = 'processing'; - isProcessing.value = true; - processingMessage.value = t( - 'INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.PROCESSING' - ); - }; - - const handleAuthError = (handleSignupError, translator) => { - handleSignupError({ - error: translator( - 'INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.AUTH_NOT_COMPLETED' - ), - }); - }; - - const handleRequestError = (error, handleSignupError) => { - handleSignupError({ error: error.message }); - }; - - return { - setProcessingState, - handleAuthError, - handleRequestError, - }; -} diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappSignupHandlers.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappSignupHandlers.js index 5abbc9a63..3a9b7d202 100644 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappSignupHandlers.js +++ b/app/javascript/dashboard/composables/whatsapp/useWhatsappSignupHandlers.js @@ -1,5 +1,4 @@ import { useAlert } from 'dashboard/composables'; -import { useWhatsappSuccessHandler } from './useWhatsappSuccessHandler'; export function useWhatsappSignupHandlers({ currentStep, @@ -10,34 +9,21 @@ export function useWhatsappSignupHandlers({ router, t, }) { - const { handleValidInboxData, handleInvalidInboxData } = - useWhatsappSuccessHandler({ store, router, t }); - - const getErrorMessage = data => { - return ( - data.error || - data.message || - t('INBOX_MGMT.ADD.WHATSAPP.API.ERROR_MESSAGE') - ); - }; - - const getCancellationMessage = data => { - let message = t('INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.CANCELLED'); - if (data.data?.current_step) { - message += ` (Step: ${data.data.current_step})`; - } - return message; - }; - const handleSignupError = data => { resetState(); - const errorMessage = getErrorMessage(data); + const errorMessage = + data.error || + data.message || + t('INBOX_MGMT.ADD.WHATSAPP.API.ERROR_MESSAGE'); useAlert(errorMessage); }; const handleSignupCancellation = data => { resetState(); - const message = getCancellationMessage(data); + let message = t('INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.CANCELLED'); + if (data.data?.current_step) { + message += ` (Step: ${data.data.current_step})`; + } useAlert(message); }; @@ -46,10 +32,21 @@ export function useWhatsappSignupHandlers({ isProcessing.value = false; isAuthenticating.value = false; - if (inboxData?.id) { - handleValidInboxData(inboxData); + if (inboxData && inboxData.id) { + store.commit('inboxes/ADD_INBOXES', inboxData); + useAlert(t('INBOX_MGMT.FINISH.MESSAGE')); + router.replace({ + name: 'settings_inboxes_add_agents', + params: { + page: 'new', + inbox_id: inboxData.id, + }, + }); } else { - handleInvalidInboxData(); + useAlert(t('INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.SUCCESS_FALLBACK')); + router.replace({ + name: 'settings_inbox_list', + }); } }; diff --git a/app/javascript/dashboard/composables/whatsapp/useWhatsappSuccessHandler.js b/app/javascript/dashboard/composables/whatsapp/useWhatsappSuccessHandler.js deleted file mode 100644 index 7e386a120..000000000 --- a/app/javascript/dashboard/composables/whatsapp/useWhatsappSuccessHandler.js +++ /dev/null @@ -1,39 +0,0 @@ -import { useAlert } from 'dashboard/composables'; - -export function useWhatsappSuccessHandler({ store, router, t }) { - const navigateToAgentSelection = inboxId => { - router.replace({ - name: 'settings_inboxes_add_agents', - params: { - page: 'new', - inbox_id: inboxId, - }, - }); - }; - - const navigateToInboxList = () => { - router.replace({ - name: 'settings_inbox_list', - }); - }; - - const updateStoreWithInbox = inboxData => { - store.commit('inboxes/ADD_INBOXES', inboxData); - useAlert(t('INBOX_MGMT.FINISH.MESSAGE')); - }; - - const handleValidInboxData = inboxData => { - updateStoreWithInbox(inboxData); - navigateToAgentSelection(inboxData.id); - }; - - const handleInvalidInboxData = () => { - useAlert(t('INBOX_MGMT.ADD.WHATSAPP.EMBEDDED_SIGNUP.SUCCESS_FALLBACK')); - navigateToInboxList(); - }; - - return { - handleValidInboxData, - handleInvalidInboxData, - }; -}