import { useMemo } from "react";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors";
import RRCustomerSelector from "./rr-customer-selector";
import FortellisCustomerSelector from "./fortellis-customer-selector";
import CDKCustomerSelector from "./cdk-customer-selector";
import PBSCustomerSelector from "./pbs-customer-selector";
import { DMS_MAP } from "../../utils/dmsUtils";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop
});
const mapDispatchToProps = () => ({});
export default connect(mapStateToProps, mapDispatchToProps)(DmsCustomerSelector);
/**
* DMS Customer Selector component that renders the appropriate customer selector
* @param props
* @returns {JSX.Element|null}
* @constructor
*/
export function DmsCustomerSelector(props) {
const { bodyshop, jobid, job, socket, rrOptions = {} } = props;
// Centralized "mode" (provider + transport)
const mode = props.mode;
// Stable base props for children
const base = useMemo(() => ({ bodyshop, jobid, job, socket }), [bodyshop, jobid, job, socket]);
switch (mode) {
case DMS_MAP.reynolds: {
// Map rrOptions to current RR prop shape (you can also just pass rrOptions through and unpack in RR)
const rrProps = {
rrOpenRoLimit: rrOptions.openRoLimit,
onRrOpenRoFinished: rrOptions.onOpenRoFinished,
rrValidationPending: rrOptions.validationPending,
onValidationFinished: rrOptions.onValidationFinished
};
return ;
}
case DMS_MAP.fortellis:
return ;
case DMS_MAP.cdk:
return ;
case DMS_MAP.pbs:
return ;
default:
return null;
}
}