diff --git a/package.json b/package.json
index ca12a9389..db8cf639b 100644
--- a/package.json
+++ b/package.json
@@ -63,10 +63,11 @@
"apollo-server": "^0.1.5",
"apollo-tracer": "^0.1.4",
"aws-sdk": "^2.6.3",
+ "axios": "^0.16.1",
"babel-cli": "^6.10.1",
"babel-core": "^6.10.4",
"babel-loader": "^6.2.4",
- "babel-polyfill": "^6.9.1",
+ "babel-polyfill": "^6.23.0",
"babel-preset-es2015": "^6.9.0",
"babel-preset-react": "^6.11.1",
"babel-preset-stage-0": "^6.5.0",
diff --git a/src/containers/AdminIncomingMessageList.jsx b/src/containers/AdminIncomingMessageList.jsx
new file mode 100644
index 000000000..668cd401a
--- /dev/null
+++ b/src/containers/AdminIncomingMessageList.jsx
@@ -0,0 +1,85 @@
+import React, { Component } from 'react'
+// import { CampaignList } from '../components/campaign_list'
+import FloatingActionButton from 'material-ui/FloatingActionButton'
+import {
+ Table,
+ TableBody,
+ TableHeader,
+ TableHeaderColumn,
+ TableRow,
+ TableRowColumn,
+} from 'material-ui/Table';
+
+// import SimpleTable from './Table.jsx'
+import ContentAdd from 'material-ui/svg-icons/content/add'
+import { moment } from 'moment'
+import Subheader from 'material-ui/Subheader'
+import SpeakerNotesIcon from 'material-ui/svg-icons/action/speaker-notes'
+import axios from 'axios'
+import Empty from '../components/Empty'
+
+const styles = {
+ floatingButton: {
+ margin: 0,
+ top: 'auto',
+ right: 20,
+ bottom: 20,
+ left: 'auto',
+ position: 'fixed'
+ }
+}
+
+export default class AdminIncomingMessageList extends Component {
+ constructor(props) {
+ super(props);
+
+ this.state = {
+ incomingmessages: [],
+ availablephonenumbers: []
+ };
+ }
+ componentDidMount() {
+ axios.get(`http://localhost:3000/allmessages`)
+ .then(response => this.setState({ incomingmessages: response.data }))
+ }
+
+ getAvailablePhoneNumbers(){
+ axios.get(`http://localhost:3000/availablephonenumbers`)
+ .then(response => response.data)
+ }
+
+ render(){
+ return (
+
+
All Incoming Messages
+
+
+
+
+ Date Sent:
+ From:
+ To:
+ Message Body
+
+
+
+ {this.state.incomingmessages.map( message => {
+ if(message.direction == 'inbound'){
+ return (
+
+ {message.date_sent}
+ {message.from}
+ {message.to}
+ {message.body}
+
+ )
+ }
+ }
+ )}
+
+
+
+
+ )
+ }
+}
diff --git a/src/containers/AdminNavigation.jsx b/src/containers/AdminNavigation.jsx
index 0968c8882..5a54d3702 100644
--- a/src/containers/AdminNavigation.jsx
+++ b/src/containers/AdminNavigation.jsx
@@ -58,6 +58,9 @@ class AdminNavigation extends React.Component {
}, {
name: 'Optouts',
path: 'optouts'
+ }, {
+ name: 'Incoming Messages',
+ path: 'incoming'
}]
const { roles } = this.props.data.currentUser
diff --git a/src/routes.jsx b/src/routes.jsx
index 6fe9d2ce8..e2a3304e5 100644
--- a/src/routes.jsx
+++ b/src/routes.jsx
@@ -5,6 +5,7 @@ import AdminCampaignList from './containers/AdminCampaignList'
import AdminCampaignStats from './containers/AdminCampaignStats'
import AdminPersonList from './containers/AdminPersonList'
import AdminOptOutList from './containers/AdminOptOutList'
+import AdminIncomingMessageList from './containers/AdminIncomingMessageList'
import AdminCampaignEdit from './containers/AdminCampaignEdit'
import TexterDashboard from './components/TexterDashboard'
import TopNav from './components/TopNav'
@@ -41,6 +42,7 @@ export default function makeRoutes(requireAuth = () => {}) {
+
diff --git a/src/server/index.js b/src/server/index.js
index fd027128a..4bef2a803 100644
--- a/src/server/index.js
+++ b/src/server/index.js
@@ -23,6 +23,10 @@ process.on('uncaughtException', (ex) => {
process.exit(1)
})
const DEBUG = process.env.NODE_ENV === 'development'
+var accountSid = process.env.TWILIO_API_KEY;
+var authToken = process.env.TWILIO_AUTH_TOKEN;
+const client = require('twilio')(accountSid, authToken);
+
setupAuth0Passport()
seedZipCodes()
setupUserNotificationObservers()
@@ -98,6 +102,30 @@ app.post('/twilio-message-report', wrap(async (req, res) => {
}))
+// app.get('/incomingmessages', (req, res) => {
+// client.sms.messages.list(function(err, data) {
+// const listOfMessages = data.sms_messages
+// listOfMessages.forEach(function(message){
+// if(message.direction == "inbound"){
+// return console.log(message.body)
+// }
+// })
+// })
+// })
+
+app.get('/allmessages', (req, res) => {
+ client.sms.messages.list((err, data) => {
+ const listOfMessages = data.sms_messages
+ return res.json(listOfMessages)
+ })
+})
+
+app.get('/availablephonenumbers', (req, res) => {
+ client.incomingPhoneNumbers.list((err, data) => {
+ return res.json(data.incomingPhoneNumbers)
+ })
+})
+
app.get('/logout-callback', (req, res) => {
req.logOut()
res.redirect('/login')