{"version":3,"file":"OutlookIntegrationCallbackPage.mjs","names":["React","useCallback","useEffect","useMemo","useState","useLocation","useTranslation","LoadingIndicator","AmbientAlert","ConfigService","exchangeAuthorizationCode","getOutlookRedirectUri","refreshOutlookStatus","OutlookIntegrationCallbackPage","$","_c","t","location","error","setError","t0","Symbol","for","debugLog","setDebugLog","t1","isDebugEnabled","debugEnabled","t2","t3","t4","t5","search","params","URLSearchParams","get","t6","code","state","errorParam","errorDescription","t7","redirectUri","t8","message","timestamp","Date","toISOString","console","debug","prev","log","t9","closeWindowSoon","closePopup","t10","t11","message_0","defaultValue","notifyParent","message_1","authorizationCode","then","catch","err","message_2","extractErrorMessage","t12","t13","t14","marginTop","padding","backgroundColor","color","borderRadius","fontFamily","fontSize","maxHeight","overflowY","display","marginBottom","length","map","_temp","t15","type","window","opener","postMessage","origin","setTimeout","close","fallback","trim","responseMessage","response","data","statusText","raw","config","OUTLOOK_POPUP_DEBUG","String","toLowerCase","entry","idx"],"sources":["../../../src/integrations/outlook/OutlookIntegrationCallbackPage.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { LoadingIndicator } from '../../UI/loading/LoadingIndicator';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { ConfigService } from '../../configService';\nimport {\n  exchangeAuthorizationCode,\n  getOutlookRedirectUri,\n} from './outlookIntegrationClient';\nimport { refreshOutlookStatus } from './outlookIntegrationStatus';\n\nexport const OutlookIntegrationCallbackPage = () => {\n  const { t } = useTranslation();\n  const location = useLocation();\n  const [error, setError] = useState(null);\n  const [debugLog, setDebugLog] = useState([]);\n  const debugEnabled = isDebugEnabled();\n\n  const { code, state, errorParam, errorDescription } = useMemo(() => {\n    const params = new URLSearchParams(location.search);\n    return {\n      code: params.get('code'),\n      state: params.get('state'),\n      errorParam: params.get('error'),\n      errorDescription: params.get('error_description'),\n    };\n  }, [location.search]);\n\n  const redirectUri = useMemo(() => getOutlookRedirectUri(), []);\n\n  const log = useCallback(\n    message => {\n      const timestamp = new Date().toISOString();\n      console.debug(`[OutlookCallback] ${message}`);\n      if (!debugEnabled) return;\n      setDebugLog(prev => [...prev, `${timestamp} ${message}`]);\n    },\n    [debugEnabled]\n  );\n\n  const closePopup = useCallback(() => {\n    if (debugEnabled) {\n      log('Debug mode enabled; window will remain open for inspection.');\n      return;\n    }\n    log('Closing Outlook popup after successful authorization.');\n    closeWindowSoon();\n  }, [debugEnabled, log]);\n\n  useEffect(() => {\n    log(`Callback page mounted with search: \"${location.search || '<empty>'}\"`);\n\n    if (errorParam) {\n      const message =\n        errorDescription ||\n        errorParam ||\n        t('outlook.callback.authorizationFailed', {\n          defaultValue: 'Outlook authorization failed.'\n        });\n      log(`Outlook authorization returned error: ${message}`);\n      setError(message);\n      notifyParent('outlookConnectFailure', message);\n      return;\n    }\n\n    if (!code || !state) {\n      const message = t('outlook.callback.detailsMissing', {\n        defaultValue: 'Authorization details missing from Outlook redirect.'\n      });\n      log('Authorization code or state missing in query string.');\n      setError(message);\n      notifyParent('outlookConnectFailure', message);\n      return;\n    }\n\n    log(`Exchanging authorization code via redirect URI: ${redirectUri}`);\n    exchangeAuthorizationCode({ authorizationCode: code, state, redirectUri })\n      .then(() => {\n        log('Authorization code exchange succeeded; refreshing Outlook status.');\n        return refreshOutlookStatus();\n      })\n      .then(() => {\n        log('Outlook status refreshed; notifying parent of success.');\n        notifyParent('outlookConnectSuccess');\n        closePopup();\n      })\n      .catch(err => {\n        const message = extractErrorMessage(\n          err,\n          t('outlook.callback.finalizeFailed', {\n            defaultValue: 'Failed to finalize the Outlook connection.'\n          })\n        );\n        log(`Outlook connect flow failed: ${message}`);\n        setError(message);\n        notifyParent('outlookConnectFailure', message);\n        log('Leaving callback window open so the error details stay visible.');\n      });\n  }, [\n    closePopup,\n    code,\n    errorDescription,\n    errorParam,\n    location.search,\n    log,\n    redirectUri,\n    state,\n    t,\n  ]);\n\n  return (\n    <>\n      {!error && <LoadingIndicator />}\n      {error && (\n        <AmbientAlert\n          alertSeverity=\"error\"\n          showAlert={true}\n          alertMessage={error}\n        />\n      )}\n      {debugEnabled && (\n        <div\n          style={{\n            marginTop: 16,\n            padding: '12px 14px',\n            backgroundColor: '#111',\n            color: '#eee',\n            borderRadius: 4,\n            fontFamily: 'monospace',\n            fontSize: 12,\n            maxHeight: '40vh',\n            overflowY: 'auto',\n          }}\n        >\n          <strong style={{ display: 'block', marginBottom: 8 }}>\n            Outlook callback debug log\n          </strong>\n          {debugLog.length === 0 ? (\n            <div>Waiting for events...</div>\n          ) : (\n            debugLog.map((entry, idx) => <div key={idx}>{entry}</div>)\n          )}\n          <div style={{ marginTop: 12 }}>\n            This window will stay open in debug mode. Close it manually after\n            reviewing the log.\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nfunction notifyParent(type, message) {\n  try {\n    window.opener?.postMessage({ type, message }, window.location.origin);\n  } catch {\n    // ignore\n  }\n  try {\n    window.opener?.postMessage(type, window.location.origin);\n  } catch {\n    // ignore\n  }\n}\n\nfunction closeWindowSoon() {\n  setTimeout(() => {\n    try {\n      window.close();\n    } catch {\n      // ignore\n    }\n  }, 750);\n}\n\nfunction extractErrorMessage(error, fallback) {\n  if (!error) return fallback;\n  if (typeof error === 'string') return error;\n  if (typeof error.message === 'string' && error.message.trim()) {\n    return error.message;\n  }\n  const responseMessage =\n    error?.response?.data || error?.response?.statusText || error?.message;\n  if (typeof responseMessage === 'string' && responseMessage.trim()) {\n    return responseMessage;\n  }\n  return fallback;\n}\n\nexport default OutlookIntegrationCallbackPage;\n\nfunction isDebugEnabled() {\n  const raw = ConfigService?.config?.OUTLOOK_POPUP_DEBUG;\n  if (typeof raw === 'boolean') {\n    return raw;\n  }\n  return String(raw ?? '').toLowerCase() === 'true';\n}\n"],"mappings":"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"}