diff --git a/public/images/integrations/aws-ses.svg b/public/images/integrations/aws-ses.svg
new file mode 100644
index 00000000000..c7ba2447001
--- /dev/null
+++ b/public/images/integrations/aws-ses.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/modules/settings/engages/components/Settings.tsx b/src/modules/settings/engages/components/Settings.tsx
deleted file mode 100644
index 43a5e7a2e8f..00000000000
--- a/src/modules/settings/engages/components/Settings.tsx
+++ /dev/null
@@ -1,140 +0,0 @@
-import Button from 'modules/common/components/Button';
-import { FormControl } from 'modules/common/components/form';
-import Form from 'modules/common/components/form/Form';
-import FormGroup from 'modules/common/components/form/Group';
-import ControlLabel from 'modules/common/components/form/Label';
-import HeaderDescription from 'modules/common/components/HeaderDescription';
-import { IButtonMutateProps, IFormProps } from 'modules/common/types';
-import { __ } from 'modules/common/utils';
-import ActionBar from 'modules/layout/components/ActionBar';
-import Wrapper from 'modules/layout/components/Wrapper';
-import React from 'react';
-import { Link } from 'react-router-dom';
-import { ContentBox } from '../../styles';
-import { IEngageConfig } from '../types';
-
-type Props = {
- engagesConfigDetail: IEngageConfig;
- renderButton: (props: IButtonMutateProps) => JSX.Element;
-};
-
-type State = {
- secretAccessKey?: string;
- accessKeyId?: string;
- region?: string;
-};
-
-class List extends React.Component {
- constructor(props: Props) {
- super(props);
-
- const { engagesConfigDetail } = props;
-
- this.state = {
- secretAccessKey: engagesConfigDetail.secretAccessKey || '',
- accessKeyId: engagesConfigDetail.accessKeyId || '',
- region: engagesConfigDetail.region || ''
- };
- }
-
- generateDoc = values => {
- return values;
- };
-
- renderContent = (formProps: IFormProps) => {
- const { renderButton } = this.props;
- const { values, isSubmitted } = formProps;
- const breadcrumb = [
- { title: __('Settings'), link: '/settings' },
- { title: __('General') }
- ];
-
- const { engagesConfigDetail } = this.props;
-
- const actionFooter = (
-
-
-
-
-
- {renderButton({
- name: 'engagesConfigDetail',
- values: this.generateDoc(values),
- isSubmitted,
- object: this.props.engagesConfigDetail
- })}
-
- }
- />
- );
-
- const content = (
-
- }
- actionBar={
-
- }
- />
- }
- content={
-
-
- AWS-SES Access key ID
-
-
-
-
- AWS-SES Secret access key
-
-
-
-
- AWS-SES Region
-
-
-
- }
- footer={actionFooter}
- center={true}
- />
- );
-
- return content;
- };
-
- render() {
- return ;
- }
-}
-
-export default List;
diff --git a/src/modules/settings/engages/graphql/index.ts b/src/modules/settings/engages/graphql/index.ts
deleted file mode 100644
index 8cff0604ab6..00000000000
--- a/src/modules/settings/engages/graphql/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import mutations from './mutations';
-import queries from './queries';
-
-export { queries, mutations };
diff --git a/src/modules/settings/engages/graphql/mutations.ts b/src/modules/settings/engages/graphql/mutations.ts
deleted file mode 100644
index b2e87131aab..00000000000
--- a/src/modules/settings/engages/graphql/mutations.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-const engagesConfigSave = `
- mutation engagesConfigSave($secretAccessKey: String!, $accessKeyId: String!, $region: String!) {
- engagesConfigSave(secretAccessKey: $secretAccessKey, accessKeyId: $accessKeyId, region: $region) {
- accessKeyId
- secretAccessKey
- region
- }
- }
-`;
-
-export default {
- engagesConfigSave
-};
diff --git a/src/modules/settings/engages/graphql/queries.ts b/src/modules/settings/engages/graphql/queries.ts
deleted file mode 100644
index c7003dcaa29..00000000000
--- a/src/modules/settings/engages/graphql/queries.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-const engagesConfigDetail = `
- query engagesConfigDetail {
- engagesConfigDetail {
- accessKeyId
- secretAccessKey
- region
- }
- }
-`;
-
-export default {
- engagesConfigDetail
-};
diff --git a/src/modules/settings/engages/routes.tsx b/src/modules/settings/engages/routes.tsx
deleted file mode 100644
index 770b54509af..00000000000
--- a/src/modules/settings/engages/routes.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import asyncComponent from 'modules/common/components/AsyncComponent';
-import React from 'react';
-import { Route } from 'react-router-dom';
-
-const Settings = asyncComponent(() =>
- import(/* webpackChunkName: "Settings List - Engages" */ './containers/Settings')
-);
-
-const routes = () => ;
-
-export default routes;
diff --git a/src/modules/settings/engages/types.ts b/src/modules/settings/engages/types.ts
deleted file mode 100644
index a99e1ec31ff..00000000000
--- a/src/modules/settings/engages/types.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-export interface IEngageConfig {
- accessKeyId: string;
- secretAccessKey: string;
- region: string;
-}
-
-// query types
-export type EngageConfigQueryResponse = {
- engagesConfigDetail: IEngageConfig;
- loading: boolean;
- refetch: () => void;
-};
-
-// mutation types
-
-export type EngagesConfigSaveMutationResponse = {
- engagesConfigSave: (
- params: {
- variables: {
- accessKeyId: string;
- secretAccessKey: string;
- region: string;
- };
- }
- ) => Promise;
-};
diff --git a/src/modules/settings/integrations/components/engages/Settings.tsx b/src/modules/settings/integrations/components/engages/Settings.tsx
new file mode 100644
index 00000000000..4198d162981
--- /dev/null
+++ b/src/modules/settings/integrations/components/engages/Settings.tsx
@@ -0,0 +1,102 @@
+import Button from 'modules/common/components/Button';
+import { FormControl } from 'modules/common/components/form';
+import Form from 'modules/common/components/form/Form';
+import FormGroup from 'modules/common/components/form/Group';
+import ControlLabel from 'modules/common/components/form/Label';
+import { ModalFooter } from 'modules/common/styles/main';
+import { IButtonMutateProps, IFormProps } from 'modules/common/types';
+import React from 'react';
+import { IEngageConfig } from '../../types';
+
+type Props = {
+ engagesConfigDetail: IEngageConfig;
+ renderButton: (props: IButtonMutateProps) => JSX.Element;
+ closeModal: () => void;
+};
+
+type State = {
+ secretAccessKey?: string;
+ accessKeyId?: string;
+ region?: string;
+};
+
+class List extends React.Component {
+ constructor(props: Props) {
+ super(props);
+
+ const { engagesConfigDetail } = props;
+
+ this.state = {
+ secretAccessKey: engagesConfigDetail.secretAccessKey || '',
+ accessKeyId: engagesConfigDetail.accessKeyId || '',
+ region: engagesConfigDetail.region || ''
+ };
+ }
+
+ generateDoc = values => {
+ return values;
+ };
+
+ renderContent = (formProps: IFormProps) => {
+ const { engagesConfigDetail, renderButton, closeModal } = this.props;
+ const { values, isSubmitted } = formProps;
+
+ return (
+ <>
+
+ AWS-SES Access key ID
+
+
+
+
+ AWS-SES Secret access key
+
+
+
+
+ AWS-SES Region
+
+
+
+
+
+
+ {renderButton({
+ name: 'engagesConfigDetail',
+ values: this.generateDoc(values),
+ isSubmitted,
+ object: this.props.engagesConfigDetail
+ })}
+
+ >
+ );
+ };
+
+ render() {
+ return ;
+ }
+}
+
+export default List;
diff --git a/src/modules/settings/integrations/components/store/Entry.tsx b/src/modules/settings/integrations/components/store/Entry.tsx
index 5a4acefdbea..78e6e8125f6 100644
--- a/src/modules/settings/integrations/components/store/Entry.tsx
+++ b/src/modules/settings/integrations/components/store/Entry.tsx
@@ -5,6 +5,7 @@ import Facebook from 'modules/settings/integrations/containers/facebook/Form';
import Gmail from 'modules/settings/integrations/containers/google/Gmail';
import React from 'react';
import { Link } from 'react-router-dom';
+import Settings from '../../containers/engages/Settings';
import KnowledgeBase from '../../containers/knowledgebase/Form';
import Lead from '../../containers/lead/Form';
import { Box, IntegrationItem, Type } from './styles';
@@ -71,6 +72,20 @@ class Entry extends React.Component {
);
}
+ if (createModal === 'sesconfig') {
+ const trigger = + {__('Add')};
+
+ const content = props => ;
+
+ return (
+
+ );
+ }
+
if (createModal === 'knowledgeBase') {
const trigger = + {__('Add')};
diff --git a/src/modules/settings/integrations/components/store/Row.tsx b/src/modules/settings/integrations/components/store/Row.tsx
index 6639c92916f..fcb52bcb47b 100644
--- a/src/modules/settings/integrations/components/store/Row.tsx
+++ b/src/modules/settings/integrations/components/store/Row.tsx
@@ -50,7 +50,7 @@ class Row extends React.Component {
};
toggleBox = selectedKind => {
- if (!selectedKind) {
+ if (!selectedKind || selectedKind === 'amazon-ses') {
return false;
}
diff --git a/src/modules/settings/integrations/constants.ts b/src/modules/settings/integrations/constants.ts
index 1505be15f8f..686df8f3a70 100755
--- a/src/modules/settings/integrations/constants.ts
+++ b/src/modules/settings/integrations/constants.ts
@@ -136,6 +136,15 @@ export const INTEGRATIONS = [
logo: '/images/integrations/knowledge-base.png',
createModal: 'knowledgeBase',
createUrl: '/settings/integrations/knowledgeBase'
+ },
+ {
+ name: 'Engage config',
+ description:
+ 'Set up your custome amazon simple email service account here',
+ inMessenger: false,
+ kind: 'amazon-ses',
+ logo: '/images/integrations/aws-ses.svg',
+ createModal: 'sesconfig'
}
]
},
diff --git a/src/modules/settings/engages/containers/Settings.tsx b/src/modules/settings/integrations/containers/engages/Settings.tsx
similarity index 76%
rename from src/modules/settings/engages/containers/Settings.tsx
rename to src/modules/settings/integrations/containers/engages/Settings.tsx
index a64904a1740..bca9727d521 100644
--- a/src/modules/settings/engages/containers/Settings.tsx
+++ b/src/modules/settings/integrations/containers/engages/Settings.tsx
@@ -1,25 +1,32 @@
import gql from 'graphql-tag';
import ButtonMutate from 'modules/common/components/ButtonMutate';
import Spinner from 'modules/common/components/Spinner';
-import { IButtonMutateProps } from 'modules/common/types';
+import { IButtonMutateProps, IRouterProps } from 'modules/common/types';
import { withProps } from 'modules/common/utils';
import React from 'react';
import { compose, graphql } from 'react-apollo';
-import Settings from '../components/Settings';
-import { mutations, queries } from '../graphql';
+import { withRouter } from 'react-router';
+import Settings from '../../components/engages/Settings';
+import { mutations, queries } from '../../graphql';
import {
EngageConfigQueryResponse,
EngagesConfigSaveMutationResponse,
IEngageConfig
-} from '../types';
+} from '../../types';
+
+type Props = {
+ closeModal: () => void;
+};
type FinalProps = {
engagesConfigDetailQuery: EngageConfigQueryResponse;
-} & EngagesConfigSaveMutationResponse;
+} & IRouterProps &
+ Props &
+ EngagesConfigSaveMutationResponse;
class SettingsContainer extends React.Component {
render() {
- const { engagesConfigDetailQuery } = this.props;
+ const { engagesConfigDetailQuery, closeModal } = this.props;
if (engagesConfigDetailQuery.loading) {
return ;
@@ -45,6 +52,7 @@ class SettingsContainer extends React.Component {
const updatedProps = {
renderButton,
+ closeModal,
engagesConfigDetail: engagesConfigDetailQuery.engagesConfigDetail || {}
};
@@ -66,5 +74,5 @@ export default withProps<{}>(
name: 'engagesConfigSave'
}
)
- )(SettingsContainer)
+ )(withRouter(SettingsContainer))
);
diff --git a/src/modules/settings/integrations/graphql/mutations.ts b/src/modules/settings/integrations/graphql/mutations.ts
index ae2870302b3..2b0989a6863 100644
--- a/src/modules/settings/integrations/graphql/mutations.ts
+++ b/src/modules/settings/integrations/graphql/mutations.ts
@@ -105,6 +105,16 @@ const integrationsRemove = `
}
`;
+const engagesConfigSave = `
+ mutation engagesConfigSave($secretAccessKey: String!, $accessKeyId: String!, $region: String!) {
+ engagesConfigSave(secretAccessKey: $secretAccessKey, accessKeyId: $accessKeyId, region: $region) {
+ accessKeyId
+ secretAccessKey
+ region
+ }
+ }
+`;
+
const messengerAppsAddLead = `
mutation messengerAppsAddLead(
$name: String!
@@ -156,6 +166,7 @@ export default {
integrationsSaveMessengerConfigs,
integrationsSaveMessengerAppearance,
integrationsRemove,
+ engagesConfigSave,
messengerAppsAddLead,
messengerAppsAddKnowledgebase,
messengerAppsRemove,
diff --git a/src/modules/settings/integrations/graphql/queries.ts b/src/modules/settings/integrations/graphql/queries.ts
index 7dba1fb28aa..7fce0b10540 100644
--- a/src/modules/settings/integrations/graphql/queries.ts
+++ b/src/modules/settings/integrations/graphql/queries.ts
@@ -112,6 +112,16 @@ const messengerAppsCount = `
}
`;
+const engagesConfigDetail = `
+ query engagesConfigDetail {
+ engagesConfigDetail {
+ accessKeyId
+ secretAccessKey
+ region
+ }
+ }
+`;
+
const fetchApi = `
query integrationsFetchApi($path: String!, $params: JSON!) {
integrationsFetchApi(path: $path, params: $params)
@@ -125,6 +135,7 @@ export default {
integrationDetail,
integrationTotalCount,
integrations,
+ engagesConfigDetail,
messengerApps,
messengerAppsCount
};
diff --git a/src/modules/settings/integrations/types.ts b/src/modules/settings/integrations/types.ts
index dd690d61123..171b36144b8 100644
--- a/src/modules/settings/integrations/types.ts
+++ b/src/modules/settings/integrations/types.ts
@@ -153,6 +153,30 @@ export type IntegrationsCountQueryResponse = {
loading: boolean;
};
+export interface IEngageConfig {
+ accessKeyId: string;
+ secretAccessKey: string;
+ region: string;
+}
+
+export type EngageConfigQueryResponse = {
+ engagesConfigDetail: IEngageConfig;
+ loading: boolean;
+ refetch: () => void;
+};
+
+export type EngagesConfigSaveMutationResponse = {
+ engagesConfigSave: (
+ params: {
+ variables: {
+ accessKeyId: string;
+ secretAccessKey: string;
+ region: string;
+ };
+ }
+ ) => Promise;
+};
+
export interface IGmailAttachment {
filename?: string;
mimeType?: string;
diff --git a/src/modules/settings/main/components/Settings.tsx b/src/modules/settings/main/components/Settings.tsx
index 3ac1249bc1d..2fc41689f34 100644
--- a/src/modules/settings/main/components/Settings.tsx
+++ b/src/modules/settings/main/components/Settings.tsx
@@ -76,11 +76,6 @@ class Settings extends React.PureComponent {
'/images/icons/erxes-14.svg',
'/settings/logs'
)}
- {this.renderBox(
- 'Engage Config',
- '/images/icons/erxes-08.svg',
- '/settings/engages'
- )}
diff --git a/src/modules/settings/routes.tsx b/src/modules/settings/routes.tsx
index 574c7891767..388cfc1d967 100644
--- a/src/modules/settings/routes.tsx
+++ b/src/modules/settings/routes.tsx
@@ -5,7 +5,6 @@ import BrandsRoutes from './brands/routes';
import ChannelsRoutes from './channels/routes';
import EmailRoutes from './email/routes';
import EmailTemplatesRoutes from './emailTemplates/routes';
-import EngageRoutes from './engages/routes';
import General from './general/routes';
import ImportHistory from './importHistory/routes';
import IntegrationsRoutes from './integrations/routes';
@@ -28,7 +27,6 @@ const routes = () => (
-