diff --git a/src/screens/historyScreen/historyScreen.js b/src/screens/historyScreen/historyScreen.js index 6b4b625..659e508 100755 --- a/src/screens/historyScreen/historyScreen.js +++ b/src/screens/historyScreen/historyScreen.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import {FlatList, StyleSheet, Text, TouchableOpacity, View} from 'react-native'; import { connect } from 'react-redux'; -import { GET_HISTORY_FACT } from "../../state/ActionTypes"; +import { GET_HISTORY_FACT, SAVE_TO_FAVORITES } from "../../state/ActionTypes"; class HistoryScreen extends Component { constructor(props) { @@ -20,22 +20,33 @@ class HistoryScreen extends Component { }); }; - keyExtractor = (item) => item.index.toString(); + saveToFavorite = (item) => { + this.props.dispatch({ + type: SAVE_TO_FAVORITES, + payload: {item, favArray: this.props.favorites}, + }); + }; + + keyExtractor = (item) => item.id.toString(); + + renderItem = ({item}) => ( + this.saveToFavorite(item) } + > + {`${item.year}: ${item.text}`} + + ); render() { console.log(this.props.event); return ( - this.getHistory()} - > - {this.props.event.currentDate} - + {this.props.event.currentDate} {`${item.year}: ${item.text}\n`}} + renderItem={ this.renderItem } onRefresh={()=> this.getHistory()} refreshing={ this.props.refreshing } /> @@ -44,9 +55,10 @@ class HistoryScreen extends Component { } } -const mapStateToProps = ({ randomHistory }) => ({ +const mapStateToProps = ({ randomHistory, favorites }) => ({ event: randomHistory.event, refreshing: randomHistory.refreshing, + favorites: favorites.favorites, }); const mapDispatchToProps = dispatch => ({ diff --git a/src/screens/triviaScreen/triviaScreen.js b/src/screens/triviaScreen/triviaScreen.js index c095b34..2717754 100755 --- a/src/screens/triviaScreen/triviaScreen.js +++ b/src/screens/triviaScreen/triviaScreen.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import {FlatList, StyleSheet, Text, TouchableOpacity, View} from 'react-native'; import { connect } from 'react-redux'; -import { GET_RANDOM_TRIVIA } from '../../state/ActionTypes'; +import { GET_RANDOM_TRIVIA, SAVE_TO_FAVORITES } from '../../state/ActionTypes'; class TriviaScreen extends Component { constructor(props) { @@ -20,7 +20,22 @@ class TriviaScreen extends Component { }); }; - keyExtractor = (item) => item.index.toString(); + saveToFavorite = (item) => { + this.props.dispatch({ + type: SAVE_TO_FAVORITES, + payload: {item, favArray: this.props.favorites}, + }); + }; + + keyExtractor = (item) => item.id.toString(); + + renderItem = ({item}) => ( + this.saveToFavorite(item) } + > + {`${item.category}: ${item.question}\nCorrect Answer:${item.correctAnswer}\nMultiple Choice: ${item.multipleChoice}`} + + ); render() { @@ -29,7 +44,7 @@ class TriviaScreen extends Component { {`${item.category}: ${item.question}\nCorrect Answer:${item.correctAnswer}\nMultiple Choice: ${item.multipleChoice}`}} + renderItem={ this.renderItem } onRefresh={()=> this.getTrivia()} refreshing={ this.props.refreshing } /> @@ -38,9 +53,10 @@ class TriviaScreen extends Component { } } -const mapStateToProps = ({ randomTrivia }) => ({ +const mapStateToProps = ({ randomTrivia, favorites }) => ({ trivia: randomTrivia.trivia, refreshing: randomTrivia.refreshing, + favorites: favorites.favorites, }); const mapDispatchToProps = dispatch => ({ diff --git a/src/state/sagas/favoritesSaga/favoritesSaga.js b/src/state/sagas/favoritesSaga/favoritesSaga.js index 1efe516..1192d2e 100644 --- a/src/state/sagas/favoritesSaga/favoritesSaga.js +++ b/src/state/sagas/favoritesSaga/favoritesSaga.js @@ -7,20 +7,42 @@ function* sagaWatcher() { } function* saga({ payload }) { - console.log('fav pay', payload); + console.log('saga', payload); try { const favArray = yield call(saveItemToArray, payload); + console.log('done', favArray); yield put({ type: SAVE_TO_FAVORITES_SUCCESS, favArray }); } catch (err) { + console.log('fail'); yield put({ type: SAVE_TO_FAVORITES_FAILURE }); } } function saveItemToArray(payload) { - payload.favArray.push({ - id: payload.item.id, - text: `${payload.item.setup}\n${payload.item.punchline}`, - }); + console.log('payload', payload); + const type = payload.item.type; + switch(type) { + case 'history': { + payload.favArray.push({ + id: payload.item.id, + text: `${payload.item.year}: ${payload.item.text}\n`, + }); + break; + } + case 'trivia': { + payload.favArray.push({ + id: payload.item.id, + text: `${payload.item.category}: ${payload.item.question}\nCorrect Answer:${payload.item.correctAnswer}\nMultiple Choice: ${payload.item.multipleChoice}`, + }); + break; + } + default: { + payload.favArray.push({ + id: payload.item.id, + text: `${payload.item.setup}\n${payload.item.punchline}`, + }); + } + } return payload.favArray; } diff --git a/src/state/sagas/historySaga/historySaga.js b/src/state/sagas/historySaga/historySaga.js index 4987445..b9af031 100644 --- a/src/state/sagas/historySaga/historySaga.js +++ b/src/state/sagas/historySaga/historySaga.js @@ -28,13 +28,13 @@ function getHistoryFact() { const unfilteredEventArray = json.data.Events; unfilteredEventArray.map((item) => { data.filteredEvents.push({ - index, + type: 'history', + id: index, year: item.year, text: item.text, }); index++; }); - console.log(data); return data; }); } diff --git a/src/state/sagas/jokeSaga/jokeSaga.js b/src/state/sagas/jokeSaga/jokeSaga.js index 0f51e0f..71f8bbd 100644 --- a/src/state/sagas/jokeSaga/jokeSaga.js +++ b/src/state/sagas/jokeSaga/jokeSaga.js @@ -9,7 +9,6 @@ function* sagaWatcher() { function* saga() { try { const joke = yield call(getRandomJoke); - console.log(joke); yield put({ type: GET_RANDOM_JOKE_SUCCESS, payload: joke }); } catch (err) { yield put({ type: GET_RANDOM_JOKE_FAILURE }); diff --git a/src/state/sagas/triviaSaga/triviaSaga.js b/src/state/sagas/triviaSaga/triviaSaga.js index 57a0f67..7cce999 100644 --- a/src/state/sagas/triviaSaga/triviaSaga.js +++ b/src/state/sagas/triviaSaga/triviaSaga.js @@ -25,7 +25,8 @@ function getRandomTrivia() { const results = json.results; results.map((item) => { filteredTrivia.push({ - index, + type: 'trivia', + id: index, category: item.category, question: item.question, correctAnswer: item.correct_answer,