Added allow to text warning flag on messages list IO-235
This commit is contained in:
@@ -20032,6 +20032,27 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>noallowtxt</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
<concept_node>
|
<concept_node>
|
||||||
<name>nojobs</name>
|
<name>nojobs</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
|
|||||||
@@ -79,3 +79,43 @@
|
|||||||
.ant-select {
|
.ant-select {
|
||||||
width: 100%;
|
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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -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 React from "react";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
@@ -6,6 +7,7 @@ import { setSelectedConversation } from "../../redux/messaging/messaging.actions
|
|||||||
import { selectSelectedConversation } from "../../redux/messaging/messaging.selectors";
|
import { selectSelectedConversation } from "../../redux/messaging/messaging.selectors";
|
||||||
import PhoneFormatter from "../../utils/PhoneFormatter";
|
import PhoneFormatter from "../../utils/PhoneFormatter";
|
||||||
import "./chat-conversation-list.styles.scss";
|
import "./chat-conversation-list.styles.scss";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
selectedConversation: selectSelectedConversation,
|
selectedConversation: selectSelectedConversation,
|
||||||
@@ -21,6 +23,8 @@ export function ChatConversationListComponent({
|
|||||||
selectedConversation,
|
selectedConversation,
|
||||||
setSelectedConversation,
|
setSelectedConversation,
|
||||||
}) {
|
}) {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="chat-list-container">
|
<div className="chat-list-container">
|
||||||
<List
|
<List
|
||||||
@@ -39,11 +43,19 @@ export function ChatConversationListComponent({
|
|||||||
{item.job_conversations.length > 0 ? (
|
{item.job_conversations.length > 0 ? (
|
||||||
<div className="chat-name">
|
<div className="chat-name">
|
||||||
{item.job_conversations.map((j, idx) => (
|
{item.job_conversations.map((j, idx) => (
|
||||||
<span key={idx}>
|
<div key={idx} style={{ display: "flex" }}>
|
||||||
{`${j.job.ownr_fn || ""} ${j.job.ownr_ln || ""} ${
|
{j.job.owner && !j.job.owner.allow_text_message && (
|
||||||
|
<Tooltip title={t("messaging.labels.noallowtxt")}>
|
||||||
|
<AlertFilled
|
||||||
|
className="production-alert"
|
||||||
|
style={{ marginRight: ".3rem", alignItems: "center" }}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
)}
|
||||||
|
<div>{`${j.job.ownr_fn || ""} ${j.job.ownr_ln || ""} ${
|
||||||
j.job.ownr_co_nm || ""
|
j.job.ownr_co_nm || ""
|
||||||
} `}
|
} `}</div>
|
||||||
</span>
|
</div>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
|
|||||||
@@ -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 { 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 { logImEXEvent } from "../../firebase/firebase.utils";
|
||||||
|
import { REMOVE_CONVERSATION_TAG } from "../../graphql/job-conversations.queries";
|
||||||
|
|
||||||
export default function ChatConversationTitleTags({ jobConversations }) {
|
export default function ChatConversationTitleTags({ jobConversations }) {
|
||||||
const [removeJobConversation] = useMutation(REMOVE_CONVERSATION_TAG);
|
const [removeJobConversation] = useMutation(REMOVE_CONVERSATION_TAG);
|
||||||
|
|
||||||
|
|||||||
@@ -7,10 +7,9 @@ import { connect } from "react-redux";
|
|||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import ProductionListColumnsAdd from "../production-list-columns/production-list-columns.add.component";
|
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 ProductionListSaveConfigButton from "../production-list-save-config-button/production-list-save-config-button.component";
|
||||||
import ResizeableTitle from "./production-list-table.resizeable.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({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
|
||||||
@@ -12,6 +12,10 @@ export const CONVERSATION_LIST_SUBSCRIPTION = gql`
|
|||||||
ownr_fn
|
ownr_fn
|
||||||
ownr_ln
|
ownr_ln
|
||||||
ownr_co_nm
|
ownr_co_nm
|
||||||
|
owner {
|
||||||
|
id
|
||||||
|
allow_text_message
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
messages_aggregate(
|
messages_aggregate(
|
||||||
|
|||||||
@@ -1212,6 +1212,7 @@
|
|||||||
},
|
},
|
||||||
"labels": {
|
"labels": {
|
||||||
"messaging": "Messaging",
|
"messaging": "Messaging",
|
||||||
|
"noallowtxt": "This customer has not indicated their permission to be messaged.",
|
||||||
"nojobs": "Not associated to any job.",
|
"nojobs": "Not associated to any job.",
|
||||||
"phonenumber": "Phone #",
|
"phonenumber": "Phone #",
|
||||||
"presets": "Presets",
|
"presets": "Presets",
|
||||||
|
|||||||
@@ -1212,6 +1212,7 @@
|
|||||||
},
|
},
|
||||||
"labels": {
|
"labels": {
|
||||||
"messaging": "Mensajería",
|
"messaging": "Mensajería",
|
||||||
|
"noallowtxt": "",
|
||||||
"nojobs": "",
|
"nojobs": "",
|
||||||
"phonenumber": "",
|
"phonenumber": "",
|
||||||
"presets": "",
|
"presets": "",
|
||||||
|
|||||||
@@ -1212,6 +1212,7 @@
|
|||||||
},
|
},
|
||||||
"labels": {
|
"labels": {
|
||||||
"messaging": "Messagerie",
|
"messaging": "Messagerie",
|
||||||
|
"noallowtxt": "",
|
||||||
"nojobs": "",
|
"nojobs": "",
|
||||||
"phonenumber": "",
|
"phonenumber": "",
|
||||||
"presets": "",
|
"presets": "",
|
||||||
|
|||||||
Reference in New Issue
Block a user