Hillary and Trump sagas
This commit is contained in:
parent
a2b8e7480e
commit
aac33139ba
5 changed files with 75 additions and 11 deletions
|
@ -12,3 +12,11 @@ export function addArticle(payload) {
|
|||
export function getData() {
|
||||
return { type: "DATA_REQUESTED" }
|
||||
}
|
||||
|
||||
export function getTrumpData() {
|
||||
return { type: "DATA_TRUMP_REQUESTED" }
|
||||
}
|
||||
|
||||
export function getHillaryData() {
|
||||
return { type: "DATA_HILLARY_REQUESTED" }
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ const App = () => (
|
|||
</div>
|
||||
|
||||
<div className="col-md-4 offset-md-1">
|
||||
<h2>API posts</h2>
|
||||
<h2>Latest tweets</h2>
|
||||
<Post />
|
||||
</div>
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ class ConnectedForm extends Component {
|
|||
|
||||
this.state = {
|
||||
title: '',
|
||||
candidate: 'Hillary'
|
||||
candidate: ''
|
||||
}
|
||||
|
||||
this.handleChange = this.handleChange.bind(this)
|
||||
|
@ -26,6 +26,11 @@ class ConnectedForm extends Component {
|
|||
this.clickHilary = this.clickHilary.bind(this)
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
this.props.setCandidate('Hillary Clinton')
|
||||
this.setState({ candidate: 'Hillary Clinton'})
|
||||
}
|
||||
|
||||
handleChange(event) {
|
||||
this.setState({ [event.target.id]: event.target.value })
|
||||
}
|
||||
|
|
|
@ -1,10 +1,18 @@
|
|||
import React, { Component } from "react"
|
||||
import { connect } from "react-redux"
|
||||
import { getData } from "../actions/index"
|
||||
import { getHillaryData } from "../actions/index"
|
||||
import { getTrumpData } from "../actions/index"
|
||||
|
||||
export class Post extends Component {
|
||||
componentDidMount() {
|
||||
this.props.getData()
|
||||
// this.props.getData()
|
||||
if (this.props.candidate === 'Hilary Clinton') {
|
||||
this.props.getHillaryData()
|
||||
}
|
||||
else {
|
||||
this.props.getTrumpData()
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -15,8 +23,9 @@ export class Post extends Component {
|
|||
<p>Candidate: {cand}</p>
|
||||
<ul className="list-group list-group-flush">
|
||||
{this.props.articles.map(el => (
|
||||
<li className="list-group-item" key={el.id}>
|
||||
<p>{el.title}</p>
|
||||
<li className="list-group-item" key={el.id_str}>
|
||||
<p>{el.created_at}</p>
|
||||
<p>{el.text}</p>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
|
@ -34,5 +43,5 @@ function mapStateToProps(state) {
|
|||
|
||||
export default connect(
|
||||
mapStateToProps,
|
||||
{ getData }
|
||||
{ getData, getHillaryData, getTrumpData }
|
||||
)(Post)
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
import { takeEvery, call, put } from 'redux-saga/effects'
|
||||
import { takeEvery, call, put, all } from 'redux-saga/effects'
|
||||
|
||||
export default function* watcherSaga() {
|
||||
yield all([
|
||||
worker(),
|
||||
workerHillary(),
|
||||
workerTrump()
|
||||
])
|
||||
}
|
||||
|
||||
function* worker() {
|
||||
yield takeEvery("DATA_REQUESTED", workerSaga)
|
||||
}
|
||||
|
||||
|
@ -13,12 +21,46 @@ function* workerSaga() {
|
|||
}
|
||||
}
|
||||
|
||||
function getData() {
|
||||
// return fetch("http://localhost:3030/api/twitter?hashtag=tesla").then(res1 =>
|
||||
// res1.json()
|
||||
// )
|
||||
function* workerHillary() {
|
||||
yield takeEvery("DATA_TRUMP_REQUESTED", workerTrumpSaga)
|
||||
}
|
||||
|
||||
function* workerHillarySaga() {
|
||||
try {
|
||||
const payload = yield call(getHillaryData)
|
||||
yield put({ type: "DATA_LOADED", payload })
|
||||
} catch (e) {
|
||||
yield put({ type: "API_ERRORED", payload: e })
|
||||
}
|
||||
}
|
||||
|
||||
function* workerTrump() {
|
||||
yield takeEvery("DATA_HILLARY_REQUESTED", workerHillarySaga)
|
||||
}
|
||||
|
||||
function* workerTrumpSaga() {
|
||||
try {
|
||||
const payload = yield call(getTrumpData)
|
||||
yield put({ type: "DATA_LOADED", payload })
|
||||
} catch (e) {
|
||||
yield put({ type: "API_ERRORED", payload: e })
|
||||
}
|
||||
}
|
||||
|
||||
function getData() {
|
||||
return fetch("https://jsonplaceholder.typicode.com/posts").then(response =>
|
||||
response.json()
|
||||
)
|
||||
}
|
||||
|
||||
function getHillaryData() {
|
||||
return fetch("http://localhost:3030/api/twitter?hashtag=Hillary%20Clinton").then(res1 =>
|
||||
res1.json()
|
||||
)
|
||||
}
|
||||
|
||||
function getTrumpData() {
|
||||
return fetch("http://localhost:3030/api/twitter?hashtag=Donald%20Trump").then(res1 =>
|
||||
res1.json()
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue