diff --git a/client/package.json b/client/package.json index eb77df85c..2a557a369 100644 --- a/client/package.json +++ b/client/package.json @@ -23,6 +23,7 @@ "i18next-browser-languagedetector": "^4.1.1", "logrocket": "^1.0.7", "node-sass": "^4.13.1", + "phone": "^2.4.10", "query-string": "^6.12.1", "react": "^16.13.1", "react-apollo": "^3.1.5", diff --git a/client/src/App/App.container.jsx b/client/src/App/App.container.jsx index dfdd81078..b6b837271 100644 --- a/client/src/App/App.container.jsx +++ b/client/src/App/App.container.jsx @@ -18,100 +18,101 @@ import App from "./App"; if (process.env.NODE_ENV === "production") LogRocket.init("gvfvfw/bodyshopapp"); +const httpLink = new HttpLink({ + uri: process.env.REACT_APP_GRAPHQL_ENDPOINT, +}); + +const wsLink = new WebSocketLink({ + uri: process.env.REACT_APP_GRAPHQL_ENDPOINT_WS, + options: { + lazy: true, + reconnect: true, + connectionParams: async () => { + //const token = localStorage.getItem("token"); + const token = await auth.currentUser.getIdToken(true); + if (token) { + return { + headers: { + authorization: token ? `Bearer ${token}` : "", + }, + }; + } + }, + }, +}); +const subscriptionMiddleware = { + applyMiddleware: async (options, next) => { + options.authToken = await auth.currentUser.getIdToken(true); + next(); + }, +}; +wsLink.subscriptionClient.use([subscriptionMiddleware]); + +const link = split( + // split based on operation type + ({ query }) => { + const definition = getMainDefinition(query); + // console.log( + // "##Intercepted GQL Transaction : " + + // definition.operation + + // "|" + + // definition.name.value + + // "##", + // query + // ); + return ( + definition.kind === "OperationDefinition" && + definition.operation === "subscription" + ); + }, + wsLink, + httpLink +); + +const authLink = setContext((_, { headers }) => { + return auth.currentUser.getIdToken().then((token) => { + if (token) { + return { + headers: { + ...headers, + authorization: token ? `Bearer ${token}` : "", + }, + }; + } else { + return { headers }; + } + }); +}); + +const retryLink = new RetryLink({ + delay: { + initial: 300, + max: 5, + jitter: true, + }, + attempts: { + max: 5, + retryIf: (error, _operation) => !!error, + }, +}); + +const middlewares = []; +if (process.env.NODE_ENV === "development") { + middlewares.push(apolloLogger); +} + +middlewares.push(retryLink.concat(errorLink.concat(authLink.concat(link)))); + +const cache = new InMemoryCache(); +export const client = new ApolloClient({ + link: ApolloLink.from(middlewares), + cache, + connectToDevTools: true, +}); + export default class AppContainer extends Component { constructor() { super(); - const httpLink = new HttpLink({ - uri: process.env.REACT_APP_GRAPHQL_ENDPOINT, - }); - - const wsLink = new WebSocketLink({ - uri: process.env.REACT_APP_GRAPHQL_ENDPOINT_WS, - options: { - lazy: true, - reconnect: true, - connectionParams: async () => { - //const token = localStorage.getItem("token"); - const token = await auth.currentUser.getIdToken(true); - if (token) { - return { - headers: { - authorization: token ? `Bearer ${token}` : "", - }, - }; - } - }, - }, - }); - const subscriptionMiddleware = { - applyMiddleware: async (options, next) => { - options.authToken = await auth.currentUser.getIdToken(true); - next(); - }, - }; - wsLink.subscriptionClient.use([subscriptionMiddleware]); - - const link = split( - // split based on operation type - ({ query }) => { - const definition = getMainDefinition(query); - // console.log( - // "##Intercepted GQL Transaction : " + - // definition.operation + - // "|" + - // definition.name.value + - // "##", - // query - // ); - return ( - definition.kind === "OperationDefinition" && - definition.operation === "subscription" - ); - }, - wsLink, - httpLink - ); - - const authLink = setContext((_, { headers }) => { - return auth.currentUser.getIdToken().then((token) => { - if (token) { - return { - headers: { - ...headers, - authorization: token ? `Bearer ${token}` : "", - }, - }; - } else { - return { headers }; - } - }); - }); - - const retryLink = new RetryLink({ - delay: { - initial: 300, - max: 5, - jitter: true, - }, - attempts: { - max: 5, - retryIf: (error, _operation) => !!error, - }, - }); - - const middlewares = []; - if (process.env.NODE_ENV === "development") { - middlewares.push(apolloLogger); - } - - middlewares.push(retryLink.concat(errorLink.concat(authLink.concat(link)))); - - const cache = new InMemoryCache(); - const client = new ApolloClient({ - link: ApolloLink.from(middlewares), - cache, - connectToDevTools: true, - }); this.state = { client }; } diff --git a/client/src/components/chat-open-button/chat-open-button.component.jsx b/client/src/components/chat-open-button/chat-open-button.component.jsx index 54ef22dcb..211d70852 100644 --- a/client/src/components/chat-open-button/chat-open-button.component.jsx +++ b/client/src/components/chat-open-button/chat-open-button.component.jsx @@ -5,11 +5,11 @@ import { openChatByPhone } from "../../redux/messaging/messaging.actions"; const mapDispatchToProps = (dispatch) => ({ openChatByPhone: (phone) => dispatch(openChatByPhone(phone)), }); -export function ChatOpenButton({ phone, openChatByPhone }) { +export function ChatOpenButton({ phone, jobid, openChatByPhone }) { return ( openChatByPhone(phone)} + onClick={() => openChatByPhone({ phone_num: phone, jobid: jobid })} /> ); } diff --git a/client/src/components/jobs-available-supplement/jobs-available-supplement.container.jsx b/client/src/components/jobs-available-supplement/jobs-available-supplement.container.jsx index 67b3282a8..b594dbdc5 100644 --- a/client/src/components/jobs-available-supplement/jobs-available-supplement.container.jsx +++ b/client/src/components/jobs-available-supplement/jobs-available-supplement.container.jsx @@ -1,6 +1,6 @@ import { useApolloClient, useMutation, useQuery } from "@apollo/react-hooks"; import { notification } from "antd"; -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; @@ -137,11 +137,12 @@ export function JobsAvailableSupplementContainer({ setSelectedJob(null); }; - if (error) return ; + if (error) return ; return ( + message={t("jobs.labels.creating_new_job")} + > { console.log("-----Begin Supplement-----"); console.log("Supplement delta for jobId", jobId); diff --git a/client/src/components/jobs-list/jobs-list.component.jsx b/client/src/components/jobs-list/jobs-list.component.jsx index 4c4d628f9..4960d26d0 100644 --- a/client/src/components/jobs-list/jobs-list.component.jsx +++ b/client/src/components/jobs-list/jobs-list.component.jsx @@ -76,7 +76,7 @@ export default withRouter(function JobsList({ return record.ownr_ph1 ? ( {record.ownr_ph1} - + ) : null; }, diff --git a/client/src/emails/components/fragments.queries.js b/client/src/emails/components/fragments.queries.js index cead14be4..bd2ed3bfc 100644 --- a/client/src/emails/components/fragments.queries.js +++ b/client/src/emails/components/fragments.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const shopAttributes = gql` fragment shopData on query_root { diff --git a/client/src/emails/templates/appointment-confirmation/appointment-confirmation.query.js b/client/src/emails/templates/appointment-confirmation/appointment-confirmation.query.js index 7137e3672..c1f9b569a 100644 --- a/client/src/emails/templates/appointment-confirmation/appointment-confirmation.query.js +++ b/client/src/emails/templates/appointment-confirmation/appointment-confirmation.query.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; import { shopAttributes } from "../../components/fragments.queries"; export const EMAIL_APPOINTMENT_CONFIRMATION = gql` diff --git a/client/src/emails/templates/parts-order/parts-order.query.js b/client/src/emails/templates/parts-order/parts-order.query.js index 97ec5eaff..43aa898fa 100644 --- a/client/src/emails/templates/parts-order/parts-order.query.js +++ b/client/src/emails/templates/parts-order/parts-order.query.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; import { shopAttributes } from "../../components/fragments.queries"; export const REPORT_QUERY_PARTS_ORDER_BY_PK = gql` diff --git a/client/src/graphql/allocations.queries.js b/client/src/graphql/allocations.queries.js index 5c4d8e169..4f4c790b6 100644 --- a/client/src/graphql/allocations.queries.js +++ b/client/src/graphql/allocations.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const INSERT_ALLOCATION = gql` mutation INSERT_ALLOCATION($alloc: [allocations_insert_input!]!) { diff --git a/client/src/graphql/appointments.queries.js b/client/src/graphql/appointments.queries.js index 8a3fe571a..79aca8222 100644 --- a/client/src/graphql/appointments.queries.js +++ b/client/src/graphql/appointments.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const QUERY_ALL_ACTIVE_APPOINTMENTS = gql` query QUERY_ALL_ACTIVE_APPOINTMENTS { diff --git a/client/src/graphql/associations.queries.js b/client/src/graphql/associations.queries.js index b043e3c8a..bcec3887d 100644 --- a/client/src/graphql/associations.queries.js +++ b/client/src/graphql/associations.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const QUERY_ALL_ASSOCIATIONS = gql` query QUERY_ALL_ASSOCIATIONS { diff --git a/client/src/graphql/audit_trail.queries.js b/client/src/graphql/audit_trail.queries.js index 5ac744174..44db02c22 100644 --- a/client/src/graphql/audit_trail.queries.js +++ b/client/src/graphql/audit_trail.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const QUERY_AUDIT_TRAIL = gql` query QUERY_AUDIT_TRAIL($id: uuid!) { diff --git a/client/src/graphql/available-jobs.queries.js b/client/src/graphql/available-jobs.queries.js index a35c45bce..bbaaf7afc 100644 --- a/client/src/graphql/available-jobs.queries.js +++ b/client/src/graphql/available-jobs.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const QUERY_AVAILABLE_NEW_JOBS = gql` query QUERY_AVAILABLE_NEW_JOBS { diff --git a/client/src/graphql/bodyshop.queries.js b/client/src/graphql/bodyshop.queries.js index 969c34ac7..8702f5dfe 100644 --- a/client/src/graphql/bodyshop.queries.js +++ b/client/src/graphql/bodyshop.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const QUERY_BODYSHOP = gql` query QUERY_BODYSHOP { diff --git a/client/src/graphql/cccontracts.queries.js b/client/src/graphql/cccontracts.queries.js index b180359f3..a8c23eb95 100644 --- a/client/src/graphql/cccontracts.queries.js +++ b/client/src/graphql/cccontracts.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const INSERT_NEW_CONTRACT = gql` mutation INSERT_NEW_CONTRACT($contract: [cccontracts_insert_input!]!) { diff --git a/client/src/graphql/conversations.queries.js b/client/src/graphql/conversations.queries.js index 17d4b9f11..e01671a4e 100644 --- a/client/src/graphql/conversations.queries.js +++ b/client/src/graphql/conversations.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const CONVERSATION_LIST_SUBSCRIPTION = gql` subscription CONVERSATION_LIST_SUBSCRIPTION { @@ -45,3 +45,21 @@ export const CONVERSATION_SUBSCRIPTION_BY_PK = gql` } } `; + +export const CONVERSATION_ID_BY_PHONE = gql` + query CONVERSATION_ID_BY_PHONE($phone: String!) { + conversations(where: { phone_num: { _eq: $phone } }) { + id + } + } +`; + +export const CREATE_CONVERSATION = gql` + mutation CREATE_CONVERSATION($conversation: [conversations_insert_input!]!) { + insert_conversations(objects: $conversation) { + returning { + id + } + } + } +`; diff --git a/client/src/graphql/courtesy-car.queries.js b/client/src/graphql/courtesy-car.queries.js index 2c6bb755d..917e3a04a 100644 --- a/client/src/graphql/courtesy-car.queries.js +++ b/client/src/graphql/courtesy-car.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const INSERT_NEW_COURTESY_CAR = gql` mutation INSERT_NEW_COURTESY_CAR( diff --git a/client/src/graphql/documents.queries.js b/client/src/graphql/documents.queries.js index 3e416f26c..63aff7dc8 100644 --- a/client/src/graphql/documents.queries.js +++ b/client/src/graphql/documents.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const GET_DOCUMENTS_BY_JOB = gql` query GET_DOCUMENTS_BY_JOB($jobId: uuid!) { diff --git a/client/src/graphql/employees.queries.jsx b/client/src/graphql/employees.queries.jsx index 1fb7ed1d9..08584bbdb 100644 --- a/client/src/graphql/employees.queries.jsx +++ b/client/src/graphql/employees.queries.jsx @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const QUERY_EMPLOYEES = gql` query QUERY_EMPLOYEES { diff --git a/client/src/graphql/invoices.queries.js b/client/src/graphql/invoices.queries.js index efb7d7bf6..781ab290b 100644 --- a/client/src/graphql/invoices.queries.js +++ b/client/src/graphql/invoices.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const INSERT_NEW_INVOICE = gql` mutation INSERT_NEW_INVOICE($invoice: [invoices_insert_input!]!) { diff --git a/client/src/graphql/job-conversations.queries.js b/client/src/graphql/job-conversations.queries.js index 41024075c..16c88dcd3 100644 --- a/client/src/graphql/job-conversations.queries.js +++ b/client/src/graphql/job-conversations.queries.js @@ -1,9 +1,10 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const INSERT_CONVERSATION_TAG = gql` mutation INSERT_CONVERSATION_TAG($conversationId: uuid!, $jobId: uuid!) { insert_job_conversations( objects: { conversationid: $conversationId, jobid: $jobId } + on_conflict: { constraint: job_conversations_pkey, update_columns: jobid } ) { returning { jobid diff --git a/client/src/graphql/jobs-lines.queries.js b/client/src/graphql/jobs-lines.queries.js index daf8f5dad..d72dca82e 100644 --- a/client/src/graphql/jobs-lines.queries.js +++ b/client/src/graphql/jobs-lines.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const GET_JOB_LINES_BY_PK = gql` query GET_JOB_LINES_BY_PK($id: uuid!) { diff --git a/client/src/graphql/jobs.queries.js b/client/src/graphql/jobs.queries.js index d204ca8fb..a93b40cfe 100644 --- a/client/src/graphql/jobs.queries.js +++ b/client/src/graphql/jobs.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const QUERY_ALL_ACTIVE_JOBS = gql` query QUERY_ALL_ACTIVE_JOBS($statuses: [String!]!) { diff --git a/client/src/graphql/messages.queries.js b/client/src/graphql/messages.queries.js index 09de83a9a..69eb89ed6 100644 --- a/client/src/graphql/messages.queries.js +++ b/client/src/graphql/messages.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const MARK_MESSAGES_AS_READ_BY_CONVERSATION = gql` mutation MARK_MESSAGES_AS_READ_BY_CONVERSATION($conversationId: uuid) { diff --git a/client/src/graphql/metadata.queries.js b/client/src/graphql/metadata.queries.js index 940210b5b..ccedd012f 100644 --- a/client/src/graphql/metadata.queries.js +++ b/client/src/graphql/metadata.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const GET_LANDING_NAV_ITEMS = gql` query nav_items { diff --git a/client/src/graphql/notes.queries.js b/client/src/graphql/notes.queries.js index 8c3935fad..a9d6c11c0 100644 --- a/client/src/graphql/notes.queries.js +++ b/client/src/graphql/notes.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const INSERT_NEW_NOTE = gql` mutation INSERT_NEW_NOTE($noteInput: [notes_insert_input!]!) { diff --git a/client/src/graphql/owners.queries.js b/client/src/graphql/owners.queries.js index 8534fa90d..b017d80c4 100644 --- a/client/src/graphql/owners.queries.js +++ b/client/src/graphql/owners.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const QUERY_SEARCH_OWNER_BY_IDX = gql` query QUERY_SEARCH_OWNER_BY_IDX($search: String!) { diff --git a/client/src/graphql/parts-orders.queries.js b/client/src/graphql/parts-orders.queries.js index b2124383c..55f68cc11 100644 --- a/client/src/graphql/parts-orders.queries.js +++ b/client/src/graphql/parts-orders.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const INSERT_NEW_PARTS_ORDERS = gql` mutation INSERT_NEW_PARTS_ORDERS($po: [parts_orders_insert_input!]!) { diff --git a/client/src/graphql/templates.queries.js b/client/src/graphql/templates.queries.js index c0f0be364..58916522c 100644 --- a/client/src/graphql/templates.queries.js +++ b/client/src/graphql/templates.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const QUERY_TEMPLATES_BY_NAME = gql` query QUERY_TEMPLATES_BY_NAME($name: String!) { diff --git a/client/src/graphql/timetickets.queries.js b/client/src/graphql/timetickets.queries.js index eb43189a6..f4aee3273 100644 --- a/client/src/graphql/timetickets.queries.js +++ b/client/src/graphql/timetickets.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const QUERY_TICKETS_BY_JOBID = gql` query QUERY_TICKETS_BY_JOBID($jobid: uuid!) { diff --git a/client/src/graphql/user.queries.js b/client/src/graphql/user.queries.js index 47ccbb661..8452e7550 100644 --- a/client/src/graphql/user.queries.js +++ b/client/src/graphql/user.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const UPSERT_USER = gql` mutation UPSERT_USER($authEmail: String!, $authToken: String!) { diff --git a/client/src/graphql/vehicles.queries.js b/client/src/graphql/vehicles.queries.js index 571462b01..024e65a60 100644 --- a/client/src/graphql/vehicles.queries.js +++ b/client/src/graphql/vehicles.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const QUERY_VEHICLE_BY_ID = gql` query QUERY_VEHICLE_BY_ID($id: uuid!) { diff --git a/client/src/graphql/vendors.queries.js b/client/src/graphql/vendors.queries.js index 94773f2cc..7328c79f1 100644 --- a/client/src/graphql/vendors.queries.js +++ b/client/src/graphql/vendors.queries.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; export const QUERY_VENDOR_BY_ID = gql` query QUERY_VENDOR_BY_ID($id: uuid!) { diff --git a/client/src/redux/messaging/messaging.reducer.js b/client/src/redux/messaging/messaging.reducer.js index 7d1cfea90..471a4d4fc 100644 --- a/client/src/redux/messaging/messaging.reducer.js +++ b/client/src/redux/messaging/messaging.reducer.js @@ -15,7 +15,11 @@ const messagingReducer = (state = INITIAL_STATE, action) => { visible: !state.visible, }; case MessagingActionTypes.SET_SELECTED_CONVERSATION: - return { ...state, selectedConversationId: action.payload }; + return { + ...state, + visible: true, + selectedConversationId: action.payload, + }; case MessagingActionTypes.SEND_MESSAGE: return { ...state, diff --git a/client/src/redux/messaging/messaging.sagas.js b/client/src/redux/messaging/messaging.sagas.js index a181518d0..018815fc6 100644 --- a/client/src/redux/messaging/messaging.sagas.js +++ b/client/src/redux/messaging/messaging.sagas.js @@ -1,16 +1,69 @@ -import { all, call, put, takeLatest } from "redux-saga/effects"; -import { sendMessageFailure, sendMessageSuccess } from "./messaging.actions"; -import MessagingActionTypes from "./messaging.types"; import axios from "axios"; -import { sendEmailFailure } from "../email/email.actions"; -import { withApollo } from "react-apollo"; +import phone from "phone"; +import { all, call, put, select, takeLatest } from "redux-saga/effects"; +import { client } from "../../App/App.container"; +import { + CONVERSATION_ID_BY_PHONE, + CREATE_CONVERSATION, +} from "../../graphql/conversations.queries"; +import { INSERT_CONVERSATION_TAG } from "../../graphql/job-conversations.queries"; +import { + sendMessageFailure, + sendMessageSuccess, + setSelectedConversation, +} from "./messaging.actions"; +import MessagingActionTypes from "./messaging.types"; +import { selectBodyshop } from "../user/user.selectors"; export function* onOpenChatByPhone() { yield takeLatest(MessagingActionTypes.OPEN_CHAT_BY_PHONE, openChatByPhone); } -export function* openChatByPhone({ payload: phone, client }) { - console.log("Payload: Phone, Client", phone, client); +export function* openChatByPhone({ payload }) { + const { phone_num, jobid } = payload; + const bodyshop = yield select(selectBodyshop); + try { + const { + data: { conversations }, + } = yield client.query({ + query: CONVERSATION_ID_BY_PHONE, + variables: { phone: phone(phone_num)[0] }, + }); + if (conversations.length === 0) { + const { + data: { + insert_conversations: { returning: newConversationsId }, + }, + } = yield client.mutate({ + mutation: CREATE_CONVERSATION, + variables: { + conversation: [ + { + phone_num: phone(phone_num)[0], + bodyshopid: bodyshop.id, + job_conversations: jobid ? { data: { jobid: jobid } } : null, + }, + ], + }, + }); + yield put(setSelectedConversation(newConversationsId[0].id)); + } else if (conversations.length === 1) { + //got the ID. Open it. + yield put(setSelectedConversation(conversations[0].id)); + yield client.mutate({ + mutation: INSERT_CONVERSATION_TAG, + variables: { + conversationId: conversations[0].id, + jobId: jobid, + }, + }); + } else { + console.log("ERROR: Multiple conversations found. "); //TODO Graceful handling of this situation + } + } catch (error) { + console.log("Error in sendMessage saga.", error); + } } + export function* onSendMessage() { yield takeLatest(MessagingActionTypes.SEND_MESSAGE, sendMessage); } @@ -20,7 +73,7 @@ export function* sendMessage({ payload }) { if (response.status === 200) { yield put(sendMessageSuccess(payload)); } else { - yield put(sendEmailFailure(response.data)); + yield put(sendMessageFailure(response.data)); } } catch (error) { console.log("Error in sendMessage saga.", error); diff --git a/client/src/utils/RenderTemplate.js b/client/src/utils/RenderTemplate.js index ca40944dc..911785bb6 100644 --- a/client/src/utils/RenderTemplate.js +++ b/client/src/utils/RenderTemplate.js @@ -1,4 +1,4 @@ -import { gql } from "apollo-boost"; +import gql from "graphql-tag"; import { QUERY_TEMPLATES_BY_NAME } from "../graphql/templates.queries"; import axios from "axios"; diff --git a/client/yarn.lock b/client/yarn.lock index 937457fb4..d438634d5 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -9468,6 +9468,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +phone@^2.4.10: + version "2.4.10" + resolved "https://registry.yarnpkg.com/phone/-/phone-2.4.10.tgz#6e5335e070e90bc5004350eae96118470df323af" + integrity sha512-lVTu1rGahm6RYgRZyDXv3jBOvKCY5SHhLHsod2j1OtMms6ELooFoOE5K8fQMUREXlFfRWrpFDryGQ2AsB9y5cA== + picomatch@^2.0.4, picomatch@^2.0.7: version "2.2.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" @@ -11885,6 +11890,8 @@ rxjs@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== + dependencies: + tslib "^1.9.0" safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2"