{"version":3,"file":"slackLogger.CS_h0Uti.mjs","names":[],"sources":["https:/framerusercontent.com/modules/llDxPy0m24Im9jYr2HQk/7pcaHfzSvP5A2PmCPOAG/slackLogger.js"],"sourcesContent":["// ============================================\n// InBody USA - Slack Notification Utilities\n// ============================================\n//\n// Shared utilities for sending Slack notifications\n// Used by sales inquiry, partner health, and ebook forms\n//\n// ============================================\n// Slack webhook URLs\nconst SLACK_SUCCESS_WEBHOOK=\"https://hooks.slack.com/services/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\";const SLACK_ERROR_WEBHOOK=\"https://hooks.slack.com/services/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\";// Default no-op logger\nconst defaultLogger={log:()=>{},error:()=>{}};// Send success notification for sales inquiry forms\nexport async function sendSalesSuccessSlackNotification(payload,logger,timingData){const actualLogger=logger||defaultLogger;const tracking=payload.trackingParameters||{};const pageTitle=tracking.page_origin||\"Sales Inquiry Form\";const source=tracking.utm_source||\"direct\";const medium=tracking.utm_medium||\"organic\";const campaign=tracking.utm_campaign||\"N/A\";const url=tracking.page_location||\"N/A\";const deviceCategory=tracking.device_category||\"unknown\";const email=payload.email||\"N/A\";const isFranchise=payload.isFranchise?\"Yes\":\"No\";const state=payload.stateCode||\"N/A\";// Determine icon based on source\nlet icon=\":desktop_computer:\";if(source===\"google\")icon=\":google-ads1:\";else if(source===\"facebook\")icon=\":facebook:\";// Build timing info if available\nlet timingInfo=\"\";if(timingData){if(timingData.jwtTime){timingInfo+=`JWT Token: ${timingData.jwtTime}\n`;}if(timingData.apiTime){timingInfo+=`API Call: ${timingData.apiTime}\n`;}}// Build timing section for message\nconst timingSection=timingInfo?`\n⏱️ Performance:\n${timingInfo}`:\"\";const message=`${icon} A new submission was sent by a user from page: \\`${pageTitle}\\`\n\n\\`\\`\\`\ncampaign: ${campaign}\nmedium: ${medium}\nsource: ${source}\nurl: ${url}\nemail: ${email}\ndevice_category: ${deviceCategory}\n\nFranchise: ${isFranchise}\nState: ${state}${timingSection}\n\\`\\`\\`\n\n**Full Submission Data:**\n\\`\\`\\`json\n${JSON.stringify(payload,null,2)}\n\\`\\`\\`\n\nWas this lead correctly identified?`;const slackPayload={blocks:[{type:\"section\",text:{type:\"mrkdwn\",text:message}},{type:\"actions\",elements:[{type:\"button\",text:{type:\"plain_text\",text:\"Yes\"},value:\"yes\",action_id:\"yes_button\",style:\"primary\"},{type:\"button\",text:{type:\"plain_text\",text:\"No\"},value:\"no\",action_id:\"no_button\",style:\"danger\"}]}]};try{await fetch(SLACK_SUCCESS_WEBHOOK,{method:\"POST\",body:JSON.stringify(slackPayload)});actualLogger.log(\"Success notification sent to Slack\");}catch(error){actualLogger.error(\"Failed to send Slack notification:\",error);}}// Send success notification for partner health forms\nexport async function sendPartnerHealthSuccessSlackNotification(payload,logger=defaultLogger){const email=payload.email||\"N/A\";const partnerName=payload.partnerName||\"N/A\";const slug=payload.slug||\"N/A\";const message=`:handshake: A new Partner Health submission was received\n\n\\`\\`\\`\nPartner: ${partnerName}\nSlug: ${slug}\nEmail: ${email}\nCity: ${payload.city||\"N/A\"}\nZipcode: ${payload.zipCode||\"N/A\"}\n\\`\\`\\`\n\n**Full Submission Data:**\n\\`\\`\\`json\n${JSON.stringify(payload,null,2)}\n\\`\\`\\`\n\nWas this lead correctly identified?`;const slackPayload={blocks:[{type:\"section\",text:{type:\"mrkdwn\",text:message}},{type:\"actions\",elements:[{type:\"button\",text:{type:\"plain_text\",text:\"Yes\"},value:\"yes\",action_id:\"yes_button\",style:\"primary\"},{type:\"button\",text:{type:\"plain_text\",text:\"No\"},value:\"no\",action_id:\"no_button\",style:\"danger\"}]}]};try{await fetch(SLACK_SUCCESS_WEBHOOK,{method:\"POST\",body:JSON.stringify(slackPayload)});logger.log(\"Success notification sent to Slack\");}catch(error){logger.error(\"Failed to send Slack notification:\",error);}}// Send success notification for ebook forms\nexport async function sendEbookSuccessSlackNotification(payload,logger=defaultLogger){const email=payload.email||\"N/A\";const clientName=payload.clientName||\"N/A\";const businessName=payload.businessName||\"N/A\";const klaviyoListId=payload.klaviyoListId||\"N/A\";const message=`:books: A new Ebook submission was received\n\n\\`\\`\\`\nClient: ${clientName}\nBusiness: ${businessName}\nEmail: ${email}\nCity: ${payload.city||\"N/A\"}\nState: ${payload.state||\"N/A\"}\nZipcode: ${payload.zipCode||\"N/A\"}\nKlaviyo List: ${klaviyoListId}\n\\`\\`\\`\n\n**Full Submission Data:**\n\\`\\`\\`json\n${JSON.stringify(payload,null,2)}\n\\`\\`\\`\n\nWas this lead correctly identified?`;const slackPayload={blocks:[{type:\"section\",text:{type:\"mrkdwn\",text:message}},{type:\"actions\",elements:[{type:\"button\",text:{type:\"plain_text\",text:\"Yes\"},value:\"yes\",action_id:\"yes_button\",style:\"primary\"},{type:\"button\",text:{type:\"plain_text\",text:\"No\"},value:\"no\",action_id:\"no_button\",style:\"danger\"}]}]};try{await fetch(SLACK_SUCCESS_WEBHOOK,{method:\"POST\",body:JSON.stringify(slackPayload)});logger.log(\"Success notification sent to Slack\");}catch(error){logger.error(\"Failed to send Slack notification:\",error);}}// Send error notification (shared for all forms)\nexport async function sendErrorSlackNotification(email,error,payload,logger=defaultLogger){const errorMessage=error?.message||JSON.stringify(error);const message=`:exclamation: :exclamation: :desktop_computer: :zap:\n\\`\\`\\`\nAn error happened while sending to InBody API for user with email address ${email}.\n\nError details:\n${errorMessage}\n\\`\\`\\`\n\n**Submitted Data (for retry):**\n\\`\\`\\`json\n${JSON.stringify(payload,null,2)}\n\\`\\`\\``;const slackPayload={blocks:[{type:\"section\",text:{type:\"mrkdwn\",text:message}}]};try{await fetch(SLACK_ERROR_WEBHOOK,{method:\"POST\",body:JSON.stringify(slackPayload)});logger.log(\"Error notification sent to Slack\");}catch(slackError){logger.error(\"Failed to send Slack error notification:\",slackError);}}\nexport const __FramerMetadata__ = {\"exports\":{\"sendPartnerHealthSuccessSlackNotification\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"sendSalesSuccessSlackNotification\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"sendEbookSuccessSlackNotification\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"sendErrorSlackNotification\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./slackLogger.map"],"mappings":"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"}