0
Could someone help me I received the following feedback
Não esqueça de cancelar as notificações e agendar as notificações do dia seguinte quando o usuário terminar um quiz :thumbsup:. Você pode usar, por exemplo, o isQuestionAvaliable para testar. Se não existir mais questões disponíveis, significa que o usuário terminou o quiz, então você executa:
clearLocalNotification()
.then(setNotification);
this is my code
import React from 'react';
import {View, StyleSheet, TouchableOpacity, Text} from 'react-native';
import { NavigationActions } from 'react-navigation'
export default class Quiz extends React.Component {
state = {
questionIndex: 0,
correctAnswers: 0,
shouldShowAnswer: false,
};
onCorrect = () => {
const {questionIndex, correctAnswers} = this.state;
this.setState({questionIndex: questionIndex + 1, correctAnswers: correctAnswers + 1, shouldShowAnswer: false});
};
startQuiz = () => {
this.setState({questionIndex: 0, correctAnswers: 0, shouldShowAnswer: false});
};
backToDeck = () => {
this.props.navigation.goBack();
}
onIncorrect = () => {
this.setState({questionIndex: this.state.questionIndex + 1});
};
showAnswer = () => {
this.setState({shouldShowAnswer: !this.state.shouldShowAnswer});
};
render() {
const {questionIndex, correctAnswers, shouldShowAnswer} = this.state;
const {questions} = this.props.navigation.state.params;
const isQuestionAvailable = questionIndex < questions.length;
const questionLeft = questions.length - questionIndex;
return (
<View style={{flex: 1}}>
{isQuestionAvailable ? (
<View style={styles.container}>
<View style={[styles.group, {justifyContent: 'flex-start', flex: 1}]}>
<View>
<Text>{questionLeft} / {questions.length}</Text>
</View>
</View>
<View style={[styles.group, {flex: 4}]}>
<View>
{shouldShowAnswer ? (
<View style={{alignItems: 'center'}}>
<Text style={{fontSize: 36}}>{questions[questionIndex].answer}</Text>
<TouchableOpacity onPress={this.showAnswer}>
<Text style={{fontSize: 18, color: '#70dd2f'}}>Question</Text>
</TouchableOpacity>
</View>) : (
<View style={{alignItems: 'center'}}>
<Text style={{fontSize: 36}}>{questions[questionIndex].question}</Text>
<TouchableOpacity onPress={this.showAnswer}>
<Text style={{fontSize: 18, color: '#ff463f'}}>Answer</Text>
</TouchableOpacity>
</View>
)}
</View>
</View>
<View style={{alignItems: 'center', justifyContent: 'space-around', flex: 2}}>
<View style={styles.container}>
<TouchableOpacity onPress={this.onCorrect}>
<Text style={{
backgroundColor: '#70dd2f',
justifyContent: 'center',
height: 30,
textAlign: 'center',
width: 200
}}>Correct</Text>
</TouchableOpacity>
<TouchableOpacity onPress={this.onIncorrect}>
<Text style={{
backgroundColor: '#ff463f',
justifyContent: 'center',
height: 30,
textAlign: 'center',
width: 200,
marginTop: 20
}}>Incorrect</Text>
</TouchableOpacity>
</View>
</View>
</View>
) : (
<View style={styles.container}>
<Text>Score: {correctAnswers}</Text>
<View style={{alignItems: 'center', justifyContent: 'space-around', flex: 2}}>
<View style={styles.container}>
<TouchableOpacity onPress={this.startQuiz}>
<Text style={{
backgroundColor: '#70dd2f',
justifyContent: 'center',
height: 30,
textAlign: 'center',
width: 200
}}>Start Quiz</Text>
</TouchableOpacity>
<TouchableOpacity onPress={this.backToDeck}>
<Text style={{
backgroundColor: '#ff463f',
justifyContent: 'center',
height: 30,
textAlign: 'center',
width: 200,
marginTop: 20
}}>Back to Deck</Text>
</TouchableOpacity>
</View>
</View>
</View>
)}
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
paddingTop: 20,
}
});
The question is where I put that clearLocalNotification() could help me solve this problem
The line
{isQuestionAvailable ? ...
insiderender()
is a condition, if true displays the question otherwise displays the score, then that’s the point you should place. Test.– NoobSaibot
I did not understand could explain me a little more detailed pf
– Filipe Nickel Sala
The condition to check if you have questions available is
isQuestionAvailable = questionIndex < questions.length
.. on line 43 you are checking whetherisQuestionAvailable
istrue
if so, it will execute 44~103 line code. If sofalse
is because the user has finished the quiz, then will run the code of the lines 105~135 and this is where you putclearLocalNotification().then(setNotification);
– NoobSaibot
Then I’d look like this
</View>

 ) : clearLocalNotification()
 .then(setNotification)
 (
 
 <View style={styles.container}>
 <Text>Score: {correctAnswers}</Text>

 <View style={{alignItems: 'center', justifyContent: 'space-around', flex: 2}}>
 <View style={styles.container}>
– Filipe Nickel Sala
You should put below line 104
– NoobSaibot
after the : correct I did this and the variable error
– Filipe Nickel Sala
Referenceerror: Can'’t find variable clearLocalNotification
– Filipe Nickel Sala
In order to be able to help properly, you will have to create a [mcve] in order to help solve it, we also need to know which libraries are using it alongside the React Native.
– NoobSaibot
https://github.com/filipenickel/mobile-flashcards
– Filipe Nickel Sala