From 9b3ce3651e0170ac5e5b8e1d67342a30856ca345 Mon Sep 17 00:00:00 2001 From: Dslak Date: Sat, 19 Oct 2019 15:00:30 +0200 Subject: [PATCH] base application setup --- vds-app/.eslintrc.js | 3 + vds-app/.gitignore | 7 ++ vds-app/.watchmanconfig | 1 + vds-app/App/assets/check.png | Bin 0 -> 550 bytes vds-app/App/assets/check@2x.png | Bin 0 -> 1544 bytes vds-app/App/assets/check@3x.png | Bin 0 -> 2727 bytes vds-app/App/assets/close.png | Bin 0 -> 853 bytes vds-app/App/assets/close@2x.png | Bin 0 -> 1967 bytes vds-app/App/assets/close@3x.png | Bin 0 -> 3676 bytes vds-app/App/components/Alert.js | 53 +++++++++++++ vds-app/App/components/Button.js | 35 +++++++++ vds-app/App/components/RowItem.js | 24 ++++++ vds-app/App/data/aerodynamic.js | 34 +++++++++ vds-app/App/data/computers.js | 22 ++++++ vds-app/App/data/space.js | 22 ++++++ vds-app/App/data/westerns.js | 23 ++++++ vds-app/App/index.js | 26 +++++++ vds-app/App/screens/Quiz.js | 122 ++++++++++++++++++++++++++++++ vds-app/App/screens/QuizIndex.js | 59 +++++++++++++++ vds-app/README.md | 16 ++++ vds-app/app.json | 24 ++++++ vds-app/assets/icon.png | Bin 0 -> 2976 bytes vds-app/assets/splash.png | Bin 0 -> 7178 bytes vds-app/babel.config.js | 6 ++ vds-app/package.json | 25 ++++++ 25 files changed, 502 insertions(+) create mode 100644 vds-app/.eslintrc.js create mode 100644 vds-app/.gitignore create mode 100644 vds-app/.watchmanconfig create mode 100644 vds-app/App/assets/check.png create mode 100644 vds-app/App/assets/check@2x.png create mode 100644 vds-app/App/assets/check@3x.png create mode 100644 vds-app/App/assets/close.png create mode 100644 vds-app/App/assets/close@2x.png create mode 100644 vds-app/App/assets/close@3x.png create mode 100644 vds-app/App/components/Alert.js create mode 100644 vds-app/App/components/Button.js create mode 100644 vds-app/App/components/RowItem.js create mode 100644 vds-app/App/data/aerodynamic.js create mode 100644 vds-app/App/data/computers.js create mode 100644 vds-app/App/data/space.js create mode 100644 vds-app/App/data/westerns.js create mode 100644 vds-app/App/index.js create mode 100644 vds-app/App/screens/Quiz.js create mode 100644 vds-app/App/screens/QuizIndex.js create mode 100644 vds-app/README.md create mode 100644 vds-app/app.json create mode 100644 vds-app/assets/icon.png create mode 100644 vds-app/assets/splash.png create mode 100644 vds-app/babel.config.js create mode 100644 vds-app/package.json diff --git a/vds-app/.eslintrc.js b/vds-app/.eslintrc.js new file mode 100644 index 0000000..d39a471 --- /dev/null +++ b/vds-app/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: "handlebarlabs" +} diff --git a/vds-app/.gitignore b/vds-app/.gitignore new file mode 100644 index 0000000..c84de93 --- /dev/null +++ b/vds-app/.gitignore @@ -0,0 +1,7 @@ +node_modules/**/* +npm-debug.* +*.jks +*.p12 +*.key +*.mobileprovision +yarn.lock diff --git a/vds-app/.watchmanconfig b/vds-app/.watchmanconfig new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/vds-app/.watchmanconfig @@ -0,0 +1 @@ +{} diff --git a/vds-app/App/assets/check.png b/vds-app/App/assets/check.png new file mode 100644 index 0000000000000000000000000000000000000000..3821204a9fe84e05eb637f1397ddb25156f67ae6 GIT binary patch literal 550 zcmeAS@N?(olHy`uVBq!ia0vp^X&}tO1|%)-KS=^ooCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eBx!s;Fjv*C{Z*QK?J!~N0deKwMqx0pF%bng{ zp87_Q_>+!rO!@dZ2mmm=|ml+vk^&bub@murr&^@uz@Vt1}1@Xg~MnWJWWfqFTQIyB689TyCI z_e#v&rE*23j9}`vv_h9DM^^y_=Y{F^b!>|IXd#uVXc_w?xKy-z@x^UNZaK*G?%FlI zP^S0ae5Jz{k0!rv?*W>#|D-}+$0zgB9_2-U{AGaxpI0OTjg#Ekxj8&ma=pjb$5*C& zJhkPlg{1O@ZI4oVTyA$vHdLxSeo|tl&Eu2$V|({nM4h?cv~P0b zPpP9P4-`#(obsS@>Z6o|y@v{o0{j+QNNVJ#&f&T8IR!{;H}GS-HB(ZZ`K@iocr2mLoPM9xcn^cc)s-or2=R3Fb6Mw<&;$S`GTRRT literal 0 HcmV?d00001 diff --git a/vds-app/App/assets/check@2x.png b/vds-app/App/assets/check@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4a4cc7e4b545104753b7663b750b18707687acde GIT binary patch literal 1544 zcmai!jW<+j9LGm_NsMELu#*+Wc%2xXNwK}nxHE``*tkT?2xC(rFQtU>HsfU#b<4|O z#}ON;E4z;MvO6`}yk?qhtrBvKyu?}~r$X&>{R4Z?d4A95{=VPu`Q3BxJ&(|bSFzP+fj@Ot6qD@Z>*Z1;|9I!ui}k5J5Z3^AB$ExIn%TV~P| z(h;3{Q^RA;y^E0xA!#$=(}T*23q?g~FUy9TBYI4*NBEy>#uK{n@hYw|*|4u6`VdEX z4yUtbiA>5k59xAt=*8>sqGnE%P~j+vy#ZGewKaqanq(;p{y|T> zNT9gHe`AMsc+sv{BJyqOXa$2N((AjVDtAOHylEn0UxcdM3=QVcM1;OXRXG6-el{Mm zqF7^41JK-AX-l#Vy1rMSu;tID!wC8Il(d;Dv9LrGnwByAw#&hpUz95qUk)X_Q|6tqMn)Ef-09pN z#T^M8+3Kp02`E*>eh2x&dDrrDxkqaVo*YGT&*$5b#xGY=J~W#)xagW99n;Tf_jB8` z_qEI>)t~kzBcmoJl*y64-9q^LfD<&< zA2LC$$_q8W1fxQjbUcE_asv&s7wUcqz(Mj$q_HM>(&yE4nKnc=8DZ}wcwM(9q4dVm z&^%S(j60_0M>j5ni9Gw;VhK-L43$Xq@hq~zoR7G4x~hJ-E_zJcC%=9l3H7O~cL24u z-im|{<@|jZROD;$?#{k61NaLbpmPiu`ZS`OCuMT%zz2vwNdr=@nwX%K+GY;0P7A|t z$RzYg9Fxw?$gLEzsj*Kpc+xG;E`jWXezL6Ns|mpu6~druyWnC76FXZySRAN{8Or|; D03oY* literal 0 HcmV?d00001 diff --git a/vds-app/App/assets/check@3x.png b/vds-app/App/assets/check@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..777df210d06aac3b7bc1874384e84ae46801c902 GIT binary patch literal 2727 zcmb`Ji&s-u7RH0rh`dZhH1g7WQ9wWRN1`WI+Mk+4vZ8B$LCx8Hac=_#N=4CwUUgrvfk=?*q^)G%Gtl6`>ij>|JgDwycQS~^dason<$RiJJ&G$wRZNxz4aZ`jj|Mv)SDM$-2GOR)l>&} z3#*3sM^6lKZ>-$?tX>-$`H2Q!azlbzrbPT_7dvKi{-e(G3>iS zN15t#$h?iT`LjjdYtM`MQ}-v|cRMbOUq{ECY<)R4HSpqo2-|V4;kK0irL;PD8z`15 zf=%@#sVQ(UEKZG`&6Qqp#=wFr9j%aaRtD5i4NoO}tA)oS=(rv9;p*#=V*ZACAjz7+ zl{$t)#wCi5D<|id*xD~qH1=?9LfEsohTD2-CQ)oj$)ddlVyZz;fh7M31gL#o2|*bK zDhSFk<)LU?jwQWGS^Zt8l#)+s^g_V!bRek$iE62$(E|!p5Nf%;1|-a=H*CNO=Mj9a1`h;*AtI(;gPA+iTUmdU!8_o)J!i1n1vP>rS?I? zYYqf?zIxm{cCetJ;O%6oGP+;A?YKkYgSP5jJa{;L;f9kJZW6=@0ng;l3TP{%bTsrr z3KSl&;!4#+>n^LzMey7<=a8DYhFRwM?UwF-4jt>%@^!S^IjJdzg0_~sE0%Fbx*icC z0brU+5aV8}YCa4`b1E9`cFk`uBfHyv|(17nE!2dXo^laa#gVQEawJ zSOzP&-3`UE67B5_rL>A%1(VVY5Xvj`=Pfq zQKg1&1#xp6x4r7C*4qCZvH5oIA|E(pdC#Lnsh~I4nOXdL^+WrXzMN6UK2Y?mY73Rn zQme(rou1!2Bp3AhPP;-gKZqmya&8#0&VaUXjnjgTq&)%$7{k}Au%b%)t8TjB`lWMZ z^E#5Irc->o1WpHeXWDh~>*|?;6>*#T@N`|h?3onJ0M%iHjY9UXe>0VZ?E$I5ePzez zGcBgcO8Hd6v2JGE$(s|%$dNOQx&kj0n%x-T4{i+c^7Jg1qC@7>&8A08A9l$dXlqYk zY{f&X&=%-|wxP9tbFh&nhVR_xjg6#cGeXO|pQ3Qy57?vMnN6WUjBsLHU3rWPzVhMY zasHWL+K*;jE(_WhE5kM`Ff&#jiY62MIeZ*OKjjKGySQQYm*Th2zb_P5Y>b(m!10mI z72FHJQt}8of3Oi)5`sJSw_9MXD50`9I>L_8j+E$iFvXaNlpNE;a208!#4rItMm}jI zH>mj3aGSWIM~_GTkm5DPyF#UIjzHG*2S9gvDgyti2LGgndfukQ!x52251lorGbvu} z4sQ_YJQW%Gzk_I}hB91IV(Y6(qqhzZR!Q+L??95?Q(@MZgQy8amot$hB#lHTlF}*O zk#Qu&cq&}fDN>>>(wNDkR;Y zcz1Y6a`RBcZ!>`?F`7Qp-v&oFN52Dkl7CsfqUSs=TldLZSryqs)sJ^4FQawO?k(33a+ zFz+6GGun{JH7p9NaGO2McA`M-ON>PHK!HxrRA>F~m86kVl9A#F_q1q=R1Urw+E z*!Ikihanx?%Di6_LBV?0XYhO#z50`b57+YU6kPb?kdL!Ad~VHpsuaV2oGeykSd6$O IB>C|F0Pz`F>Hq)$ literal 0 HcmV?d00001 diff --git a/vds-app/App/assets/close.png b/vds-app/App/assets/close.png new file mode 100644 index 0000000000000000000000000000000000000000..28f62c65db24dd8b0313d2c2bd13d19a41394cac GIT binary patch literal 853 zcmeAS@N?(olHy`uVBq!ia0vp^9U#oX1|)5EEd~j27I;J!Gca%qgD@k*tT_@uLB`@B zcPEB*=VV?2IV|apzK#qG8~eHcB(gFvFun40aSW+oe0%p|uCybMYoJ!|64PaqG^Sdt zT{6Yw(R0xSj64T7l`VbBV_D6g@Z+*V;X?Uj4P&4|Sin=yU$s9sdg^Z8d)6j?MYhb@ z67N074Byr)%zHE=uhYCx;G|gjqZw(P<&P95naUjrtn1`|q+uVwVrt=(*hi-Xv+&m(y0%KK3w= z*Eo7)Vp?ZcXY!32`!)L~AGOR*P?>HqEk3XC-)%viZX4~e?;aw*PZmBbQ<Cp>kR%OA$FH4;!c32z>X!LNAN!Bb>QRH{jz3Tg)`->PXh$s@00`K*aM7Rq1kI>P&RrJG8gg!@kA!owA( zBs--)1+4S9Goio8t`_vv z^QvfabeYsFbpN@)#Ga*0$D>_Tl2=?vl^67k*Q)sD>2j%^>pqL{#3Pqj*dM#77@Ax( zbv)|!X&rN2{=3;pJ4@A+ZnmrKb6&-%Ecwyw`~0InOReVqyQOgYzMcO5e-U#I*W|Cu zuFvz#`0qdIyU*v+g|*6s-fq8Li}qMZy%p|^4yv-9^!V7t7h65}UggbAuOtakA)nc)2SLcyj tCG&{_$2YH=xWo5Fuu2}5gb5Tn^_xLXM5O%ayT7d<1)i>cF6*2UngISMSU&&& literal 0 HcmV?d00001 diff --git a/vds-app/App/assets/close@2x.png b/vds-app/App/assets/close@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5289b008e5a957ef6cf122d1441cca9717c07b5c GIT binary patch literal 1967 zcmbVNi&GQV9!?Mm4-qy9RFE_rAcAtSEy@*GAm9lJ6;WOt9JxvgzACkd2-~X!Xs~R8 zx`{>6ibgLPQLcl9QK5?EVI32?CfxqtRWh!`_ZkFvr#I)Z~yS*m{sg^9ZmGdP0i-TS}xKOyS4T z8Z;|LDPp@jc2g{k)<`&6go|l3226mlX&C*@^XFf$_|^UUKQHTOVdc(3pR!B#UyI@J*ll?nNHX9oA{K=u)7Z`y{+V34IB<)nan+w{`<{XaInyKH~C4-v-uF#>7Qh~^+M4NQydyBq+eIvv-H34 zCVwjTxx;1+sS87nRRoOpxl`t+MLQ`6e?MMfZoJ@a5IRKW@zICG{PX258(V7Ksf@vp zG1Wb$kv(?*o~32`)8iEZxq)M93TNJuP?-G(rDNM}QTpJPTSSGKY`Q_|gWPA7KAZfk z>mIWq@Qpzzvg~+A>6x+bDydf;MmOV~kXWOO2CqNV6D8I^b_YF8irYOFfCxTbea>ZTn-rk9erp`Aw(zuv&}pN{#~ z60NBJ(-4lxnSeF53TSWQjJuV1L6APy9g#Oc^a=-PkK&AU9xQYxFW$zxLjY?94=S(X z489w(7w9{Zc`(eK)Qtde4#z%`;@$Otb&La=q&TBiiVq$x(RcI%(EQ>Y*8T(DeRC#& zl@|i?N24SRbS0R4x_~oUIbc$I7iVMwFu71n&3>S1P>i+z<1-8bR-R&smmFtY^Aq#@ z_4Kg^Y(#>!hvmP;A)2)s*_RCAh1<=T0MY_q(OS*ehwTo=DbmZqBv4S{mgfH-PBTm>0`0&*x z{iEgd(PMb40FCfx`!MAnM8?v zQXE?b*hiPRB4l7ZR~nv28QJupkx~R9{$s1WvWN#!M>kpL5N_EgGS8>|p}1e$P~;ZS zL(c9MnSV=rxnt#nNeAV{Z^+s8PZqjbCZaToIMMk)K9!Y)dVmyJ>9Tws77Udi(SyD$ zwE|aqP}W5&u&0j>mXaB`fNrC0EHgB^$~6vxI+ei%Xg{To$}kHTMg*|WBZQ|!P+_a| z(~}%z^jK*@92&v_K8S27u6_cQZZ=J!WXoB+fXglPXBD~0&pUJ{sj}CBCO`T>8FnoR z76SHhiFy~zVc2M8SZ)&Za+AfYYL_E>sSn^v3_&GAA2@@J$3w5THm&a-`56{|n+t`*qq>&_zAAKs6Y9nR^)YNFb3 zYw4jHV=UBpA;iSQ2B>2qM75Czb?XqK*~o{waD>=6kpOj>D#NpRCW0}^mgyI;ype|* z@5Ug)M1;6$OoktARAr|lNIXLJLs(v0iRG>Woyk1(M;y;vix8IqSiw_edm>1EB{sea z#HAxd2!vNS`bVd5`*eujUWQyMLWl+)97$KzmgDw!C0G>`x#WouCjpqsV!dih{ar?8 zC`B+jkukGB;+K+#!=|*}YIAD|hRv>Z{z~*tZT{=`tCxFC=H7xlm&dfBqVE*L)r86X zZM|?7t2sA3v%W2D?gyP|>X1lLC-w&H&5l%+T}TcDin>_+r!{r>!{I8C^Fj>KtbG4o zQZqSyTw42i8`%9nTzU}XzRD6(4F_JJhCP{doQ_&^@~k0Oyd?>~^=L=73fajH7arXAk|7E-Ofn3gz?|o0O%iG zS`G4w1l1 g>~H?MtlOsElzdr7lYMbCo^GWHyd>BVm-XHM0eYZB-2eap literal 0 HcmV?d00001 diff --git a/vds-app/App/assets/close@3x.png b/vds-app/App/assets/close@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c6d6748c800827738b076862e8b842d3393193fc GIT binary patch literal 3676 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 g`F}@XAS!Zn!snUuMC! { + if (!visible) return null; + + const icon = correct + ? require("../assets/check.png") + : require("../assets/close.png"); + + const circleStyles = [styles.circle]; + + if (correct) { + circleStyles.push(styles.circleCorrect); + } + + return ( + + + + + + ); +}; diff --git a/vds-app/App/components/Button.js b/vds-app/App/components/Button.js new file mode 100644 index 0000000..805d0d3 --- /dev/null +++ b/vds-app/App/components/Button.js @@ -0,0 +1,35 @@ +import React from "react"; +import { View, TouchableOpacity, Text, StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + button: { + backgroundColor: "rgba(255, 255, 255, 0.3)", + borderRadius: 10, + paddingVertical: 15, + alignItems: "center", + justifyContent: "center", + width: "100%", + marginTop: 20 + }, + text: { + color: "#fff", + fontSize: 20, + textAlign: "center" + }, + buttonContainer: { + flexDirection: "row", + flexWrap: "wrap", + marginTop: 20, + justifyContent: "space-between" + } +}); + +export const Button = ({ text, onPress = () => {} }) => ( + + {text} + +); + +export const ButtonContainer = ({ children }) => ( + {children} +); diff --git a/vds-app/App/components/RowItem.js b/vds-app/App/components/RowItem.js new file mode 100644 index 0000000..4954bda --- /dev/null +++ b/vds-app/App/components/RowItem.js @@ -0,0 +1,24 @@ +import React from "react"; +import { View, Text, TouchableOpacity, StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + row: { + paddingHorizontal: 15, + paddingVertical: 20, + backgroundColor: "#36B1F0", + marginBottom: 1 + }, + text: { + fontSize: 18, + color: "#fff", + fontWeight: "600" + } +}); + +export const RowItem = ({ onPress = () => {}, name, color }) => ( + + + {name} + + +); diff --git a/vds-app/App/data/aerodynamic.js b/vds-app/App/data/aerodynamic.js new file mode 100644 index 0000000..7c0d4a4 --- /dev/null +++ b/vds-app/App/data/aerodynamic.js @@ -0,0 +1,34 @@ +const questions = [ + { + id: 1, + question: "Domanda 1", + answers: [ + { id: "1", text: "Mars" }, + { id: "2", text: "Jupiter", correct: true }, + { id: "3", text: "Saturn" }, + { id: "4", text: "Venus" } + ] + }, + { + id: 2, + question: "Domanda 2", + answers: [ + { id: "1", text: "6" }, + { id: "2", text: "7" }, + { id: "3", text: "8", correct: true }, + { id: "4", text: "9" } + ] + }, + { + id: 3, + question: "Domanda 3", + answers: [ + { id: "1", text: "6" }, + { id: "2", text: "7" }, + { id: "3", text: "8", correct: true }, + { id: "4", text: "9" } + ] + } +]; + +export default questions; diff --git a/vds-app/App/data/computers.js b/vds-app/App/data/computers.js new file mode 100644 index 0000000..6ff5667 --- /dev/null +++ b/vds-app/App/data/computers.js @@ -0,0 +1,22 @@ +const questions = [ + { + question: "What is localhost's IP address?", + answers: [ + { id: "1", text: "192.168.1.1" }, + { id: "2", text: "127.0.0.1", correct: true }, + { id: "3", text: "209.85.231.104" }, + { id: "4", text: "66.220.149.25" } + ] + }, + { + question: "What kind of fruit was used to name a computer in 1984?", + answers: [ + { id: "1", text: "Blackberry" }, + { id: "2", text: "Blueberry" }, + { id: "3", text: "Pear" }, + { id: "4", text: "Apple", correct: true } + ] + } +]; + +export default questions; diff --git a/vds-app/App/data/space.js b/vds-app/App/data/space.js new file mode 100644 index 0000000..e30b543 --- /dev/null +++ b/vds-app/App/data/space.js @@ -0,0 +1,22 @@ +const questions = [ + { + question: "What is the fifth planet from the sun?", + answers: [ + { id: "1", text: "Mars" }, + { id: "2", text: "Jupiter", correct: true }, + { id: "3", text: "Saturn" }, + { id: "4", text: "Venus" } + ] + }, + { + question: "How many planets are in the Solar System?", + answers: [ + { id: "1", text: "6" }, + { id: "2", text: "7" }, + { id: "3", text: "8", correct: true }, + { id: "4", text: "9" } + ] + } +]; + +export default questions; diff --git a/vds-app/App/data/westerns.js b/vds-app/App/data/westerns.js new file mode 100644 index 0000000..50a8705 --- /dev/null +++ b/vds-app/App/data/westerns.js @@ -0,0 +1,23 @@ +const questions = [ + { + question: + "In the Roy Rogers -Dale Evans Museum, you will find Roy and Dales stuffed horses. Roy's horse was named Trigger, which was Dales horse?", + answers: [ + { id: "1", text: "Buttermilk", correct: true }, + { id: "2", text: "Daisy" }, + { id: "3", text: "Scout" }, + { id: "4", text: "Tulip" } + ] + }, + { + question: 'What weapon has become known as "the gun that won the west"?', + answers: [ + { id: "1", text: "Smith & Wesson Revolver" }, + { id: "2", text: "Colt Peacemaker", correct: true }, + { id: "3", text: "Winchester Revolver" }, + { id: "4", text: "Sharps Derringer" } + ] + } +]; + +export default questions; diff --git a/vds-app/App/index.js b/vds-app/App/index.js new file mode 100644 index 0000000..8d2c498 --- /dev/null +++ b/vds-app/App/index.js @@ -0,0 +1,26 @@ +import { createStackNavigator, createAppContainer } from "react-navigation"; + +import QuizIndex from "./screens/QuizIndex"; +import Quiz from "./screens/Quiz"; + +const MainStack = createStackNavigator({ + QuizIndex: { + screen: QuizIndex, + navigationOptions: { + headerTitle: "Quizzes" + } + }, + Quiz: { + screen: Quiz, + navigationOptions: ({ navigation }) => ({ + headerTitle: navigation.getParam("title"), + headerTintColor: "#fff", + headerStyle: { + backgroundColor: navigation.getParam("color"), + borderBottomColor: navigation.getParam("color") + } + }) + } +}); + +export default createAppContainer(MainStack); diff --git a/vds-app/App/screens/Quiz.js b/vds-app/App/screens/Quiz.js new file mode 100644 index 0000000..44a5cc0 --- /dev/null +++ b/vds-app/App/screens/Quiz.js @@ -0,0 +1,122 @@ +import React from "react" +import { View, StyleSheet, StatusBar, Text, SafeAreaView } from "react-native" + +import { Button, ButtonContainer } from "../components/Button" +import { Alert } from "../components/Alert" + +const styles = StyleSheet.create({ + container: { + backgroundColor: "#36B1F0", + flex: 1, + paddingHorizontal: 20 + }, + text: { + color: "#fff", + fontSize: 25, + textAlign: "center", + letterSpacing: -0.02, + fontWeight: "600" + }, + safearea: { + flex: 1, + marginTop: 100, + justifyContent: "space-between" + } +}) + +class Quiz extends React.Component { + + state = { + correctCount: 0, + totalCount: this.props.navigation.getParam("questions", []).length, + availableIds: this.props.navigation.getParam("questions", []).map(a => a.id), + activeQuestionId: this.props.navigation.getParam("questions", [])[ + Math.floor(Math.random() * this.props.navigation.getParam("questions", []).length) + ].id, + answered: false, + answerCorrect: false + } + + answer = correct => { + this.setState( + state => { + const nextState = { answered: true } + + if (correct) { + nextState.correctCount = state.correctCount + 1 + nextState.answerCorrect = true + } else { + nextState.answerCorrect = false + } + + return nextState + }, + () => { + setTimeout(() => this.nextQuestion(), 750) + } + ) + } + + nextQuestion = () => { + this.setState(state => { + const updatedIndexes = state.availableIds.filter( item => item != state.activeQuestionId) + const nextId = updatedIndexes[Math.floor(Math.random() * updatedIndexes.length)] + + if (!updatedIndexes.length) { + this.props.navigation.popToTop() + } + /* + if (nextIndex >= state.totalCount) { + this.props.navigation.popToTop() + }*/ + + return { + totalCount: updatedIndexes.length, + availableIds: updatedIndexes, + activeQuestionId: nextId, + answered: false + } + }) + } + + render() { + const questions = this.props.navigation.getParam("questions", []) + const question = questions.filter(item => item.id == this.state.activeQuestionId)[0] || questions[0] + + return ( + + + + + {question.question} + + + {question.answers.map(answer => ( +