55 lines
2.0 KiB
JavaScript
55 lines
2.0 KiB
JavaScript
import {notification} from "antd";
|
|
import parsePhoneNumber from "libphonenumber-js";
|
|
import React from "react";
|
|
import {useTranslation} from "react-i18next";
|
|
import {connect} from "react-redux";
|
|
import {openChatByPhone} from "../../redux/messaging/messaging.actions";
|
|
import PhoneNumberFormatter from "../../utils/PhoneFormatter";
|
|
|
|
import {createStructuredSelector} from "reselect";
|
|
import {selectBodyshop} from "../../redux/user/user.selectors";
|
|
import {searchingForConversation} from "../../redux/messaging/messaging.selectors";
|
|
|
|
const mapStateToProps = createStructuredSelector({
|
|
bodyshop: selectBodyshop,
|
|
searchingForConversation: searchingForConversation,
|
|
});
|
|
|
|
const mapDispatchToProps = (dispatch) => ({
|
|
openChatByPhone: (phone) => dispatch(openChatByPhone(phone)),
|
|
});
|
|
|
|
export function ChatOpenButton({
|
|
bodyshop,
|
|
searchingForConversation,
|
|
phone,
|
|
jobid,
|
|
openChatByPhone,
|
|
}) {
|
|
const {t} = useTranslation();
|
|
if (!phone) return <></>;
|
|
|
|
if (!bodyshop.messagingservicesid)
|
|
return <PhoneNumberFormatter>{phone}</PhoneNumberFormatter>;
|
|
|
|
return (
|
|
<a
|
|
href="# "
|
|
onClick={(e) => {
|
|
e.stopPropagation();
|
|
const p = parsePhoneNumber(phone, "CA");
|
|
if (searchingForConversation) return; //This is to prevent finding the same thing twice.
|
|
if (p && p.isValid()) {
|
|
openChatByPhone({phone_num: p.formatInternational(), jobid: jobid});
|
|
} else {
|
|
notification["error"]({message: t("messaging.error.invalidphone")});
|
|
}
|
|
}}
|
|
>
|
|
<PhoneNumberFormatter>{phone}</PhoneNumberFormatter>
|
|
</a>
|
|
);
|
|
}
|
|
|
|
export default connect(mapStateToProps, mapDispatchToProps)(ChatOpenButton);
|