|
|
|
@ -25,7 +25,6 @@ const KanjiCard = (props: KanjiProps) => {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const [loading, setLoading] = useState(true);
|
|
|
|
|
const [kanji, setKanji] = useState((): Kanji | null => { return null });
|
|
|
|
|
const [imgXml, setImgXml] = useState('<svg></svg>');
|
|
|
|
|
|
|
|
|
@ -35,14 +34,7 @@ const KanjiCard = (props: KanjiProps) => {
|
|
|
|
|
const allKanjis: Kanji[] = [].concat(...Object.values(kanjis))
|
|
|
|
|
const selectedKanji = allKanjis[Math.floor(Math.random() * allKanjis.length)]
|
|
|
|
|
|
|
|
|
|
const fetchData = async () => {
|
|
|
|
|
await fetch(`https://kanjialive-api.p.rapidapi.com/api/public/kanji/${props.kanji}`, options)
|
|
|
|
|
.then(async response => {
|
|
|
|
|
const data = await response.json()
|
|
|
|
|
setKanji(KanjiMapper.ApiJsonToKanji(data));
|
|
|
|
|
})
|
|
|
|
|
.catch(err => console.log(err));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const fetchXml = async () => {
|
|
|
|
|
if (kanji) {
|
|
|
|
@ -52,38 +44,30 @@ const KanjiCard = (props: KanjiProps) => {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
setLoading(true);
|
|
|
|
|
fetchData().then(_ => {
|
|
|
|
|
setKanji(selectedKanji);
|
|
|
|
|
setLoading(false);
|
|
|
|
|
});
|
|
|
|
|
setKanji(selectedKanji);
|
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
setLoading(true);
|
|
|
|
|
fetchXml().then(_ => {
|
|
|
|
|
setLoading(false);
|
|
|
|
|
});
|
|
|
|
|
}, [kanji]);
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<View style={kanjiCardStyle.container}>
|
|
|
|
|
|
|
|
|
|
<Text style={kanjiCardStyle.text}> {loading ? <Text>Loading...</Text> : <Text>{kanji?.onyomi}</Text>}</Text>
|
|
|
|
|
{!loading && (
|
|
|
|
|
<Text style={kanjiCardStyle.text}>{kanji?.onyomi}</Text>
|
|
|
|
|
<SvgXml
|
|
|
|
|
xml={imgXml
|
|
|
|
|
.replace(/fill="#[0-9a-f]{6}"/g, `fill=${kanjiCardStyle.svg.color}`)}
|
|
|
|
|
width="200"
|
|
|
|
|
height="200"
|
|
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
<Text style={kanjiCardStyle.text}> {loading ? <Text /> : <Text>{kanji?.meaning}</Text>}</Text>
|
|
|
|
|
<Text style={kanjiCardStyle.text}>{kanji?.meaning}</Text>
|
|
|
|
|
<KanjiAnswerField />
|
|
|
|
|
<Button title="OK" color="#FF5C5C" />
|
|
|
|
|
</View>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const kanjiCardStyle_light = StyleSheet.create({
|
|
|
|
|
svg: {
|
|
|
|
|