ahs-cti 0.0.14 → 0.0.16

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.
Files changed (37) hide show
  1. package/dist/{auditReport-VIZNAWRR.mjs → auditReport-AJKIWSAO.mjs} +2 -2
  2. package/dist/{auditReports-B23T64NX.mjs → auditReports-OYKJFPEY.mjs} +2 -2
  3. package/dist/{callHistory-7UGLIMUP.mjs → callHistory-XCN3EARD.mjs} +3 -3
  4. package/dist/{callHistory-7UGLIMUP.mjs.map → callHistory-XCN3EARD.mjs.map} +1 -1
  5. package/dist/{campaigns-CRLTSO5Z.mjs → campaigns-HYWUCA2P.mjs} +9 -9
  6. package/dist/{campaigns-CRLTSO5Z.mjs.map → campaigns-HYWUCA2P.mjs.map} +1 -1
  7. package/dist/{cdrReport-FOFE2Y5I.mjs → cdrReport-LK56LH54.mjs} +2 -2
  8. package/dist/{chunk-3RBBUP4Y.mjs → chunk-K4KOAVVT.mjs} +3 -3
  9. package/dist/{chunk-3RBBUP4Y.mjs.map → chunk-K4KOAVVT.mjs.map} +1 -1
  10. package/dist/index.d.mts +32 -1
  11. package/dist/index.d.ts +33 -2
  12. package/dist/index.js +14 -11
  13. package/dist/index.js.map +1 -1
  14. package/dist/index.mjs +12 -6
  15. package/dist/index.mjs.map +1 -1
  16. package/dist-react/{auditReport-Y2T3TGCE.mjs → auditReport-77B3Y47L.mjs} +2 -2
  17. package/dist-react/{auditReports-25DOTA6W.mjs → auditReports-UIUMMKXM.mjs} +2 -2
  18. package/dist-react/{callHistory-OPYSTZGJ.mjs → callHistory-7RUBUCVA.mjs} +3 -3
  19. package/dist-react/{callHistory-OPYSTZGJ.mjs.map → callHistory-7RUBUCVA.mjs.map} +1 -1
  20. package/dist-react/{campaigns-5XNAI7JM.mjs → campaigns-6WLCKIGO.mjs} +9 -9
  21. package/dist-react/{campaigns-5XNAI7JM.mjs.map → campaigns-6WLCKIGO.mjs.map} +1 -1
  22. package/dist-react/{cdrReport-BHTBJIQT.mjs → cdrReport-7FBR4WI6.mjs} +2 -2
  23. package/dist-react/{chunk-JWSZGABS.mjs → chunk-CPY7T5YA.mjs} +3 -3
  24. package/dist-react/{chunk-JWSZGABS.mjs.map → chunk-CPY7T5YA.mjs.map} +1 -1
  25. package/dist-react/index.d.mts +32 -1
  26. package/dist-react/index.d.ts +32 -1
  27. package/dist-react/index.js +14 -11
  28. package/dist-react/index.js.map +1 -1
  29. package/dist-react/index.mjs +12 -6
  30. package/dist-react/index.mjs.map +1 -1
  31. package/package.json +1 -1
  32. /package/dist/{auditReport-VIZNAWRR.mjs.map → auditReport-AJKIWSAO.mjs.map} +0 -0
  33. /package/dist/{auditReports-B23T64NX.mjs.map → auditReports-OYKJFPEY.mjs.map} +0 -0
  34. /package/dist/{cdrReport-FOFE2Y5I.mjs.map → cdrReport-LK56LH54.mjs.map} +0 -0
  35. /package/dist-react/{auditReport-Y2T3TGCE.mjs.map → auditReport-77B3Y47L.mjs.map} +0 -0
  36. /package/dist-react/{auditReports-25DOTA6W.mjs.map → auditReports-UIUMMKXM.mjs.map} +0 -0
  37. /package/dist-react/{cdrReport-BHTBJIQT.mjs.map → cdrReport-7FBR4WI6.mjs.map} +0 -0
@@ -10,7 +10,7 @@ var require = function (id) {
10
10
 
11
11
  import {
12
12
  AuditReportFullPage
13
- } from "./chunk-JWSZGABS.mjs";
13
+ } from "./chunk-CPY7T5YA.mjs";
14
14
  import "./chunk-PHDEZXQ4.mjs";
15
15
  import "./chunk-S4J35V4B.mjs";
16
16
 
@@ -22,4 +22,4 @@ function AuditReportPage({ callUuid }) {
22
22
  export {
23
23
  AuditReportPage as default
24
24
  };
25
- //# sourceMappingURL=auditReport-Y2T3TGCE.mjs.map
25
+ //# sourceMappingURL=auditReport-77B3Y47L.mjs.map
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-T53WMN5A.mjs";
17
17
  import {
18
18
  AuditReportPanel
19
- } from "./chunk-JWSZGABS.mjs";
19
+ } from "./chunk-CPY7T5YA.mjs";
20
20
  import {
21
21
  SDKProvider
22
22
  } from "./chunk-4YF4IDV6.mjs";
@@ -254,4 +254,4 @@ var auditReports_default = AuditReports;
254
254
  export {
255
255
  auditReports_default as default
256
256
  };
257
- //# sourceMappingURL=auditReports-25DOTA6W.mjs.map
257
+ //# sourceMappingURL=auditReports-UIUMMKXM.mjs.map
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-T53WMN5A.mjs";
17
17
  import {
18
18
  AuditReportDialog
19
- } from "./chunk-JWSZGABS.mjs";
19
+ } from "./chunk-CPY7T5YA.mjs";
20
20
  import {
21
21
  AppButton
22
22
  } from "./chunk-LX6I32Y4.mjs";
@@ -375,7 +375,7 @@ function CallRow({
375
375
  ) }),
376
376
  /* @__PURE__ */ jsx(TableCell, { sx: cellSx, children: new Date(row.start_time).toLocaleString() }),
377
377
  /* @__PURE__ */ jsx(TableCell, { sx: cellSx, children: row.end_time ? new Date(row.end_time).toLocaleString() : "\u2014" }),
378
- /* @__PURE__ */ jsx(TableCell, { align: "center", sx: cellSx, children: (_a = row.agent_id) != null ? _a : "" }),
378
+ /* @__PURE__ */ jsx(TableCell, { align: "center", sx: cellSx, children: (_a = row.user_id) != null ? _a : "" }),
379
379
  /* @__PURE__ */ jsx(TableCell, { align: "center", sx: cellSx, children: row.recording.available ? /* @__PURE__ */ jsx(
380
380
  IconButton,
381
381
  {
@@ -405,4 +405,4 @@ var callHistory_default = CallHistory;
405
405
  export {
406
406
  callHistory_default as default
407
407
  };
408
- //# sourceMappingURL=callHistory-OPYSTZGJ.mjs.map
408
+ //# sourceMappingURL=callHistory-7RUBUCVA.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../call-control-sdk/lib/pages/callHistory/index.tsx"],"sourcesContent":["import React, { memo, useCallback, useEffect, useState } from \"react\";\nimport {\n\tBox,\n\tTypography,\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableContainer,\n\tTableHead,\n\tTableRow,\n\tTablePagination,\n\tToggleButton,\n\tToggleButtonGroup,\n\tIconButton,\n\tCircularProgress,\n\tChip,\n\tStack,\n\tSwitch,\n\tFormControlLabel,\n\tTooltip,\n\tInputAdornment,\n\tOutlinedInput,\n\tuseTheme,\n\tPaper,\n} from \"@mui/material\";\nimport PlayArrow from \"@mui/icons-material/PlayArrow\";\nimport Search from \"@mui/icons-material/Search\";\nimport Phone from \"@mui/icons-material/Phone\";\nimport RefreshIcon from \"@mui/icons-material/Refresh\";\nimport AssignmentIcon from \"@mui/icons-material/Assignment\";\n// ──── Expansion / details (kept for future use) ──────────────────────────────\n// import Collapse from \"@mui/material/Collapse\";\n// import KeyboardArrowDown from \"@mui/icons-material/KeyboardArrowDown\";\n// import ExpandLess from \"@mui/icons-material/ExpandLess\";\n// import Transcript from \"../common/components/Transcript\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\nimport AppButton from \"../common/components/AppButton\";\nimport DateRangePicker from \"../common/components/DateRangePicker\";\nimport AuditReportDialog from \"../common/components/AuditReport\";\nimport { SDKProvider } from \"../../components/SDKProvider\";\nimport { SDKPageHeader } from \"../../components/SDKPageHeader\";\nimport { useToast } from \"../../services/toastMessage\";\nimport { useCallHistory } from \"./useCallHistory\";\nimport type { CallHistoryItem, MissedCallDetails, CallFilter } from \"./types\";\nimport type { CdrRecordResponse } from \"../cdrReport/types\";\n\n// ──── Header cell columns ────────────────────────────────────────────────────\n\nconst CALL_HISTORY_COLS = [\"Call UID\", \"Mobile\", \"Type\", \"Start Time\", \"End Time\", \"Agent\", \"Recording\", \"AI Audit Report\"] as const;\nconst MISSED_CALLS_COLS = [\"Agent ID\", \"Agent Name\", \"Mobile No\", \"Type\", \"Actions\"] as const;\nconst CENTER_COLS = new Set([\"Type\", \"Recording\", \"Agent\", \"AI Audit Report\", \"Actions\"]);\n\n// ──── Main content (needs SDKProvider above it for useToast) ─────────────────\n\nconst CallHistoryContent = memo(() => {\n\tconst theme = useTheme();\n\tconst { showToast } = useToast();\n\tconst { calls, callsTotal, missedCalls, loading, fetchCallHistory, fetchMissedCalls, fetchRecording } =\n\t\tuseCallHistory();\n\n\tconst [filter, setFilter] = useState<CallFilter>(\"ALL\");\n\tconst [search, setSearch] = useState(\"\");\n\tconst [showMissedCalls, setShowMissedCalls] = useState(false);\n\tconst [page, setPage] = useState(0);\n\tconst [rowsPerPage, setRowsPerPage] = useState(10);\n\n\t// Date range filter (sent to the server for call history).\n\tconst [startDate, setStartDate] = useState<Dayjs | null>(dayjs().startOf(\"day\"));\n\tconst [endDate, setEndDate] = useState<Dayjs | null>(dayjs());\n\n\t// Call UID whose AI audit report dialog is open (null = closed).\n\tconst [auditUuid, setAuditUuid] = useState<string | null>(null);\n\n\t// Debounced search (sent to the server for call history).\n\tconst [debouncedSearch, setDebouncedSearch] = useState(\"\");\n\tuseEffect(() => {\n\t\tconst t = setTimeout(() => setDebouncedSearch(search.trim()), 400);\n\t\treturn () => clearTimeout(t);\n\t}, [search]);\n\n\t// Serialised date range (YYYY-MM-DDTHH:mm:ss) — undefined when unset.\n\tconst startParam = startDate ? startDate.format(\"YYYY-MM-DDTHH:mm:ss\") : undefined;\n\tconst endParam = endDate ? endDate.format(\"YYYY-MM-DDTHH:mm:ss\") : undefined;\n\n\tuseEffect(() => {\n\t\tif (showMissedCalls) {\n\t\t\tfetchMissedCalls();\n\t\t} else {\n\t\t\t// Call history is paginated + searched + filtered server-side.\n\t\t\tfetchCallHistory({\n\t\t\t\tpage: page + 1,\n\t\t\t\tpageSize: rowsPerPage,\n\t\t\t\tsearch: debouncedSearch || undefined,\n\t\t\t\tcall_type: filter === \"ALL\" ? undefined : filter,\n\t\t\t\tstart_date: startParam,\n\t\t\t\tend_date: endParam,\n\t\t\t});\n\t\t}\n\t}, [showMissedCalls, page, rowsPerPage, filter, debouncedSearch, startParam, endParam, fetchCallHistory, fetchMissedCalls]);\n\n\t// Call history is filtered/searched server-side, so render the rows as-is.\n\tconst filteredCalls = calls;\n\n\tconst filteredMissedCalls = missedCalls\n\t\t.filter((c) => filter === \"ALL\" || c.callType?.toUpperCase() === filter)\n\t\t.filter((c) => {\n\t\t\tconst q = search.toLowerCase();\n\t\t\treturn (\n\t\t\t\tc.agentId?.toLowerCase().includes(q) ||\n\t\t\t\tc.username?.toLowerCase().includes(q) ||\n\t\t\t\tc.mobileNumber?.toLowerCase().includes(q)\n\t\t\t);\n\t\t});\n\n\treturn (\n\t\t<LocalizationProvider dateAdapter={AdapterDayjs}>\n\t\t\t<Box>\n\t\t\t{/* PAGE HEADER */}\n\t\t\t<SDKPageHeader\n\t\t\t\ttitle=\"Call History\"\n\t\t\t\tactions={\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n\t\t\t\t\t\t<AppButton\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tstartIcon={loading ? <CircularProgress size={14} color=\"inherit\" /> : <RefreshIcon sx={{ fontSize: \"0.95rem !important\" }} />}\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\tshowMissedCalls\n\t\t\t\t\t\t\t\t\t? fetchMissedCalls()\n\t\t\t\t\t\t\t\t\t: fetchCallHistory({\n\t\t\t\t\t\t\t\t\t\tpage: page + 1,\n\t\t\t\t\t\t\t\t\t\tpageSize: rowsPerPage,\n\t\t\t\t\t\t\t\t\t\tsearch: debouncedSearch || undefined,\n\t\t\t\t\t\t\t\t\t\tcall_type: filter === \"ALL\" ? undefined : filter,\n\t\t\t\t\t\t\t\t\t\tstart_date: startParam,\n\t\t\t\t\t\t\t\t\t\tend_date: endParam,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdisabled={loading}\n\t\t\t\t\t\t\tsx={{ height: 36 }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tRefresh\n\t\t\t\t\t\t</AppButton>\n\t\t\t\t\t\t<OutlinedInput\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tvalue={search}\n\t\t\t\t\t\t\tonChange={(e) => { setSearch(e.target.value); setPage(0); }}\n\t\t\t\t\t\t\tplaceholder=\"Search\"\n\t\t\t\t\t\t\tsx={{ width: 220, fontSize: \"0.82rem\", height: 36 }}\n\t\t\t\t\t\t\tendAdornment={\n\t\t\t\t\t\t\t\t<InputAdornment position=\"end\">\n\t\t\t\t\t\t\t\t\t<Search sx={{ fontSize: 18, color: \"#999\" }} />\n\t\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Stack>\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t<Box py={1.5} px={2}>\n\t\t\t\t{/* FILTER BAR */}\n\t\t\t\t<Stack direction=\"row\" spacing={2} alignItems=\"center\" mb={2}>\n\t\t\t\t\t<FormControlLabel\n\t\t\t\t\t\tcontrol={\n\t\t\t\t\t\t\t<Switch\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tchecked={showMissedCalls}\n\t\t\t\t\t\t\t\tonChange={(_, checked) => { setShowMissedCalls(checked); setPage(0); }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.8rem\", color: \"#555\" }}>\n\t\t\t\t\t\t\t\tMissed Calls\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsx={{ ml: 0 }}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleButtonGroup\n\t\t\t\t\t\tvalue={filter}\n\t\t\t\t\t\texclusive\n\t\t\t\t\t\tonChange={(_, v) => { if (v) { setFilter(v); setPage(0); } }}\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tborder: \"1px solid #ccc\",\n\t\t\t\t\t\t\tborderRadius: \"50px\",\n\t\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t\t\t\"& .MuiToggleButton-root\": {\n\t\t\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\t\t\tborderRight: \"1px solid #ccc\",\n\t\t\t\t\t\t\t\tcolor: \"#555\",\n\t\t\t\t\t\t\t\tfontWeight: 600,\n\t\t\t\t\t\t\t\ttextTransform: \"uppercase\",\n\t\t\t\t\t\t\t\tfontSize: \"0.72rem\",\n\t\t\t\t\t\t\t\tpx: 2,\n\t\t\t\t\t\t\t\tpy: 0.5,\n\t\t\t\t\t\t\t\tborderRadius: 0,\n\t\t\t\t\t\t\t\t\"&:last-of-type\": { borderRight: \"none\" },\n\t\t\t\t\t\t\t\t\"&.Mui-selected\": {\n\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.primary.main,\n\t\t\t\t\t\t\t\t\tcolor: \"#fff\",\n\t\t\t\t\t\t\t\t\t\"&:hover\": { backgroundColor: theme.palette.primary.dark },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleButton value=\"ALL\">All</ToggleButton>\n\t\t\t\t\t\t<ToggleButton value=\"INCOMING\">Inbound</ToggleButton>\n\t\t\t\t\t\t<ToggleButton value=\"OUTGOING\">Outbound</ToggleButton>\n\t\t\t\t\t</ToggleButtonGroup>\n\n\t\t\t\t\t{!showMissedCalls && (\n\t\t\t\t\t\t<Stack direction=\"row\" spacing={1} alignItems=\"center\">\n\t\t\t\t\t\t\t<DateRangePicker\n\t\t\t\t\t\t\t\tstartDate={startDate}\n\t\t\t\t\t\t\t\tendDate={endDate}\n\t\t\t\t\t\t\t\tonStartChange={(v) => { setStartDate(v); setPage(0); }}\n\t\t\t\t\t\t\t\tonEndChange={(v) => { setEndDate(v); setPage(0); }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\n\t\t\t\t{/* TABLE */}\n\t\t\t\t<TableContainer component={Paper} variant=\"outlined\" sx={{ display: 'flex', flexDirection: 'column' }}>\n\t\t\t\t <Box sx={{ overflowY: 'auto', maxHeight: 600 }}>\n\t\t\t\t\t<Table stickyHeader size=\"small\">\n\t\t\t\t\t\t{showMissedCalls ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<TableHead>\n\t\t\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t\t\t{MISSED_CALLS_COLS.map((col) => (\n\t\t\t\t\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\t\t\t\t\tkey={col}\n\t\t\t\t\t\t\t\t\t\t\t\talign={CENTER_COLS.has(col) ? \"center\" : \"left\"}\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ fontWeight: 600, backgroundColor: \"#f1f1f1\", fontSize: \"0.8rem\" }}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{col}\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t\t\t<TableBody>\n\t\t\t\t\t\t\t\t\t{loading ? (\n\t\t\t\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={5} align=\"center\" sx={{ py: 4 }}>\n\t\t\t\t\t\t\t\t\t\t\t\t<CircularProgress size={24} />\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t\t) : filteredMissedCalls.length === 0 ? (\n\t\t\t\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={5} align=\"center\" sx={{ py: 4, color: \"#999\", fontSize: \"0.82rem\" }}>\n\t\t\t\t\t\t\t\t\t\t\t\tNo Records Found\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\tfilteredMissedCalls.slice(page * rowsPerPage, (page + 1) * rowsPerPage).map((row, i) => (\n\t\t\t\t\t\t\t\t\t\t\t<MissedCallRow key={`${row.agentId}-${row.mobileNumber}-${i}`} row={row} />\n\t\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</TableBody>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<TableHead>\n\t\t\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t\t\t{CALL_HISTORY_COLS.map((col) => (\n\t\t\t\t\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\t\t\t\t\tkey={col}\n\t\t\t\t\t\t\t\t\t\t\t\talign={CENTER_COLS.has(col) ? \"center\" : \"left\"}\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ fontWeight: 600, backgroundColor: \"#f1f1f1\", fontSize: \"0.8rem\" }}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{col}\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t\t\t<TableBody>\n\t\t\t\t\t\t\t\t\t{loading ? (\n\t\t\t\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={8} align=\"center\" sx={{ py: 4 }}>\n\t\t\t\t\t\t\t\t\t\t\t\t<CircularProgress />\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t\t) : filteredCalls.length === 0 ? (\n\t\t\t\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={8} align=\"center\" sx={{ py: 4, color: \"#999\", fontSize: \"0.82rem\" }}>\n\t\t\t\t\t\t\t\t\t\t\t\tNo Records Found\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\tfilteredCalls.map((row, i) => (\n\t\t\t\t\t\t\t\t\t\t\t<CallRow\n\t\t\t\t\t\t\t\t\t\t\t\tkey={row.call_uuid}\n\t\t\t\t\t\t\t\t\t\t\t\trow={row}\n\t\t\t\t\t\t\t\t\t\t\t\tstriped={i % 2 === 0}\n\t\t\t\t\t\t\t\t\t\t\t\tfetchRecording={fetchRecording}\n\t\t\t\t\t\t\t\t\t\t\t\tonError={(msg) => showToast(msg, \"error\")}\n\t\t\t\t\t\t\t\t\t\t\t\tonOpenAudit={setAuditUuid}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</TableBody>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Table>\n\t\t\t\t </Box>\n\t\t\t\t <TablePagination\n\t\t\t\t\t\tcomponent=\"div\"\n\t\t\t\t\t\tcount={showMissedCalls ? filteredMissedCalls.length : callsTotal}\n\t\t\t\t\t\tpage={page}\n\t\t\t\t\t\trowsPerPage={rowsPerPage}\n\t\t\t\t\t\tonPageChange={(_, p) => setPage(p)}\n\t\t\t\t\t\tonRowsPerPageChange={(e) => { setRowsPerPage(parseInt(e.target.value, 10)); setPage(0); }}\n\t\t\t\t\t\trowsPerPageOptions={[10, 15, 25, 50, 100]}\n\t\t\t\t\t\tsx={{ borderTop: '1px solid #e0e0e0' }}\n\t\t\t\t />\n\t\t\t\t</TableContainer>\n\t\t\t</Box>\n\n\t\t\t{/* AI AUDIT REPORT DIALOG */}\n\t\t\t<AuditReportDialog\n\t\t\t\topen={!!auditUuid}\n\t\t\t\tonClose={() => setAuditUuid(null)}\n\t\t\t\trowData={auditUuid ? ({ callUuid: auditUuid } as unknown as CdrRecordResponse) : undefined}\n\t\t\t/>\n\t\t\t</Box>\n\t\t</LocalizationProvider>\n\t);\n});\n\nCallHistoryContent.displayName = \"CallHistoryContent\";\n\n// ──── Missed Call Row ─────────────────────────────────────────────────────────\n\nconst MissedCallRow = memo(({ row }: { row: MissedCallDetails }) => {\n\tconst theme = useTheme();\n\treturn (\n\t\t<TableRow hover>\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\", color: theme.palette.primary.main }}>\n\t\t\t\t{row.agentId}\n\t\t\t</TableCell>\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\" }}>{row.username}</TableCell>\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\" }}>\n\t\t\t\t{row.mobileNumber} ({row.callCount})\n\t\t\t</TableCell>\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\", textTransform: \"uppercase\" }}>\n\t\t\t\t{row.callType}\n\t\t\t</TableCell>\n\t\t\t<TableCell align=\"center\">\n\t\t\t\t<Phone sx={{ color: \"#c0392b\", fontSize: 20, cursor: \"pointer\" }} />\n\t\t\t</TableCell>\n\t\t</TableRow>\n\t);\n});\n\nMissedCallRow.displayName = \"MissedCallRow\";\n\n// ──── Call Row ────────────────────────────────────────────────────────────────\n\n/* Coordinates playback so only one recording is open at a time. */\nconst activePlayers = new Set<(activeId: string) => void>();\nconst notifyPlay = (activeId: string) => {\n\tactivePlayers.forEach((fn) => fn(activeId));\n};\n\nfunction CallRow({\n\trow,\n\tstriped,\n\tfetchRecording,\n\tonError,\n\tonOpenAudit,\n}: {\n\trow: CallHistoryItem;\n\tstriped: boolean;\n\tfetchRecording: (call_uuid: string) => Promise<Blob>;\n\tonError: (msg: string) => void;\n\tonOpenAudit: (call_uuid: string) => void;\n}) {\n\tconst [audioURL, setAudioURL] = useState<string | null>(null);\n\tconst [loadingAudio, setLoadingAudio] = useState(false);\n\t// Expansion / details state (kept for future use).\n\t// const [open, setOpen] = useState(false);\n\n\tconst closePlayer = useCallback(() => {\n\t\tsetAudioURL((prev) => {\n\t\t\tif (prev && prev.startsWith(\"blob:\")) URL.revokeObjectURL(prev);\n\t\t\treturn null;\n\t\t});\n\t}, []);\n\n\t// Close this player whenever another recording starts playing.\n\tuseEffect(() => {\n\t\tconst onPlay = (activeId: string) => {\n\t\t\tif (activeId !== row.call_uuid) closePlayer();\n\t\t};\n\t\tactivePlayers.add(onPlay);\n\t\treturn () => {\n\t\t\tactivePlayers.delete(onPlay);\n\t\t};\n\t}, [row.call_uuid, closePlayer]);\n\n\tconst handlePlay = async () => {\n\t\tif (!row.recording.available) return;\n\t\tnotifyPlay(row.call_uuid);\n\t\tsetLoadingAudio(true);\n\t\ttry {\n\t\t\tconst blob = await fetchRecording(row.call_uuid);\n\t\t\tsetAudioURL(URL.createObjectURL(blob));\n\t\t} catch {\n\t\t\tonError(\"Recording not available\");\n\t\t} finally {\n\t\t\tsetLoadingAudio(false);\n\t\t}\n\t};\n\n\t// const handleToggle = () => setOpen((prev) => !prev);\n\n\tconst bg = striped ? \"#fafafa\" : \"white\";\n\tconst cellSx = { fontSize: \"0.82rem\", backgroundColor: bg };\n\n\treturn (\n\t\t<>\n\t\t\t<TableRow hover>\n\t\t\t\t<TableCell sx={{ ...cellSx, maxWidth: 130 }}>\n\t\t\t\t\t<Tooltip title={row.call_uuid} arrow>\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\tnoWrap\n\t\t\t\t\t\t\tsx={{ fontSize: 13, maxWidth: 130, overflow: \"hidden\", textOverflow: \"ellipsis\" }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{row.call_uuid}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t</TableCell>\n\n\t\t\t\t<TableCell sx={cellSx}>{row.mobile_no}</TableCell>\n\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\n\t\t\t\t\t<Chip\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tlabel={row.call_type}\n\t\t\t\t\t\tcolor={row.call_type === \"INCOMING\" ? \"success\" : \"primary\"}\n\t\t\t\t\t/>\n\t\t\t\t</TableCell>\n\n\t\t\t\t<TableCell sx={cellSx}>\n\t\t\t\t\t{new Date(row.start_time).toLocaleString()}\n\t\t\t\t</TableCell>\n\n\t\t\t\t<TableCell sx={cellSx}>\n\t\t\t\t\t{row.end_time ? new Date(row.end_time).toLocaleString() : \"—\"}\n\t\t\t\t</TableCell>\n\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\n\t\t\t\t\t{row.agent_id ?? \"\"}\n\t\t\t\t</TableCell>\n\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\n\t\t\t\t\t{row.recording.available ? (\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\tonClick={handlePlay}\n\t\t\t\t\t\t\tdisabled={loadingAudio}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{loadingAudio ? <CircularProgress size={18} /> : <PlayArrow />}\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Chip size=\"small\" label=\"No File\" />\n\t\t\t\t\t)}\n\t\t\t\t</TableCell>\n\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\n\t\t\t\t\t<Tooltip title=\"View AI Audit Report\" arrow>\n\t\t\t\t\t\t<IconButton color=\"primary\" size=\"small\" onClick={() => onOpenAudit(row.call_uuid)}>\n\t\t\t\t\t\t\t<AssignmentIcon fontSize=\"small\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t</TableCell>\n\n\t\t\t\t{/* Expansion / details toggle (kept for future use). */}\n\t\t\t\t{/* <TableCell align=\"center\" sx={cellSx}>\n\t\t\t\t\t<IconButton onClick={handleToggle} size=\"small\">\n\t\t\t\t\t\t{open ? <ExpandLess /> : <KeyboardArrowDown />}\n\t\t\t\t\t</IconButton>\n\t\t\t\t</TableCell> */}\n\t\t\t</TableRow>\n\n\t\t\t{/* Audio player row */}\n\t\t\t{audioURL && (\n\t\t\t\t<TableRow>\n\t\t\t\t\t<TableCell colSpan={8} sx={{ p: 0 }}>\n\t\t\t\t\t\t<Box p={2}>\n\t\t\t\t\t\t\t<audio\n\t\t\t\t\t\t\t\tcontrols\n\t\t\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\t\t\tsrc={audioURL}\n\t\t\t\t\t\t\t\tonEnded={closePlayer}\n\t\t\t\t\t\t\t\tstyle={{ width: \"100%\" }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</TableCell>\n\t\t\t\t</TableRow>\n\t\t\t)}\n\n\t\t\t{/* Details collapse row (kept for future use). */}\n\t\t\t{/* <TableRow>\n\t\t\t\t<TableCell colSpan={8} sx={{ p: 0 }}>\n\t\t\t\t\t<Collapse in={open} unmountOnExit>\n\t\t\t\t\t\t<Box p={2} bgcolor=\"#f9fafc\" borderTop=\"1px solid #eee\">\n\t\t\t\t\t\t\t{open && <Transcript row={row} />}\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</Collapse>\n\t\t\t\t</TableCell>\n\t\t\t</TableRow> */}\n\t\t</>\n\t);\n}\n\n// ──── Default Export — wraps with SDKProvider for toast context ───────────────\n\nconst CallHistory: React.FC = () => (\n\t<SDKProvider>\n\t\t<CallHistoryContent />\n\t</SDKProvider>\n);\n\nexport default CallHistory;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../call-control-sdk/lib/pages/callHistory/index.tsx"],"sourcesContent":["import React, { memo, useCallback, useEffect, useState } from \"react\";\nimport {\n\tBox,\n\tTypography,\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableContainer,\n\tTableHead,\n\tTableRow,\n\tTablePagination,\n\tToggleButton,\n\tToggleButtonGroup,\n\tIconButton,\n\tCircularProgress,\n\tChip,\n\tStack,\n\tSwitch,\n\tFormControlLabel,\n\tTooltip,\n\tInputAdornment,\n\tOutlinedInput,\n\tuseTheme,\n\tPaper,\n} from \"@mui/material\";\nimport PlayArrow from \"@mui/icons-material/PlayArrow\";\nimport Search from \"@mui/icons-material/Search\";\nimport Phone from \"@mui/icons-material/Phone\";\nimport RefreshIcon from \"@mui/icons-material/Refresh\";\nimport AssignmentIcon from \"@mui/icons-material/Assignment\";\n// ──── Expansion / details (kept for future use) ──────────────────────────────\n// import Collapse from \"@mui/material/Collapse\";\n// import KeyboardArrowDown from \"@mui/icons-material/KeyboardArrowDown\";\n// import ExpandLess from \"@mui/icons-material/ExpandLess\";\n// import Transcript from \"../common/components/Transcript\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\nimport AppButton from \"../common/components/AppButton\";\nimport DateRangePicker from \"../common/components/DateRangePicker\";\nimport AuditReportDialog from \"../common/components/AuditReport\";\nimport { SDKProvider } from \"../../components/SDKProvider\";\nimport { SDKPageHeader } from \"../../components/SDKPageHeader\";\nimport { useToast } from \"../../services/toastMessage\";\nimport { useCallHistory } from \"./useCallHistory\";\nimport type { CallHistoryItem, MissedCallDetails, CallFilter } from \"./types\";\nimport type { CdrRecordResponse } from \"../cdrReport/types\";\n\n// ──── Header cell columns ────────────────────────────────────────────────────\n\nconst CALL_HISTORY_COLS = [\"Call UID\", \"Mobile\", \"Type\", \"Start Time\", \"End Time\", \"Agent\", \"Recording\", \"AI Audit Report\"] as const;\nconst MISSED_CALLS_COLS = [\"Agent ID\", \"Agent Name\", \"Mobile No\", \"Type\", \"Actions\"] as const;\nconst CENTER_COLS = new Set([\"Type\", \"Recording\", \"Agent\", \"AI Audit Report\", \"Actions\"]);\n\n// ──── Main content (needs SDKProvider above it for useToast) ─────────────────\n\nconst CallHistoryContent = memo(() => {\n\tconst theme = useTheme();\n\tconst { showToast } = useToast();\n\tconst { calls, callsTotal, missedCalls, loading, fetchCallHistory, fetchMissedCalls, fetchRecording } =\n\t\tuseCallHistory();\n\n\tconst [filter, setFilter] = useState<CallFilter>(\"ALL\");\n\tconst [search, setSearch] = useState(\"\");\n\tconst [showMissedCalls, setShowMissedCalls] = useState(false);\n\tconst [page, setPage] = useState(0);\n\tconst [rowsPerPage, setRowsPerPage] = useState(10);\n\n\t// Date range filter (sent to the server for call history).\n\tconst [startDate, setStartDate] = useState<Dayjs | null>(dayjs().startOf(\"day\"));\n\tconst [endDate, setEndDate] = useState<Dayjs | null>(dayjs());\n\n\t// Call UID whose AI audit report dialog is open (null = closed).\n\tconst [auditUuid, setAuditUuid] = useState<string | null>(null);\n\n\t// Debounced search (sent to the server for call history).\n\tconst [debouncedSearch, setDebouncedSearch] = useState(\"\");\n\tuseEffect(() => {\n\t\tconst t = setTimeout(() => setDebouncedSearch(search.trim()), 400);\n\t\treturn () => clearTimeout(t);\n\t}, [search]);\n\n\t// Serialised date range (YYYY-MM-DDTHH:mm:ss) — undefined when unset.\n\tconst startParam = startDate ? startDate.format(\"YYYY-MM-DDTHH:mm:ss\") : undefined;\n\tconst endParam = endDate ? endDate.format(\"YYYY-MM-DDTHH:mm:ss\") : undefined;\n\n\tuseEffect(() => {\n\t\tif (showMissedCalls) {\n\t\t\tfetchMissedCalls();\n\t\t} else {\n\t\t\t// Call history is paginated + searched + filtered server-side.\n\t\t\tfetchCallHistory({\n\t\t\t\tpage: page + 1,\n\t\t\t\tpageSize: rowsPerPage,\n\t\t\t\tsearch: debouncedSearch || undefined,\n\t\t\t\tcall_type: filter === \"ALL\" ? undefined : filter,\n\t\t\t\tstart_date: startParam,\n\t\t\t\tend_date: endParam,\n\t\t\t});\n\t\t}\n\t}, [showMissedCalls, page, rowsPerPage, filter, debouncedSearch, startParam, endParam, fetchCallHistory, fetchMissedCalls]);\n\n\t// Call history is filtered/searched server-side, so render the rows as-is.\n\tconst filteredCalls = calls;\n\n\tconst filteredMissedCalls = missedCalls\n\t\t.filter((c) => filter === \"ALL\" || c.callType?.toUpperCase() === filter)\n\t\t.filter((c) => {\n\t\t\tconst q = search.toLowerCase();\n\t\t\treturn (\n\t\t\t\tc.agentId?.toLowerCase().includes(q) ||\n\t\t\t\tc.username?.toLowerCase().includes(q) ||\n\t\t\t\tc.mobileNumber?.toLowerCase().includes(q)\n\t\t\t);\n\t\t});\n\n\treturn (\n\t\t<LocalizationProvider dateAdapter={AdapterDayjs}>\n\t\t\t<Box>\n\t\t\t{/* PAGE HEADER */}\n\t\t\t<SDKPageHeader\n\t\t\t\ttitle=\"Call History\"\n\t\t\t\tactions={\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n\t\t\t\t\t\t<AppButton\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tstartIcon={loading ? <CircularProgress size={14} color=\"inherit\" /> : <RefreshIcon sx={{ fontSize: \"0.95rem !important\" }} />}\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\tshowMissedCalls\n\t\t\t\t\t\t\t\t\t? fetchMissedCalls()\n\t\t\t\t\t\t\t\t\t: fetchCallHistory({\n\t\t\t\t\t\t\t\t\t\tpage: page + 1,\n\t\t\t\t\t\t\t\t\t\tpageSize: rowsPerPage,\n\t\t\t\t\t\t\t\t\t\tsearch: debouncedSearch || undefined,\n\t\t\t\t\t\t\t\t\t\tcall_type: filter === \"ALL\" ? undefined : filter,\n\t\t\t\t\t\t\t\t\t\tstart_date: startParam,\n\t\t\t\t\t\t\t\t\t\tend_date: endParam,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdisabled={loading}\n\t\t\t\t\t\t\tsx={{ height: 36 }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tRefresh\n\t\t\t\t\t\t</AppButton>\n\t\t\t\t\t\t<OutlinedInput\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tvalue={search}\n\t\t\t\t\t\t\tonChange={(e) => { setSearch(e.target.value); setPage(0); }}\n\t\t\t\t\t\t\tplaceholder=\"Search\"\n\t\t\t\t\t\t\tsx={{ width: 220, fontSize: \"0.82rem\", height: 36 }}\n\t\t\t\t\t\t\tendAdornment={\n\t\t\t\t\t\t\t\t<InputAdornment position=\"end\">\n\t\t\t\t\t\t\t\t\t<Search sx={{ fontSize: 18, color: \"#999\" }} />\n\t\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Stack>\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t<Box py={1.5} px={2}>\n\t\t\t\t{/* FILTER BAR */}\n\t\t\t\t<Stack direction=\"row\" spacing={2} alignItems=\"center\" mb={2}>\n\t\t\t\t\t<FormControlLabel\n\t\t\t\t\t\tcontrol={\n\t\t\t\t\t\t\t<Switch\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tchecked={showMissedCalls}\n\t\t\t\t\t\t\t\tonChange={(_, checked) => { setShowMissedCalls(checked); setPage(0); }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.8rem\", color: \"#555\" }}>\n\t\t\t\t\t\t\t\tMissed Calls\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsx={{ ml: 0 }}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleButtonGroup\n\t\t\t\t\t\tvalue={filter}\n\t\t\t\t\t\texclusive\n\t\t\t\t\t\tonChange={(_, v) => { if (v) { setFilter(v); setPage(0); } }}\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tborder: \"1px solid #ccc\",\n\t\t\t\t\t\t\tborderRadius: \"50px\",\n\t\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t\t\t\"& .MuiToggleButton-root\": {\n\t\t\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\t\t\tborderRight: \"1px solid #ccc\",\n\t\t\t\t\t\t\t\tcolor: \"#555\",\n\t\t\t\t\t\t\t\tfontWeight: 600,\n\t\t\t\t\t\t\t\ttextTransform: \"uppercase\",\n\t\t\t\t\t\t\t\tfontSize: \"0.72rem\",\n\t\t\t\t\t\t\t\tpx: 2,\n\t\t\t\t\t\t\t\tpy: 0.5,\n\t\t\t\t\t\t\t\tborderRadius: 0,\n\t\t\t\t\t\t\t\t\"&:last-of-type\": { borderRight: \"none\" },\n\t\t\t\t\t\t\t\t\"&.Mui-selected\": {\n\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.primary.main,\n\t\t\t\t\t\t\t\t\tcolor: \"#fff\",\n\t\t\t\t\t\t\t\t\t\"&:hover\": { backgroundColor: theme.palette.primary.dark },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleButton value=\"ALL\">All</ToggleButton>\n\t\t\t\t\t\t<ToggleButton value=\"INCOMING\">Inbound</ToggleButton>\n\t\t\t\t\t\t<ToggleButton value=\"OUTGOING\">Outbound</ToggleButton>\n\t\t\t\t\t</ToggleButtonGroup>\n\n\t\t\t\t\t{!showMissedCalls && (\n\t\t\t\t\t\t<Stack direction=\"row\" spacing={1} alignItems=\"center\">\n\t\t\t\t\t\t\t<DateRangePicker\n\t\t\t\t\t\t\t\tstartDate={startDate}\n\t\t\t\t\t\t\t\tendDate={endDate}\n\t\t\t\t\t\t\t\tonStartChange={(v) => { setStartDate(v); setPage(0); }}\n\t\t\t\t\t\t\t\tonEndChange={(v) => { setEndDate(v); setPage(0); }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\n\t\t\t\t{/* TABLE */}\n\t\t\t\t<TableContainer component={Paper} variant=\"outlined\" sx={{ display: 'flex', flexDirection: 'column' }}>\n\t\t\t\t <Box sx={{ overflowY: 'auto', maxHeight: 600 }}>\n\t\t\t\t\t<Table stickyHeader size=\"small\">\n\t\t\t\t\t\t{showMissedCalls ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<TableHead>\n\t\t\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t\t\t{MISSED_CALLS_COLS.map((col) => (\n\t\t\t\t\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\t\t\t\t\tkey={col}\n\t\t\t\t\t\t\t\t\t\t\t\talign={CENTER_COLS.has(col) ? \"center\" : \"left\"}\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ fontWeight: 600, backgroundColor: \"#f1f1f1\", fontSize: \"0.8rem\" }}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{col}\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t\t\t<TableBody>\n\t\t\t\t\t\t\t\t\t{loading ? (\n\t\t\t\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={5} align=\"center\" sx={{ py: 4 }}>\n\t\t\t\t\t\t\t\t\t\t\t\t<CircularProgress size={24} />\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t\t) : filteredMissedCalls.length === 0 ? (\n\t\t\t\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={5} align=\"center\" sx={{ py: 4, color: \"#999\", fontSize: \"0.82rem\" }}>\n\t\t\t\t\t\t\t\t\t\t\t\tNo Records Found\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\tfilteredMissedCalls.slice(page * rowsPerPage, (page + 1) * rowsPerPage).map((row, i) => (\n\t\t\t\t\t\t\t\t\t\t\t<MissedCallRow key={`${row.agentId}-${row.mobileNumber}-${i}`} row={row} />\n\t\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</TableBody>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<TableHead>\n\t\t\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t\t\t{CALL_HISTORY_COLS.map((col) => (\n\t\t\t\t\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\t\t\t\t\tkey={col}\n\t\t\t\t\t\t\t\t\t\t\t\talign={CENTER_COLS.has(col) ? \"center\" : \"left\"}\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ fontWeight: 600, backgroundColor: \"#f1f1f1\", fontSize: \"0.8rem\" }}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{col}\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t\t\t<TableBody>\n\t\t\t\t\t\t\t\t\t{loading ? (\n\t\t\t\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={8} align=\"center\" sx={{ py: 4 }}>\n\t\t\t\t\t\t\t\t\t\t\t\t<CircularProgress />\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t\t) : filteredCalls.length === 0 ? (\n\t\t\t\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={8} align=\"center\" sx={{ py: 4, color: \"#999\", fontSize: \"0.82rem\" }}>\n\t\t\t\t\t\t\t\t\t\t\t\tNo Records Found\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\tfilteredCalls.map((row, i) => (\n\t\t\t\t\t\t\t\t\t\t\t<CallRow\n\t\t\t\t\t\t\t\t\t\t\t\tkey={row.call_uuid}\n\t\t\t\t\t\t\t\t\t\t\t\trow={row}\n\t\t\t\t\t\t\t\t\t\t\t\tstriped={i % 2 === 0}\n\t\t\t\t\t\t\t\t\t\t\t\tfetchRecording={fetchRecording}\n\t\t\t\t\t\t\t\t\t\t\t\tonError={(msg) => showToast(msg, \"error\")}\n\t\t\t\t\t\t\t\t\t\t\t\tonOpenAudit={setAuditUuid}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</TableBody>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Table>\n\t\t\t\t </Box>\n\t\t\t\t <TablePagination\n\t\t\t\t\t\tcomponent=\"div\"\n\t\t\t\t\t\tcount={showMissedCalls ? filteredMissedCalls.length : callsTotal}\n\t\t\t\t\t\tpage={page}\n\t\t\t\t\t\trowsPerPage={rowsPerPage}\n\t\t\t\t\t\tonPageChange={(_, p) => setPage(p)}\n\t\t\t\t\t\tonRowsPerPageChange={(e) => { setRowsPerPage(parseInt(e.target.value, 10)); setPage(0); }}\n\t\t\t\t\t\trowsPerPageOptions={[10, 15, 25, 50, 100]}\n\t\t\t\t\t\tsx={{ borderTop: '1px solid #e0e0e0' }}\n\t\t\t\t />\n\t\t\t\t</TableContainer>\n\t\t\t</Box>\n\n\t\t\t{/* AI AUDIT REPORT DIALOG */}\n\t\t\t<AuditReportDialog\n\t\t\t\topen={!!auditUuid}\n\t\t\t\tonClose={() => setAuditUuid(null)}\n\t\t\t\trowData={auditUuid ? ({ callUuid: auditUuid } as unknown as CdrRecordResponse) : undefined}\n\t\t\t/>\n\t\t\t</Box>\n\t\t</LocalizationProvider>\n\t);\n});\n\nCallHistoryContent.displayName = \"CallHistoryContent\";\n\n// ──── Missed Call Row ─────────────────────────────────────────────────────────\n\nconst MissedCallRow = memo(({ row }: { row: MissedCallDetails }) => {\n\tconst theme = useTheme();\n\treturn (\n\t\t<TableRow hover>\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\", color: theme.palette.primary.main }}>\n\t\t\t\t{row.agentId}\n\t\t\t</TableCell>\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\" }}>{row.username}</TableCell>\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\" }}>\n\t\t\t\t{row.mobileNumber} ({row.callCount})\n\t\t\t</TableCell>\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\", textTransform: \"uppercase\" }}>\n\t\t\t\t{row.callType}\n\t\t\t</TableCell>\n\t\t\t<TableCell align=\"center\">\n\t\t\t\t<Phone sx={{ color: \"#c0392b\", fontSize: 20, cursor: \"pointer\" }} />\n\t\t\t</TableCell>\n\t\t</TableRow>\n\t);\n});\n\nMissedCallRow.displayName = \"MissedCallRow\";\n\n// ──── Call Row ────────────────────────────────────────────────────────────────\n\n/* Coordinates playback so only one recording is open at a time. */\nconst activePlayers = new Set<(activeId: string) => void>();\nconst notifyPlay = (activeId: string) => {\n\tactivePlayers.forEach((fn) => fn(activeId));\n};\n\nfunction CallRow({\n\trow,\n\tstriped,\n\tfetchRecording,\n\tonError,\n\tonOpenAudit,\n}: {\n\trow: CallHistoryItem;\n\tstriped: boolean;\n\tfetchRecording: (call_uuid: string) => Promise<Blob>;\n\tonError: (msg: string) => void;\n\tonOpenAudit: (call_uuid: string) => void;\n}) {\n\tconst [audioURL, setAudioURL] = useState<string | null>(null);\n\tconst [loadingAudio, setLoadingAudio] = useState(false);\n\t// Expansion / details state (kept for future use).\n\t// const [open, setOpen] = useState(false);\n\n\tconst closePlayer = useCallback(() => {\n\t\tsetAudioURL((prev) => {\n\t\t\tif (prev && prev.startsWith(\"blob:\")) URL.revokeObjectURL(prev);\n\t\t\treturn null;\n\t\t});\n\t}, []);\n\n\t// Close this player whenever another recording starts playing.\n\tuseEffect(() => {\n\t\tconst onPlay = (activeId: string) => {\n\t\t\tif (activeId !== row.call_uuid) closePlayer();\n\t\t};\n\t\tactivePlayers.add(onPlay);\n\t\treturn () => {\n\t\t\tactivePlayers.delete(onPlay);\n\t\t};\n\t}, [row.call_uuid, closePlayer]);\n\n\tconst handlePlay = async () => {\n\t\tif (!row.recording.available) return;\n\t\tnotifyPlay(row.call_uuid);\n\t\tsetLoadingAudio(true);\n\t\ttry {\n\t\t\tconst blob = await fetchRecording(row.call_uuid);\n\t\t\tsetAudioURL(URL.createObjectURL(blob));\n\t\t} catch {\n\t\t\tonError(\"Recording not available\");\n\t\t} finally {\n\t\t\tsetLoadingAudio(false);\n\t\t}\n\t};\n\n\t// const handleToggle = () => setOpen((prev) => !prev);\n\n\tconst bg = striped ? \"#fafafa\" : \"white\";\n\tconst cellSx = { fontSize: \"0.82rem\", backgroundColor: bg };\n\n\treturn (\n\t\t<>\n\t\t\t<TableRow hover>\n\t\t\t\t<TableCell sx={{ ...cellSx, maxWidth: 130 }}>\n\t\t\t\t\t<Tooltip title={row.call_uuid} arrow>\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\tnoWrap\n\t\t\t\t\t\t\tsx={{ fontSize: 13, maxWidth: 130, overflow: \"hidden\", textOverflow: \"ellipsis\" }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{row.call_uuid}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t</TableCell>\n\n\t\t\t\t<TableCell sx={cellSx}>{row.mobile_no}</TableCell>\n\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\n\t\t\t\t\t<Chip\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tlabel={row.call_type}\n\t\t\t\t\t\tcolor={row.call_type === \"INCOMING\" ? \"success\" : \"primary\"}\n\t\t\t\t\t/>\n\t\t\t\t</TableCell>\n\n\t\t\t\t<TableCell sx={cellSx}>\n\t\t\t\t\t{new Date(row.start_time).toLocaleString()}\n\t\t\t\t</TableCell>\n\n\t\t\t\t<TableCell sx={cellSx}>\n\t\t\t\t\t{row.end_time ? new Date(row.end_time).toLocaleString() : \"—\"}\n\t\t\t\t</TableCell>\n\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\n\t\t\t\t\t{row.user_id ?? \"\"}\n\t\t\t\t</TableCell>\n\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\n\t\t\t\t\t{row.recording.available ? (\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\tonClick={handlePlay}\n\t\t\t\t\t\t\tdisabled={loadingAudio}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{loadingAudio ? <CircularProgress size={18} /> : <PlayArrow />}\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Chip size=\"small\" label=\"No File\" />\n\t\t\t\t\t)}\n\t\t\t\t</TableCell>\n\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\n\t\t\t\t\t<Tooltip title=\"View AI Audit Report\" arrow>\n\t\t\t\t\t\t<IconButton color=\"primary\" size=\"small\" onClick={() => onOpenAudit(row.call_uuid)}>\n\t\t\t\t\t\t\t<AssignmentIcon fontSize=\"small\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t</TableCell>\n\n\t\t\t\t{/* Expansion / details toggle (kept for future use). */}\n\t\t\t\t{/* <TableCell align=\"center\" sx={cellSx}>\n\t\t\t\t\t<IconButton onClick={handleToggle} size=\"small\">\n\t\t\t\t\t\t{open ? <ExpandLess /> : <KeyboardArrowDown />}\n\t\t\t\t\t</IconButton>\n\t\t\t\t</TableCell> */}\n\t\t\t</TableRow>\n\n\t\t\t{/* Audio player row */}\n\t\t\t{audioURL && (\n\t\t\t\t<TableRow>\n\t\t\t\t\t<TableCell colSpan={8} sx={{ p: 0 }}>\n\t\t\t\t\t\t<Box p={2}>\n\t\t\t\t\t\t\t<audio\n\t\t\t\t\t\t\t\tcontrols\n\t\t\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\t\t\tsrc={audioURL}\n\t\t\t\t\t\t\t\tonEnded={closePlayer}\n\t\t\t\t\t\t\t\tstyle={{ width: \"100%\" }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</TableCell>\n\t\t\t\t</TableRow>\n\t\t\t)}\n\n\t\t\t{/* Details collapse row (kept for future use). */}\n\t\t\t{/* <TableRow>\n\t\t\t\t<TableCell colSpan={8} sx={{ p: 0 }}>\n\t\t\t\t\t<Collapse in={open} unmountOnExit>\n\t\t\t\t\t\t<Box p={2} bgcolor=\"#f9fafc\" borderTop=\"1px solid #eee\">\n\t\t\t\t\t\t\t{open && <Transcript row={row} />}\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</Collapse>\n\t\t\t\t</TableCell>\n\t\t\t</TableRow> */}\n\t\t</>\n\t);\n}\n\n// ──── Default Export — wraps with SDKProvider for toast context ───────────────\n\nconst CallHistory: React.FC = () => (\n\t<SDKProvider>\n\t\t<CallHistoryContent />\n\t</SDKProvider>\n);\n\nexport default CallHistory;\n"],"mappings":"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","names":[]}
@@ -3196,17 +3196,17 @@ var CampaignsContent = memo(function CampaignsContent2() {
3196
3196
  const { chip: prioChip, label: prioLabel } = leadPriorityChipSx(lead.priority);
3197
3197
  const isManualPreview = ((leadsMeta == null ? void 0 : leadsMeta.dialingMode) || (sc == null ? void 0 : sc.dialingMode) || "").toUpperCase() === "PREVIEW";
3198
3198
  return /* @__PURE__ */ jsxs(TableRow, { sx: tableRowSx, children: [
3199
- /* @__PURE__ */ jsx2(TableCell, { sx: bodyCellSx, children: isManualPreview && isDialable ? /* @__PURE__ */ jsx2(Tooltip, { title: dialTooltip, children: /* @__PURE__ */ jsx2(
3199
+ /* @__PURE__ */ jsx2(TableCell, { sx: bodyCellSx, children: isManualPreview ? /* @__PURE__ */ jsx2(Tooltip, { title: dialTooltip, children: /* @__PURE__ */ jsx2(
3200
3200
  Box,
3201
3201
  {
3202
3202
  component: "span",
3203
- onClick: () => handleDialPreview(lead.id),
3203
+ onClick: isDialable ? () => handleDialPreview(lead.id) : void 0,
3204
3204
  sx: {
3205
- color: "#1A5F6C",
3206
- fontWeight: 600,
3207
- cursor: "pointer",
3208
- textDecoration: "underline",
3209
- "&:hover": { color: "#12454f" }
3205
+ color: isDialable ? "#1A5F6C" : "inherit",
3206
+ fontWeight: isDialable ? 600 : "inherit",
3207
+ cursor: isDialable ? "pointer" : "default",
3208
+ textDecoration: isDialable ? "underline" : "none",
3209
+ "&:hover": isDialable ? { color: "#12454f" } : void 0
3210
3210
  },
3211
3211
  children: lead.phoneNumber
3212
3212
  }
@@ -3226,7 +3226,7 @@ var CampaignsContent = memo(function CampaignsContent2() {
3226
3226
  IconButton,
3227
3227
  {
3228
3228
  size: "small",
3229
- onClick: () => handleDialPreview(lead.id),
3229
+ onClick: isDialable ? () => handleDialPreview(lead.id) : void 0,
3230
3230
  disabled: !isDialable,
3231
3231
  sx: {
3232
3232
  color: isDialable ? "#2e7d32" : "#bdbdbd",
@@ -3447,4 +3447,4 @@ var campaigns_default = Campaigns;
3447
3447
  export {
3448
3448
  campaigns_default as default
3449
3449
  };
3450
- //# sourceMappingURL=campaigns-5XNAI7JM.mjs.map
3450
+ //# sourceMappingURL=campaigns-6WLCKIGO.mjs.map