refactor: consolidate 3 identical Redux slices into one seleniumTaskSlice
This commit is contained in:
@@ -50,7 +50,7 @@ import { useAppDispatch, useAppSelector } from "@/redux/hooks";
|
||||
import {
|
||||
clearTaskStatus,
|
||||
setTaskStatus,
|
||||
} from "@/redux/slices/seleniumEligibilityBatchCheckTaskSlice";
|
||||
} from "@/redux/slices/seleniumTaskSlice";
|
||||
import { SeleniumTaskBanner } from "@/components/ui/selenium-task-banner";
|
||||
import { PatientStatusBadge } from "@/components/appointments/patient-status-badge";
|
||||
import { AppointmentProceduresDialog } from "@/components/appointment-procedures/appointment-procedures-dialog";
|
||||
@@ -117,7 +117,7 @@ export default function AppointmentsPage() {
|
||||
}>({ open: false });
|
||||
const dispatch = useAppDispatch();
|
||||
const batchTask = useAppSelector(
|
||||
(state) => state.seleniumEligibilityBatchCheckTask
|
||||
(state) => state.seleniumTasks.eligibilityBatchCheck
|
||||
);
|
||||
const [isCheckingAllElig, setIsCheckingAllElig] = useState(false);
|
||||
const [processedAppointmentIds, setProcessedAppointmentIds] = useState<
|
||||
@@ -743,6 +743,7 @@ export default function AppointmentsPage() {
|
||||
// Start: set redux task status (visible globally)
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "eligibilityBatchCheck",
|
||||
status: "pending",
|
||||
message: `Checking eligibility for appointments on ${dateParam}...`,
|
||||
})
|
||||
@@ -771,6 +772,7 @@ export default function AppointmentsPage() {
|
||||
// global error
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "eligibilityBatchCheck",
|
||||
status: "error",
|
||||
message: `Batch eligibility failed: ${errMsg}`,
|
||||
})
|
||||
@@ -849,6 +851,7 @@ export default function AppointmentsPage() {
|
||||
// global success status (summary)
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "eligibilityBatchCheck",
|
||||
status: skippedCount > 0 ? "error" : "success",
|
||||
message: `Batch processed ${results.length} appointments — success: ${successCount}, warnings: ${warningCount}, skipped: ${skippedCount}.`,
|
||||
})
|
||||
@@ -864,6 +867,7 @@ export default function AppointmentsPage() {
|
||||
console.error("[check-all-eligibilities] error", err);
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "eligibilityBatchCheck",
|
||||
status: "error",
|
||||
message: `Batch eligibility error: ${err?.message ?? String(err)}`,
|
||||
})
|
||||
@@ -912,7 +916,7 @@ export default function AppointmentsPage() {
|
||||
status={batchTask.status}
|
||||
message={batchTask.message}
|
||||
show={batchTask.show}
|
||||
onClear={() => dispatch(clearTaskStatus())}
|
||||
onClear={() => dispatch(clearTaskStatus("eligibilityBatchCheck"))}
|
||||
/>
|
||||
|
||||
<div className="container mx-auto">
|
||||
|
||||
@@ -16,7 +16,7 @@ import { useAppDispatch, useAppSelector } from "@/redux/hooks";
|
||||
import {
|
||||
setTaskStatus,
|
||||
clearTaskStatus,
|
||||
} from "@/redux/slices/seleniumClaimSubmitTaskSlice";
|
||||
} from "@/redux/slices/seleniumTaskSlice";
|
||||
import { SeleniumTaskBanner } from "@/components/ui/selenium-task-banner";
|
||||
import ClaimsRecentTable, {
|
||||
QK_CLAIMS_BASE,
|
||||
@@ -47,7 +47,7 @@ export default function ClaimsPage() {
|
||||
const [previewFallbackFilename, setPreviewFallbackFilename] = useState<string | null>(null);
|
||||
const dispatch = useAppDispatch();
|
||||
const { status, message, show } = useAppSelector(
|
||||
(state) => state.seleniumClaimSubmitTask
|
||||
(state) => state.seleniumTasks.claimSubmit
|
||||
);
|
||||
const { toast } = useToast();
|
||||
const { user } = useAuth();
|
||||
@@ -318,6 +318,7 @@ export default function ClaimsPage() {
|
||||
try {
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "claimSubmit",
|
||||
status: "pending",
|
||||
message: "Submitting claim to Selenium...",
|
||||
})
|
||||
@@ -336,6 +337,7 @@ export default function ClaimsPage() {
|
||||
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "claimSubmit",
|
||||
status: "pending",
|
||||
message: "Submitted to Selenium. Awaiting PDF...",
|
||||
})
|
||||
@@ -357,6 +359,7 @@ export default function ClaimsPage() {
|
||||
} catch (error: any) {
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "claimSubmit",
|
||||
status: "error",
|
||||
message: error.message || "Selenium submission failed",
|
||||
})
|
||||
@@ -382,6 +385,7 @@ export default function ClaimsPage() {
|
||||
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "claimSubmit",
|
||||
status: "pending",
|
||||
message: "Downloading PDF from Selenium...",
|
||||
})
|
||||
@@ -402,6 +406,7 @@ export default function ClaimsPage() {
|
||||
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "claimSubmit",
|
||||
status: "success",
|
||||
message: "Claim submitted & PDF downloaded successfully.",
|
||||
})
|
||||
@@ -418,6 +423,7 @@ export default function ClaimsPage() {
|
||||
} catch (error: any) {
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "claimSubmit",
|
||||
status: "error",
|
||||
message: error.message || "Failed to download PDF",
|
||||
})
|
||||
@@ -456,6 +462,7 @@ export default function ClaimsPage() {
|
||||
try {
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "claimSubmit",
|
||||
status: "pending",
|
||||
message: "Submitting claim pre auth to Selenium...",
|
||||
})
|
||||
@@ -470,6 +477,7 @@ export default function ClaimsPage() {
|
||||
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "claimSubmit",
|
||||
status: "pending",
|
||||
message: "Submitted to Selenium. Awaiting PDF...",
|
||||
})
|
||||
@@ -491,6 +499,7 @@ export default function ClaimsPage() {
|
||||
} catch (error: any) {
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "claimSubmit",
|
||||
status: "error",
|
||||
message: error.message || "Selenium submission failed",
|
||||
})
|
||||
@@ -508,7 +517,7 @@ export default function ClaimsPage() {
|
||||
status={status}
|
||||
message={message}
|
||||
show={show}
|
||||
onClear={() => dispatch(clearTaskStatus())}
|
||||
onClear={() => dispatch(clearTaskStatus("claimSubmit"))}
|
||||
/>
|
||||
|
||||
<div className="container mx-auto space-y-6">
|
||||
|
||||
@@ -19,7 +19,7 @@ import { useAppDispatch, useAppSelector } from "@/redux/hooks";
|
||||
import {
|
||||
setTaskStatus,
|
||||
clearTaskStatus,
|
||||
} from "@/redux/slices/seleniumEligibilityCheckTaskSlice";
|
||||
} from "@/redux/slices/seleniumTaskSlice";
|
||||
import { SeleniumTaskBanner } from "@/components/ui/selenium-task-banner";
|
||||
import { formatLocalDate, parseLocalDate } from "@/utils/dateUtils";
|
||||
import { InsertPatient, Patient } from "@repo/db/types";
|
||||
@@ -34,7 +34,7 @@ export default function InsuranceStatusPage() {
|
||||
const { toast } = useToast();
|
||||
const dispatch = useAppDispatch();
|
||||
const { status, message, show } = useAppSelector(
|
||||
(state) => state.seleniumEligibilityCheckTask,
|
||||
(state) => state.seleniumTasks.eligibilityCheck,
|
||||
);
|
||||
const [selectedPatient, setSelectedPatient] = useState<Patient | null>(null);
|
||||
const [location] = useLocation();
|
||||
@@ -121,6 +121,7 @@ export default function InsuranceStatusPage() {
|
||||
try {
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "eligibilityCheck",
|
||||
status: "pending",
|
||||
message: "Sending Data to Selenium...",
|
||||
}),
|
||||
@@ -136,6 +137,7 @@ export default function InsuranceStatusPage() {
|
||||
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "eligibilityCheck",
|
||||
status: "success",
|
||||
message:
|
||||
"Patient status is updated, and its eligibility pdf is uploaded at Document Page.",
|
||||
@@ -163,6 +165,7 @@ export default function InsuranceStatusPage() {
|
||||
} catch (error: any) {
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "eligibilityCheck",
|
||||
status: "error",
|
||||
message: error.message || "Selenium submission failed",
|
||||
}),
|
||||
@@ -187,6 +190,7 @@ export default function InsuranceStatusPage() {
|
||||
try {
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "eligibilityCheck",
|
||||
status: "pending",
|
||||
message: "Sending Data to Selenium...",
|
||||
}),
|
||||
@@ -201,6 +205,7 @@ export default function InsuranceStatusPage() {
|
||||
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "eligibilityCheck",
|
||||
status: "success",
|
||||
message:
|
||||
"Claim status is updated, and its pdf is uploaded at Document Page.",
|
||||
@@ -228,6 +233,7 @@ export default function InsuranceStatusPage() {
|
||||
} catch (error: any) {
|
||||
dispatch(
|
||||
setTaskStatus({
|
||||
key: "eligibilityCheck",
|
||||
status: "error",
|
||||
message: error.message || "Selenium submission failed",
|
||||
}),
|
||||
@@ -426,7 +432,7 @@ export default function InsuranceStatusPage() {
|
||||
status={status}
|
||||
message={message}
|
||||
show={show}
|
||||
onClear={() => dispatch(clearTaskStatus())}
|
||||
onClear={() => dispatch(clearTaskStatus("eligibilityCheck"))}
|
||||
/>
|
||||
|
||||
<div className="container mx-auto space-y-6">
|
||||
|
||||
Reference in New Issue
Block a user