diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index a940cb29f..f81d5783a 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -20032,6 +20032,27 @@ + + noallowtxt + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + nojobs false diff --git a/client/src/App/App.styles.scss b/client/src/App/App.styles.scss index e2e13795f..74fae7505 100644 --- a/client/src/App/App.styles.scss +++ b/client/src/App/App.styles.scss @@ -79,3 +79,43 @@ .ant-select { width: 100%; } + +.production-alert { + animation: alertBlinker 1s linear infinite; + color: blue; +} +@keyframes alertBlinker { + 50% { + color: red; + opacity: 100; + //opacity: 0; + } +} + +.blue { + color: blue; +} + +.production-completion-1 { + animation: production-completion-1-blinker 5s linear infinite; +} +@keyframes production-completion-1-blinker { + 50% { + background: rgba(207, 12, 12, 0.555); + } +} + +.react-resizable { + position: relative; + background-clip: padding-box; +} + +.react-resizable-handle { + position: absolute; + width: 10px; + height: 100%; + bottom: 0; + right: -5px; + cursor: col-resize; + z-index: 1; +} diff --git a/client/src/components/chat-conversation-list/chat-conversation-list.component.jsx b/client/src/components/chat-conversation-list/chat-conversation-list.component.jsx index bb872743b..024730bf8 100644 --- a/client/src/components/chat-conversation-list/chat-conversation-list.component.jsx +++ b/client/src/components/chat-conversation-list/chat-conversation-list.component.jsx @@ -1,4 +1,5 @@ -import { Badge, List, Tag } from "antd"; +import { Badge, List, Tag, Tooltip } from "antd"; +import { AlertFilled } from "@ant-design/icons"; import React from "react"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; @@ -6,6 +7,7 @@ import { setSelectedConversation } from "../../redux/messaging/messaging.actions import { selectSelectedConversation } from "../../redux/messaging/messaging.selectors"; import PhoneFormatter from "../../utils/PhoneFormatter"; import "./chat-conversation-list.styles.scss"; +import { useTranslation } from "react-i18next"; const mapStateToProps = createStructuredSelector({ selectedConversation: selectSelectedConversation, @@ -21,6 +23,8 @@ export function ChatConversationListComponent({ selectedConversation, setSelectedConversation, }) { + const { t } = useTranslation(); + return (
0 ? (
{item.job_conversations.map((j, idx) => ( - - {`${j.job.ownr_fn || ""} ${j.job.ownr_ln || ""} ${ +
+ {j.job.owner && !j.job.owner.allow_text_message && ( + + + + )} +
{`${j.job.ownr_fn || ""} ${j.job.ownr_ln || ""} ${ j.job.ownr_co_nm || "" - } `} - + } `}
+
))}
) : ( diff --git a/client/src/components/chat-conversation-title-tags/chat-conversation-title-tags.component.jsx b/client/src/components/chat-conversation-title-tags/chat-conversation-title-tags.component.jsx index 2051bf5ae..694fc0f46 100644 --- a/client/src/components/chat-conversation-title-tags/chat-conversation-title-tags.component.jsx +++ b/client/src/components/chat-conversation-title-tags/chat-conversation-title-tags.component.jsx @@ -1,9 +1,10 @@ -import React from "react"; -import { Tag } from "antd"; -import { Link } from "react-router-dom"; import { useMutation } from "@apollo/react-hooks"; -import { REMOVE_CONVERSATION_TAG } from "../../graphql/job-conversations.queries"; +import { Tag } from "antd"; +import React from "react"; +import { Link } from "react-router-dom"; import { logImEXEvent } from "../../firebase/firebase.utils"; +import { REMOVE_CONVERSATION_TAG } from "../../graphql/job-conversations.queries"; + export default function ChatConversationTitleTags({ jobConversations }) { const [removeJobConversation] = useMutation(REMOVE_CONVERSATION_TAG); diff --git a/client/src/components/production-list-table/production-list-table.component.jsx b/client/src/components/production-list-table/production-list-table.component.jsx index fc0dff23a..8cb53a75b 100644 --- a/client/src/components/production-list-table/production-list-table.component.jsx +++ b/client/src/components/production-list-table/production-list-table.component.jsx @@ -7,10 +7,9 @@ import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { selectBodyshop } from "../../redux/user/user.selectors"; import ProductionListColumnsAdd from "../production-list-columns/production-list-columns.add.component"; +import ProductionListDetail from "../production-list-detail/production-list-detail.component"; import ProductionListSaveConfigButton from "../production-list-save-config-button/production-list-save-config-button.component"; import ResizeableTitle from "./production-list-table.resizeable.component"; -import "./production-list-table.styles.scss"; -import ProductionListDetail from "../production-list-detail/production-list-detail.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, diff --git a/client/src/components/production-list-table/production-list-table.styles.scss b/client/src/components/production-list-table/production-list-table.styles.scss deleted file mode 100644 index f75fdce8d..000000000 --- a/client/src/components/production-list-table/production-list-table.styles.scss +++ /dev/null @@ -1,39 +0,0 @@ -.production-alert { - animation: alertBlinker 1s linear infinite; - color: blue; -} -@keyframes alertBlinker { - 50% { - color: red; - opacity: 100; - //opacity: 0; - } -} - -.blue { - color: blue; -} - -.production-completion-1 { - animation: production-completion-1-blinker 5s linear infinite; -} -@keyframes production-completion-1-blinker { - 50% { - background: rgba(207, 12, 12, 0.555); - } -} - -.react-resizable { - position: relative; - background-clip: padding-box; -} - -.react-resizable-handle { - position: absolute; - width: 10px; - height: 100%; - bottom: 0; - right: -5px; - cursor: col-resize; - z-index: 1; -} diff --git a/client/src/graphql/conversations.queries.js b/client/src/graphql/conversations.queries.js index 571fd8c3c..0b4f41ef4 100644 --- a/client/src/graphql/conversations.queries.js +++ b/client/src/graphql/conversations.queries.js @@ -12,6 +12,10 @@ export const CONVERSATION_LIST_SUBSCRIPTION = gql` ownr_fn ownr_ln ownr_co_nm + owner { + id + allow_text_message + } } } messages_aggregate( diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index cf3a9b112..cb4161015 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -1212,6 +1212,7 @@ }, "labels": { "messaging": "Messaging", + "noallowtxt": "This customer has not indicated their permission to be messaged.", "nojobs": "Not associated to any job.", "phonenumber": "Phone #", "presets": "Presets", diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 33a07d688..636b031d6 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -1212,6 +1212,7 @@ }, "labels": { "messaging": "Mensajería", + "noallowtxt": "", "nojobs": "", "phonenumber": "", "presets": "", diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index 332fe599e..27fb6551d 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -1212,6 +1212,7 @@ }, "labels": { "messaging": "Messagerie", + "noallowtxt": "", "nojobs": "", "phonenumber": "", "presets": "",