ahs-cti 0.0.15 → 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.
- package/dist/{callHistory-PHNTU2XO.mjs → callHistory-XCN3EARD.mjs} +2 -2
- package/dist/{callHistory-PHNTU2XO.mjs.map → callHistory-XCN3EARD.mjs.map} +1 -1
- package/dist/{campaigns-CRLTSO5Z.mjs → campaigns-HYWUCA2P.mjs} +9 -9
- package/dist/{campaigns-CRLTSO5Z.mjs.map → campaigns-HYWUCA2P.mjs.map} +1 -1
- package/dist/index.js +9 -9
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist-react/{callHistory-5WHRXZSU.mjs → callHistory-7RUBUCVA.mjs} +2 -2
- package/dist-react/{callHistory-5WHRXZSU.mjs.map → callHistory-7RUBUCVA.mjs.map} +1 -1
- package/dist-react/{campaigns-5XNAI7JM.mjs → campaigns-6WLCKIGO.mjs} +9 -9
- package/dist-react/{campaigns-5XNAI7JM.mjs.map → campaigns-6WLCKIGO.mjs.map} +1 -1
- package/dist-react/index.js +9 -9
- package/dist-react/index.js.map +1 -1
- package/dist-react/index.mjs +2 -2
- package/package.json +1 -1
|
@@ -384,7 +384,7 @@ function CallRow({
|
|
|
384
384
|
) }),
|
|
385
385
|
/* @__PURE__ */ jsx(TableCell_default, { sx: cellSx, children: new Date(row.start_time).toLocaleString() }),
|
|
386
386
|
/* @__PURE__ */ jsx(TableCell_default, { sx: cellSx, children: row.end_time ? new Date(row.end_time).toLocaleString() : "\u2014" }),
|
|
387
|
-
/* @__PURE__ */ jsx(TableCell_default, { align: "center", sx: cellSx, children: (_a = row.
|
|
387
|
+
/* @__PURE__ */ jsx(TableCell_default, { align: "center", sx: cellSx, children: (_a = row.user_id) != null ? _a : "" }),
|
|
388
388
|
/* @__PURE__ */ jsx(TableCell_default, { align: "center", sx: cellSx, children: row.recording.available ? /* @__PURE__ */ jsx(
|
|
389
389
|
IconButton_default,
|
|
390
390
|
{
|
|
@@ -414,4 +414,4 @@ var callHistory_default = CallHistory;
|
|
|
414
414
|
export {
|
|
415
415
|
callHistory_default as default
|
|
416
416
|
};
|
|
417
|
-
//# sourceMappingURL=callHistory-
|
|
417
|
+
//# sourceMappingURL=callHistory-XCN3EARD.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":["dayjs"]}
|
|
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":["dayjs"]}
|
|
@@ -3256,17 +3256,17 @@ var CampaignsContent = memo(function CampaignsContent2() {
|
|
|
3256
3256
|
const { chip: prioChip, label: prioLabel } = leadPriorityChipSx(lead.priority);
|
|
3257
3257
|
const isManualPreview = ((leadsMeta == null ? void 0 : leadsMeta.dialingMode) || (sc == null ? void 0 : sc.dialingMode) || "").toUpperCase() === "PREVIEW";
|
|
3258
3258
|
return /* @__PURE__ */ jsxs(TableRow_default, { sx: tableRowSx, children: [
|
|
3259
|
-
/* @__PURE__ */ jsx2(TableCell_default, { sx: bodyCellSx, children: isManualPreview
|
|
3259
|
+
/* @__PURE__ */ jsx2(TableCell_default, { sx: bodyCellSx, children: isManualPreview ? /* @__PURE__ */ jsx2(Tooltip_default, { title: dialTooltip, children: /* @__PURE__ */ jsx2(
|
|
3260
3260
|
Box_default,
|
|
3261
3261
|
{
|
|
3262
3262
|
component: "span",
|
|
3263
|
-
onClick: () => handleDialPreview(lead.id),
|
|
3263
|
+
onClick: isDialable ? () => handleDialPreview(lead.id) : void 0,
|
|
3264
3264
|
sx: {
|
|
3265
|
-
color: "#1A5F6C",
|
|
3266
|
-
fontWeight: 600,
|
|
3267
|
-
cursor: "pointer",
|
|
3268
|
-
textDecoration: "underline",
|
|
3269
|
-
"&:hover": { color: "#12454f" }
|
|
3265
|
+
color: isDialable ? "#1A5F6C" : "inherit",
|
|
3266
|
+
fontWeight: isDialable ? 600 : "inherit",
|
|
3267
|
+
cursor: isDialable ? "pointer" : "default",
|
|
3268
|
+
textDecoration: isDialable ? "underline" : "none",
|
|
3269
|
+
"&:hover": isDialable ? { color: "#12454f" } : void 0
|
|
3270
3270
|
},
|
|
3271
3271
|
children: lead.phoneNumber
|
|
3272
3272
|
}
|
|
@@ -3286,7 +3286,7 @@ var CampaignsContent = memo(function CampaignsContent2() {
|
|
|
3286
3286
|
IconButton_default,
|
|
3287
3287
|
{
|
|
3288
3288
|
size: "small",
|
|
3289
|
-
onClick: () => handleDialPreview(lead.id),
|
|
3289
|
+
onClick: isDialable ? () => handleDialPreview(lead.id) : void 0,
|
|
3290
3290
|
disabled: !isDialable,
|
|
3291
3291
|
sx: {
|
|
3292
3292
|
color: isDialable ? "#2e7d32" : "#bdbdbd",
|
|
@@ -3507,4 +3507,4 @@ var campaigns_default = Campaigns;
|
|
|
3507
3507
|
export {
|
|
3508
3508
|
campaigns_default as default
|
|
3509
3509
|
};
|
|
3510
|
-
//# sourceMappingURL=campaigns-
|
|
3510
|
+
//# sourceMappingURL=campaigns-HYWUCA2P.mjs.map
|