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.
- package/dist/{auditReport-VIZNAWRR.mjs → auditReport-AJKIWSAO.mjs} +2 -2
- package/dist/{auditReports-B23T64NX.mjs → auditReports-OYKJFPEY.mjs} +2 -2
- package/dist/{callHistory-7UGLIMUP.mjs → callHistory-XCN3EARD.mjs} +3 -3
- package/dist/{callHistory-7UGLIMUP.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/{cdrReport-FOFE2Y5I.mjs → cdrReport-LK56LH54.mjs} +2 -2
- package/dist/{chunk-3RBBUP4Y.mjs → chunk-K4KOAVVT.mjs} +3 -3
- package/dist/{chunk-3RBBUP4Y.mjs.map → chunk-K4KOAVVT.mjs.map} +1 -1
- package/dist/index.d.mts +32 -1
- package/dist/index.d.ts +33 -2
- package/dist/index.js +14 -11
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12 -6
- package/dist/index.mjs.map +1 -1
- package/dist-react/{auditReport-Y2T3TGCE.mjs → auditReport-77B3Y47L.mjs} +2 -2
- package/dist-react/{auditReports-25DOTA6W.mjs → auditReports-UIUMMKXM.mjs} +2 -2
- package/dist-react/{callHistory-OPYSTZGJ.mjs → callHistory-7RUBUCVA.mjs} +3 -3
- package/dist-react/{callHistory-OPYSTZGJ.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/{cdrReport-BHTBJIQT.mjs → cdrReport-7FBR4WI6.mjs} +2 -2
- package/dist-react/{chunk-JWSZGABS.mjs → chunk-CPY7T5YA.mjs} +3 -3
- package/dist-react/{chunk-JWSZGABS.mjs.map → chunk-CPY7T5YA.mjs.map} +1 -1
- package/dist-react/index.d.mts +32 -1
- package/dist-react/index.d.ts +32 -1
- package/dist-react/index.js +14 -11
- package/dist-react/index.js.map +1 -1
- package/dist-react/index.mjs +12 -6
- package/dist-react/index.mjs.map +1 -1
- package/package.json +1 -1
- /package/dist/{auditReport-VIZNAWRR.mjs.map → auditReport-AJKIWSAO.mjs.map} +0 -0
- /package/dist/{auditReports-B23T64NX.mjs.map → auditReports-OYKJFPEY.mjs.map} +0 -0
- /package/dist/{cdrReport-FOFE2Y5I.mjs.map → cdrReport-LK56LH54.mjs.map} +0 -0
- /package/dist-react/{auditReport-Y2T3TGCE.mjs.map → auditReport-77B3Y47L.mjs.map} +0 -0
- /package/dist-react/{auditReports-25DOTA6W.mjs.map → auditReports-UIUMMKXM.mjs.map} +0 -0
- /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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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.
|
|
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-
|
|
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
|
|
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-
|
|
3450
|
+
//# sourceMappingURL=campaigns-6WLCKIGO.mjs.map
|