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')