From 43ce1dc6af2e5b572d91bc3f6716a37b0f4d00a0 Mon Sep 17 00:00:00 2001 From: aguilhot Date: Tue, 22 Nov 2022 11:03:28 +0100 Subject: [PATCH] =?UTF-8?q?Trop=20gros=20commit=20parce=20que=20=C3=A7a=20?= =?UTF-8?q?fait=20trop=20longtemps=20que=20j'avais=20rien=20mit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bob_party/App.tsx | 8 +- bob_party/assets/BobsSkins/unlogged.png | Bin 0 -> 35988 bytes bob_party/package-lock.json | 490 ++++++++---------- bob_party/package.json | 3 +- bob_party/src/components/PickerGreySmall.tsx | 21 + bob_party/src/components/Skin.tsx | 9 +- bob_party/src/components/TopBar.tsx | 2 +- .../src/components/style/PickerGreySmall.js | 40 ++ bob_party/src/constSex.ts | 2 +- bob_party/src/core/Auth/login.ts | 26 + bob_party/src/core/Auth/newUser.ts | 71 +++ bob_party/src/navigation/AppNavigator.tsx | 3 +- .../redux/features/credentialErrorsSlice.ts | 174 +++++++ .../src/redux/features/currentUserSlice.ts | 69 ++- bob_party/src/redux/store.ts | 4 +- bob_party/src/screens/Chat.tsx | 2 +- bob_party/src/screens/GameChoice.tsx | 1 - bob_party/src/screens/Home.tsx | 2 - bob_party/src/screens/Profile.tsx | 3 +- bob_party/src/screens/Settings.tsx | 35 +- bob_party/src/screens/SignIn.tsx | 44 +- bob_party/src/screens/SignUp.tsx | 171 ++++-- bob_party/src/screens/SkinList.tsx | 2 - bob_party/src/screens/Store.tsx | 2 +- bob_party/yarn.lock | 257 +++++---- create.sql | 108 ---- 26 files changed, 919 insertions(+), 630 deletions(-) create mode 100644 bob_party/assets/BobsSkins/unlogged.png create mode 100644 bob_party/src/components/PickerGreySmall.tsx create mode 100644 bob_party/src/components/style/PickerGreySmall.js create mode 100644 bob_party/src/core/Auth/login.ts create mode 100644 bob_party/src/core/Auth/newUser.ts create mode 100644 bob_party/src/redux/features/credentialErrorsSlice.ts delete mode 100644 create.sql diff --git a/bob_party/App.tsx b/bob_party/App.tsx index 06e0f20..2568063 100644 --- a/bob_party/App.tsx +++ b/bob_party/App.tsx @@ -1,6 +1,12 @@ import React from 'react' import MainTabNavigator from './src/navigation/AppNavigator' +import store from './src/redux/store' +import { Provider } from 'react-redux' export default function App() { - return + return( + + + + ); } diff --git a/bob_party/assets/BobsSkins/unlogged.png b/bob_party/assets/BobsSkins/unlogged.png new file mode 100644 index 0000000000000000000000000000000000000000..651da3e09f4ce518b9b70475810c4a97116eb4a0 GIT binary patch literal 35988 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

Gemf(cvWK}T^jUX;#kXYP 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�DwIvx@H|ucdhuU)(2|6KBnE@E|qSK#RwwY!iY_%Dm|)#(=-=CZKHmKrZZ6 z@4AVdiZys=+fPg_g;5j8<>v!quOQt{l=t726z|Z1$cy8GdAbu6#>Jz`7Yg^M__!st z0UBSX&BXMLuFj>qfo2!{`~s5@yK8|IAPC~3z7*cOFGxHO1X%1-JKy;IMBXAo^OWvW z=7Y;*sWq)xkrDianq3L3Cn<1pt|p0WIl82deizY#xxS|CLw9@D;<9*N$FoQNx9<&D)Q#jGE z;v%j+ieu`&^F*26GOb3qB0EU8w=HEeFl^U_mIpx-rPiqXg(v1uEnL2chX*$Z(K&() z!tssZ`6YHYPzku<%Ox}EKf6n_>;fW9FVQW0x1s?XFJG}O2CqkA@JGyscWt;}6|Tl) zg-6(Rv)d+fv{{n=!`0qA9FY@!7ut3YyK_?DY35BqS7hwhOqU_;(%*9JJ2;kTzQ$9n z%8mFuZ8f?vDK;wk1BHh;pmh#fVSz1QD%_1KP30lBW%HD){eQrou7w?oH+%IrlckGL zaqY&ZyXa#6w8H&A(E1L&TApwnSBlEB;LB8&eCI1pr7eh~*hrfWv8QmYS`6cT;}VkW za%snLc>9k)Cex$xqOtU=4?oDy5K4Qc1B2nlLEJI{6GyRvo4o$Utf00;39 zCBbF@&(t1p=6|E8pk-&Xc8UgVg5#95;@VKYyZ6d=!IOwW)N`YaTxB~ziVV!MaCAeT zTgl~SH}jGTHCX-^DN~`p=OLTu944D16(Tj;p5IKikSbK2u_XTL`)_X|I;mv%;1p}% z+^9T}c}o%FNBfpW{8EAvaNf2LwK5OdE&13~1<}LJGV@?v4aqQ?)Z@IkgoVTC{*esQh9si+`iyS$K$Dur#!M-|qkp;Q>8 zVpk_~O4=q%naG-5dVg zhzv?kQ+`I>ner?P5A#(<$x+c}r3my>Yu%)OU|DuGE*9pJRi!Mx=8q)Y3=)bgiev9D z$u-Tbn33W0qf(2k3l$mV$QoemC}Q{`*jIi^Bkjwbx0TCYZD1GB1vU5zd$x3cX?exA zZ{i>RGEuLYFaJgM95m5a9R12>Tz&tmym#(pUP4O!k0nFz2n2*dn69`P4jB%%nd(}N z%HrlZaBxsMwZPJ&G4v3>tZ{QH zl~inthDbTir;|(&ZlTDH+ts`Nkk9wGhD;_0Ch55m)&=#6k5>(hno9j-^+MN8R0 zt7y3&SbZL42^}|d^sUB3Lvv8C62o9;%P(N`brw4eWJY8c{phFmsG^>&7J4F1Mipj7 zzVcr+mL~>icl`diS(YzKCg)4n*;^uAuiguvtOw3=Pcx6Z= zQx)DKe_X-Yi$dKji^lg#x9Us$o#ZlE8HWBa_PWU|-oZip&NI~o^EJ2ru3VxOopOHq z<_j7@$DU};+F%*gB7OYh(d-qM-)`A8-|*wluQF;=KfBDkuw|yzkM_4WTsDky{N%*k z{&NQ9iw8Y>!uKD^Zw$_>dAff8boKVV=ZqpRKhYaFXUJiiKU;rd;rbKLO~tMJ><4>l z0++R#ug=(eQ1NuTj?T^GJ9D1BT=wc1I*z*8_)~lVXcb{~6+&;fFUQgKa#>B$#h{*Tlv4n-|PdhC?iuY`W-+Yx?VNej+ zY+QK6viCEKip^nLPh#+eS~;pv#XYV(PO z^;fzjE1H)S(Xe7$PG#%jc0c*7bzAxS&-(lS z{KJWbgXN0Bt`tof__$-w>$}n1#-6)5gBP+zJ^Mn=`i}8EHlG4s-%R8HG@(z0d7YWt zz%!r56>h$_9()zrSTK;Tc4zA=uRBwPx*1NZs=18.0.0" } }, "node_modules/@jest/expect-utils/node_modules/jest-get-type": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz", - "integrity": "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -5700,13 +5701,12 @@ "node": ">=8" } }, - "node_modules/@react-native-picker/picker": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.4.8.tgz", - "integrity": "sha512-5NQ5XPo1B03YNqKFrV6h9L3CQaHlB80wd4ETHUEABRP2iLh7FHLVObX2GfziD+K/VJb8G4KZcZ23NFBFP1f7bg==", - "peerDependencies": { - "react": ">=16", - "react-native": ">=0.57" + "node_modules/@react-native-community/datetimepicker": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-6.2.0.tgz", + "integrity": "sha512-w1ZS+wYO3qSASliRp+B7mPphOhtVm++rhSbj1WsgXdgLgDXSkDxpMnAXXQu9M0XdcgBwVJ6wDExeIwuzU5Jtfg==", + "dependencies": { + "invariant": "^2.2.4" } }, "node_modules/@react-native/assets": { @@ -6019,9 +6019,9 @@ } }, "node_modules/@types/jest/node_modules/pretty-format": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.1.2.tgz", - "integrity": "sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz", + "integrity": "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==", "dev": true, "dependencies": { "@jest/schemas": "^29.0.0", @@ -6136,9 +6136,9 @@ } }, "node_modules/@xmldom/xmldom": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.6.tgz", - "integrity": "sha512-HHXP9hskkFQHy8QxxUXkS7946FFIhYVfGqsk0WLwllmexN9x/+R4UBLvurHEuyXRfVEObVR8APuQehykLviwSQ==", + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.8.tgz", + "integrity": "sha512-PrJx38EfpitFhwmILRl37jAdBlsww6AZ6rRVK4QS7T7RHLhX7mSs647sTmgr9GIxe3qjXdesmomEgbgaokrVFg==", "engines": { "node": ">=10.0.0" } @@ -6177,9 +6177,9 @@ } }, "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "bin": { "acorn": "bin/acorn" }, @@ -6385,9 +6385,9 @@ } }, "node_modules/ast-types/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "node_modules/astral-regex": { "version": "1.0.0", @@ -6865,9 +6865,9 @@ } }, "node_modules/bplist-parser": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", - "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", "dependencies": { "big-integer": "1.6.x" }, @@ -8000,9 +8000,9 @@ } }, "node_modules/diff-sequences": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.0.0.tgz", - "integrity": "sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.2.0.tgz", + "integrity": "sha512-413SY5JpYeSBZxmenGEmCVQ8mCgtFJF0w9PROdaS6z987XC2Pd2GOKqOITLtMftmyFZqgtCOb/QA7/Z3ZXfzIw==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -8388,25 +8388,25 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/expect": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.1.2.tgz", - "integrity": "sha512-AuAGn1uxva5YBbBlXb+2JPxJRuemZsmlGcapPXWNSBNsQtAULfjioREGBWuI0EOvYUKjDnrCy8PW5Zlr1md5mw==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.2.2.tgz", + "integrity": "sha512-hE09QerxZ5wXiOhqkXy5d2G9ar+EqOyifnCXCpMNu+vZ6DG9TJ6CO2c2kPDSLqERTTWrO7OZj8EkYHQqSd78Yw==", "dev": true, "dependencies": { - "@jest/expect-utils": "^29.1.2", - "jest-get-type": "^29.0.0", - "jest-matcher-utils": "^29.1.2", - "jest-message-util": "^29.1.2", - "jest-util": "^29.1.2" + "@jest/expect-utils": "^29.2.2", + "jest-get-type": "^29.2.0", + "jest-matcher-utils": "^29.2.2", + "jest-message-util": "^29.2.1", + "jest-util": "^29.2.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/expect/node_modules/@jest/types": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.1.2.tgz", - "integrity": "sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.2.1.tgz", + "integrity": "sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw==", "dev": true, "dependencies": { "@jest/schemas": "^29.0.0", @@ -8488,21 +8488,21 @@ } }, "node_modules/expect/node_modules/jest-get-type": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz", - "integrity": "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/expect/node_modules/jest-util": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.1.2.tgz", - "integrity": "sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.1.tgz", + "integrity": "sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g==", "dev": true, "dependencies": { - "@jest/types": "^29.1.2", + "@jest/types": "^29.2.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -9274,9 +9274,9 @@ } }, "node_modules/graphql-tag/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "node_modules/growly": { "version": "1.3.0", @@ -10563,15 +10563,15 @@ } }, "node_modules/jest-diff": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.1.2.tgz", - "integrity": "sha512-4GQts0aUopVvecIT4IwD/7xsBaMhKTYoM4/njE/aVw9wpw+pIUVp8Vab/KnSzSilr84GnLBkaP3JLDnQYCKqVQ==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.2.1.tgz", + "integrity": "sha512-gfh/SMNlQmP3MOUgdzxPOd4XETDJifADpT937fN1iUGz+9DgOu2eUPHH25JDkLVcLwwqxv3GzVyK4VBUr9fjfA==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^29.0.0", - "jest-get-type": "^29.0.0", - "pretty-format": "^29.1.2" + "diff-sequences": "^29.2.0", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.2.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -10636,18 +10636,18 @@ } }, "node_modules/jest-diff/node_modules/jest-get-type": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz", - "integrity": "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-diff/node_modules/pretty-format": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.1.2.tgz", - "integrity": "sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz", + "integrity": "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==", "dev": true, "dependencies": { "@jest/schemas": "^29.0.0", @@ -11307,15 +11307,15 @@ } }, "node_modules/jest-matcher-utils": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.1.2.tgz", - "integrity": "sha512-MV5XrD3qYSW2zZSHRRceFzqJ39B2z11Qv0KPyZYxnzDHFeYZGJlgGi0SW+IXSJfOewgJp/Km/7lpcFT+cgZypw==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.2.2.tgz", + "integrity": "sha512-4DkJ1sDPT+UX2MR7Y3od6KtvRi9Im1ZGLGgdLFLm4lPexbTaCgJW5NN3IOXlQHF7NSHY/VHhflQ+WoKtD/vyCw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.1.2", - "jest-get-type": "^29.0.0", - "pretty-format": "^29.1.2" + "jest-diff": "^29.2.1", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.2.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -11380,18 +11380,18 @@ } }, "node_modules/jest-matcher-utils/node_modules/jest-get-type": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz", - "integrity": "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.1.2.tgz", - "integrity": "sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz", + "integrity": "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==", "dev": true, "dependencies": { "@jest/schemas": "^29.0.0", @@ -11433,18 +11433,18 @@ } }, "node_modules/jest-message-util": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.1.2.tgz", - "integrity": "sha512-9oJ2Os+Qh6IlxLpmvshVbGUiSkZVc2FK+uGOm6tghafnB2RyjKAxMZhtxThRMxfX1J1SOMhTn9oK3/MutRWQJQ==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.2.1.tgz", + "integrity": "sha512-Dx5nEjw9V8C1/Yj10S/8ivA8F439VS8vTq1L7hEgwHFn9ovSKNpYW/kwNh7UglaEgXO42XxzKJB+2x0nSglFVw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.1.2", + "@jest/types": "^29.2.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.1.2", + "pretty-format": "^29.2.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -11453,9 +11453,9 @@ } }, "node_modules/jest-message-util/node_modules/@jest/types": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.1.2.tgz", - "integrity": "sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.2.1.tgz", + "integrity": "sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw==", "dev": true, "dependencies": { "@jest/schemas": "^29.0.0", @@ -11537,9 +11537,9 @@ } }, "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.1.2.tgz", - "integrity": "sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz", + "integrity": "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==", "dev": true, "dependencies": { "@jest/schemas": "^29.0.0", @@ -12971,17 +12971,6 @@ "node": ">=0.10.0" } }, - "node_modules/jscodeshift/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/jscodeshift/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -13152,16 +13141,6 @@ "node": ">=6.0.0" } }, - "node_modules/json-schema-deref-sync/node_modules/md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==", - "dependencies": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" - } - }, "node_modules/json5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", @@ -13358,13 +13337,13 @@ } }, "node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==", "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" } }, "node_modules/md5-file": { @@ -15352,6 +15331,14 @@ "nullthrows": "^1.1.1" } }, + "node_modules/react-native-date-picker": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/react-native-date-picker/-/react-native-date-picker-4.2.5.tgz", + "integrity": "sha512-YjwiMpZEnVVS+ymLvmJDicVZ3pSR+nJHgtAhctMl6fO8f7iRNcYhY427gemlTBf2Ji+XIAK0Agyl255DhaemFw==", + "dependencies": { + "prop-types": "^15.8.1" + } + }, "node_modules/react-native-dialog": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/react-native-dialog/-/react-native-dialog-9.2.2.tgz", @@ -15459,9 +15446,9 @@ } }, "node_modules/react-native/node_modules/promise": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.2.0.tgz", - "integrity": "sha512-+CMAlLHqwRYwBMXKCP+o8ns7DN+xHDUiI+0nArsiJ9y+kJVPLFxEaSw6Ha9s9H0tftxg2Yzl25wqj9G7m5wLZg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", "dependencies": { "asap": "~2.0.6" } @@ -15690,9 +15677,9 @@ } }, "node_modules/recast/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "node_modules/redux": { "version": "4.2.0", @@ -15940,9 +15927,9 @@ } }, "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dependencies": { "glob": "^7.1.3" }, @@ -16439,17 +16426,6 @@ "plist": "^3.0.5" } }, - "node_modules/simple-plist/node_modules/bplist-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", - "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", - "dependencies": { - "big-integer": "1.6.x" - }, - "engines": { - "node": ">= 5.10.0" - } - }, "node_modules/simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -20750,18 +20726,18 @@ } }, "@jest/expect-utils": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.1.2.tgz", - "integrity": "sha512-4a48bhKfGj/KAH39u0ppzNTABXQ8QPccWAFUFobWBaEMSMp+sB31Z2fK/l47c4a/Mu1po2ffmfAIPxXbVTXdtg==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.2.2.tgz", + "integrity": "sha512-vwnVmrVhTmGgQzyvcpze08br91OL61t9O0lJMDyb6Y/D8EKQ9V7rGUb/p7PDt0GPzK0zFYqXWFo4EO2legXmkg==", "dev": true, "requires": { - "jest-get-type": "^29.0.0" + "jest-get-type": "^29.2.0" }, "dependencies": { "jest-get-type": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz", - "integrity": "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==", "dev": true } } @@ -22365,11 +22341,13 @@ "joi": "^17.2.1" } }, - "@react-native-picker/picker": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.4.8.tgz", - "integrity": "sha512-5NQ5XPo1B03YNqKFrV6h9L3CQaHlB80wd4ETHUEABRP2iLh7FHLVObX2GfziD+K/VJb8G4KZcZ23NFBFP1f7bg==", - "requires": {} + "@react-native-community/datetimepicker": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-6.2.0.tgz", + "integrity": "sha512-w1ZS+wYO3qSASliRp+B7mPphOhtVm++rhSbj1WsgXdgLgDXSkDxpMnAXXQu9M0XdcgBwVJ6wDExeIwuzU5Jtfg==", + "requires": { + "invariant": "^2.2.4" + } }, "@react-native/assets": { "version": "1.0.0", @@ -22625,9 +22603,9 @@ "dev": true }, "pretty-format": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.1.2.tgz", - "integrity": "sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz", + "integrity": "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==", "dev": true, "requires": { "@jest/schemas": "^29.0.0", @@ -22735,9 +22713,9 @@ } }, "@xmldom/xmldom": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.6.tgz", - "integrity": "sha512-HHXP9hskkFQHy8QxxUXkS7946FFIhYVfGqsk0WLwllmexN9x/+R4UBLvurHEuyXRfVEObVR8APuQehykLviwSQ==" + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.8.tgz", + "integrity": "sha512-PrJx38EfpitFhwmILRl37jAdBlsww6AZ6rRVK4QS7T7RHLhX7mSs647sTmgr9GIxe3qjXdesmomEgbgaokrVFg==" }, "abab": { "version": "2.0.6", @@ -22767,9 +22745,9 @@ } }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" }, "acorn-globals": { "version": "6.0.0", @@ -22923,9 +22901,9 @@ }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" } } }, @@ -23309,9 +23287,9 @@ } }, "bplist-parser": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", - "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", "requires": { "big-integer": "1.6.x" } @@ -24176,9 +24154,9 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" }, "diff-sequences": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.0.0.tgz", - "integrity": "sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.2.0.tgz", + "integrity": "sha512-413SY5JpYeSBZxmenGEmCVQ8mCgtFJF0w9PROdaS6z987XC2Pd2GOKqOITLtMftmyFZqgtCOb/QA7/Z3ZXfzIw==", "dev": true }, "dir-glob": { @@ -24468,22 +24446,22 @@ } }, "expect": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.1.2.tgz", - "integrity": "sha512-AuAGn1uxva5YBbBlXb+2JPxJRuemZsmlGcapPXWNSBNsQtAULfjioREGBWuI0EOvYUKjDnrCy8PW5Zlr1md5mw==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.2.2.tgz", + "integrity": "sha512-hE09QerxZ5wXiOhqkXy5d2G9ar+EqOyifnCXCpMNu+vZ6DG9TJ6CO2c2kPDSLqERTTWrO7OZj8EkYHQqSd78Yw==", "dev": true, "requires": { - "@jest/expect-utils": "^29.1.2", - "jest-get-type": "^29.0.0", - "jest-matcher-utils": "^29.1.2", - "jest-message-util": "^29.1.2", - "jest-util": "^29.1.2" + "@jest/expect-utils": "^29.2.2", + "jest-get-type": "^29.2.0", + "jest-matcher-utils": "^29.2.2", + "jest-message-util": "^29.2.1", + "jest-util": "^29.2.1" }, "dependencies": { "@jest/types": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.1.2.tgz", - "integrity": "sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.2.1.tgz", + "integrity": "sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw==", "dev": true, "requires": { "@jest/schemas": "^29.0.0", @@ -24544,18 +24522,18 @@ "dev": true }, "jest-get-type": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz", - "integrity": "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==", "dev": true }, "jest-util": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.1.2.tgz", - "integrity": "sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.1.tgz", + "integrity": "sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g==", "dev": true, "requires": { - "@jest/types": "^29.1.2", + "@jest/types": "^29.2.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -25154,9 +25132,9 @@ }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" } } }, @@ -26091,15 +26069,15 @@ } }, "jest-diff": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.1.2.tgz", - "integrity": "sha512-4GQts0aUopVvecIT4IwD/7xsBaMhKTYoM4/njE/aVw9wpw+pIUVp8Vab/KnSzSilr84GnLBkaP3JLDnQYCKqVQ==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.2.1.tgz", + "integrity": "sha512-gfh/SMNlQmP3MOUgdzxPOd4XETDJifADpT937fN1iUGz+9DgOu2eUPHH25JDkLVcLwwqxv3GzVyK4VBUr9fjfA==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^29.0.0", - "jest-get-type": "^29.0.0", - "pretty-format": "^29.1.2" + "diff-sequences": "^29.2.0", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.2.1" }, "dependencies": { "ansi-styles": { @@ -26143,15 +26121,15 @@ "dev": true }, "jest-get-type": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz", - "integrity": "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==", "dev": true }, "pretty-format": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.1.2.tgz", - "integrity": "sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz", + "integrity": "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==", "dev": true, "requires": { "@jest/schemas": "^29.0.0", @@ -26649,15 +26627,15 @@ } }, "jest-matcher-utils": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.1.2.tgz", - "integrity": "sha512-MV5XrD3qYSW2zZSHRRceFzqJ39B2z11Qv0KPyZYxnzDHFeYZGJlgGi0SW+IXSJfOewgJp/Km/7lpcFT+cgZypw==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.2.2.tgz", + "integrity": "sha512-4DkJ1sDPT+UX2MR7Y3od6KtvRi9Im1ZGLGgdLFLm4lPexbTaCgJW5NN3IOXlQHF7NSHY/VHhflQ+WoKtD/vyCw==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^29.1.2", - "jest-get-type": "^29.0.0", - "pretty-format": "^29.1.2" + "jest-diff": "^29.2.1", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.2.1" }, "dependencies": { "ansi-styles": { @@ -26701,15 +26679,15 @@ "dev": true }, "jest-get-type": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz", - "integrity": "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==", "dev": true }, "pretty-format": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.1.2.tgz", - "integrity": "sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz", + "integrity": "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==", "dev": true, "requires": { "@jest/schemas": "^29.0.0", @@ -26743,26 +26721,26 @@ } }, "jest-message-util": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.1.2.tgz", - "integrity": "sha512-9oJ2Os+Qh6IlxLpmvshVbGUiSkZVc2FK+uGOm6tghafnB2RyjKAxMZhtxThRMxfX1J1SOMhTn9oK3/MutRWQJQ==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.2.1.tgz", + "integrity": "sha512-Dx5nEjw9V8C1/Yj10S/8ivA8F439VS8vTq1L7hEgwHFn9ovSKNpYW/kwNh7UglaEgXO42XxzKJB+2x0nSglFVw==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.1.2", + "@jest/types": "^29.2.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.1.2", + "pretty-format": "^29.2.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, "dependencies": { "@jest/types": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.1.2.tgz", - "integrity": "sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.2.1.tgz", + "integrity": "sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw==", "dev": true, "requires": { "@jest/schemas": "^29.0.0", @@ -26823,9 +26801,9 @@ "dev": true }, "pretty-format": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.1.2.tgz", - "integrity": "sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz", + "integrity": "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==", "dev": true, "requires": { "@jest/schemas": "^29.0.0", @@ -27910,14 +27888,6 @@ "to-regex": "^3.0.2" } }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "requires": { - "glob": "^7.1.3" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -28038,18 +28008,6 @@ "memory-cache": "~0.2.0", "traverse": "~0.6.6", "valid-url": "~1.0.9" - }, - "dependencies": { - "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==", - "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" - } - } } }, "json5": { @@ -28202,13 +28160,13 @@ } }, "md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==", "requires": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" } }, "md5-file": { @@ -29715,9 +29673,9 @@ }, "dependencies": { "promise": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.2.0.tgz", - "integrity": "sha512-+CMAlLHqwRYwBMXKCP+o8ns7DN+xHDUiI+0nArsiJ9y+kJVPLFxEaSw6Ha9s9H0tftxg2Yzl25wqj9G7m5wLZg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", "requires": { "asap": "~2.0.6" } @@ -29735,6 +29693,14 @@ "nullthrows": "^1.1.1" } }, + "react-native-date-picker": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/react-native-date-picker/-/react-native-date-picker-4.2.5.tgz", + "integrity": "sha512-YjwiMpZEnVVS+ymLvmJDicVZ3pSR+nJHgtAhctMl6fO8f7iRNcYhY427gemlTBf2Ji+XIAK0Agyl255DhaemFw==", + "requires": { + "prop-types": "^15.8.1" + } + }, "react-native-dialog": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/react-native-dialog/-/react-native-dialog-9.2.2.tgz", @@ -29974,9 +29940,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" } } }, @@ -30175,9 +30141,9 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "requires": { "glob": "^7.1.3" } @@ -30572,16 +30538,6 @@ "bplist-creator": "0.1.0", "bplist-parser": "0.3.1", "plist": "^3.0.5" - }, - "dependencies": { - "bplist-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", - "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", - "requires": { - "big-integer": "1.6.x" - } - } } }, "simple-swizzle": { diff --git a/bob_party/package.json b/bob_party/package.json index 6741328..638c9af 100644 --- a/bob_party/package.json +++ b/bob_party/package.json @@ -9,7 +9,7 @@ "web": "expo start --web" }, "dependencies": { - "@react-native-picker/picker": "^2.4.8", + "@react-native-community/datetimepicker": "6.2.0", "@react-navigation/bottom-tabs": "^6.4.0", "@react-navigation/native": "^6.0.13", "@react-navigation/stack": "^6.3.2", @@ -21,6 +21,7 @@ "react": "18.0.0", "react-dom": "18.0.0", "react-native": "^0.69.6", + "react-native-date-picker": "^4.2.5", "react-native-dialog": "^9.2.2", "react-native-dialog-input": "^1.0.8", "react-native-gesture-handler": "~2.5.0", diff --git a/bob_party/src/components/PickerGreySmall.tsx b/bob_party/src/components/PickerGreySmall.tsx new file mode 100644 index 0000000..ba0d5b3 --- /dev/null +++ b/bob_party/src/components/PickerGreySmall.tsx @@ -0,0 +1,21 @@ +import { FC} from "react" +import { Pressable, Text} from "react-native" +import React from "react" +import styles from "./style/PickerGreySmall" +import RNPickerSelect from "react-native-picker-select"; + +export const PickerGreySmall: +FC<{ valueChange: any, title: string, donePress?: any, values?: any;}> += +({valueChange, donePress, title, values}) => + { + return( + + ) + } \ No newline at end of file diff --git a/bob_party/src/components/Skin.tsx b/bob_party/src/components/Skin.tsx index 2caf613..5008344 100644 --- a/bob_party/src/components/Skin.tsx +++ b/bob_party/src/components/Skin.tsx @@ -7,8 +7,9 @@ import { Skin } from "../core/skin" Importing the correct stylesheet */ import styles from "./style/Skin.style" -import { useDispatch } from "react-redux" -import { updateSkin } from "../redux/features/currentUserSlice" +import { useDispatch, useSelector } from "react-redux" +import { loginUser } from "../redux/features/currentUserSlice" +import { RootState } from "../redux/store" export const SkinComponent : /* Parameters : @@ -19,6 +20,8 @@ FC<{skin: Skin, state: String}> = ({skin, state}) => { const dispatch=useDispatch(); + + const currentUser = useSelector((state: RootState) => state.currentUserManager.currentUser); /* The display of this component depends of the screen from where it has been called: * From the TopBar (icon) : Small image in a circle @@ -46,7 +49,7 @@ FC<{skin: Skin, state: String}> = ) case 'liste': return( - dispatch(updateSkin(skin))} style={styles.imageWrapper}> + {currentUser.setCurrentSkin(skin); dispatch(loginUser(currentUser))}} style={styles.imageWrapper}> {skin.getSkinName()} = ({nav, state}) => { - const currentUser = useSelector((state: RootState) => state.currentUser.value)[0]; + const currentUser = useSelector((state: RootState) => state.currentUserManager.currentUser); /* The display of this component depends of the screen from where it has been called: * From the Settings (icon) : Name of the page + cross button diff --git a/bob_party/src/components/style/PickerGreySmall.js b/bob_party/src/components/style/PickerGreySmall.js new file mode 100644 index 0000000..3f12ac2 --- /dev/null +++ b/bob_party/src/components/style/PickerGreySmall.js @@ -0,0 +1,40 @@ +import { StyleSheet } from "react-native"; + +export default StyleSheet.create( + {inputIOS: { + alignItems: 'center', + justifyContent: 'center', + padding: 3, + marginTop: 5, + borderRadius: 10, + backgroundColor: '#2D2C33', + paddingHorizontal: 10, + fontSize: 16, + fontWeight: 'bold', + letterSpacing: 0.25, + textAlign: 'center', + color: 'white', + }, + placeholder: { + color: 'white', + }, + }, + {inputAndroid: { + alignItems: 'center', + justifyContent: 'center', + padding: 3, + marginTop: 5, + borderRadius: 10, + backgroundColor: '#2D2C33', + paddingHorizontal: 10, + fontSize: 16, + fontWeight: 'bold', + letterSpacing: 0.25, + textAlign: 'center', + color: 'white', + }, + placeholder: { + color: 'white', + }, + } +) \ No newline at end of file diff --git a/bob_party/src/constSex.ts b/bob_party/src/constSex.ts index 373c68d..4e955d5 100644 --- a/bob_party/src/constSex.ts +++ b/bob_party/src/constSex.ts @@ -1,7 +1,7 @@ const tabSex = [ { label: "Homme", value: "Homme" }, - { label: "Femmme", value: "Femmme" }, + { label: "Femme", value: "Femme" }, { label: "Non-binaire", value: "Non-binaire" }, { label: "Autre", value: "Autre" }, ] diff --git a/bob_party/src/core/Auth/login.ts b/bob_party/src/core/Auth/login.ts new file mode 100644 index 0000000..971d454 --- /dev/null +++ b/bob_party/src/core/Auth/login.ts @@ -0,0 +1,26 @@ +import { loginUser } from '../../redux/features/currentUserSlice'; +import { updateIncorrectCredentials } from '../../redux/features/credentialErrorsSlice'; +import tabUS from "../../constUser"; +import { useSelector } from 'react-redux'; +import { RootState } from '../../redux/store'; + + + + + +export const checkCredentials = (login: string, password: string, dispatch: any, nav: any) => { + if((tabUS.map((User) => User.getUsername()).indexOf(login)) !== -1){ + let id = (tabUS.map((User) => User.getUsername()).indexOf(login)) + if ((tabUS.map((User) => User.getUsername()).indexOf(login) === id) && ( tabUS[id].getPassword() === password) ){ + dispatch(loginUser(tabUS[id])); + nav.navigate('HomeTab') + } + else{ + dispatch(updateIncorrectCredentials(true)) + } + } + else{ + dispatch(updateIncorrectCredentials(true)); + } +}; + diff --git a/bob_party/src/core/Auth/newUser.ts b/bob_party/src/core/Auth/newUser.ts new file mode 100644 index 0000000..d8a357c --- /dev/null +++ b/bob_party/src/core/Auth/newUser.ts @@ -0,0 +1,71 @@ + +import { loginUser } from '../../redux/features/currentUserSlice'; +import tabUS from "../../constUser"; +import { User } from '../User/user'; +import { updateAlreadyUsedPseudo,updateImpossibleBirthDate,updateUndefinedBirthDate,updateUndefinedNationality,updateTooLongPseudo,updateUndefinedPseudo,updateUndefinedSex, updateTooShortPassword, updateInvalidPassword, updateInvalidPseudo, updateUndefinedPassword } from '../../redux/features/credentialErrorsSlice'; + +function max(array: User[]){ + let max: string = ""; + for (let index = 0; index < array.length; index++) { + const element = array[index].getId(); + if (element > max) max = element; + } + return max; +} + + +export const checkNewUserValidity = (login: string, password: string, dateOfBirth: Date, nationality: string, sexe: string, dispatch: any, nav: any) => { + let actualDate : number = Date.now(); + let givenDate : number = dateOfBirth.getTime(); + let passwordRegex : RegExp = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-])(?!.*?[.\n\\{}[\],]).{8,}$/; + let loginRegex : RegExp = /^[A-Za-z0-9_-]{1,22}$/; + + switch(true){ + case (login === ''): + dispatch(updateUndefinedPseudo(true)); + break; + + case (password === ''): + dispatch(updateUndefinedPassword(true)); + break; + + case (givenDate == null): + dispatch(updateUndefinedBirthDate(true)); + break; + + case (nationality == ''): + dispatch(updateUndefinedNationality(true)) + break; + + case (sexe == ''): + dispatch(updateUndefinedSex(true)); + break; + + case (login.length > 22): + dispatch(updateTooLongPseudo(true)); + break; + + case (! loginRegex.test(login)): + dispatch(updateInvalidPseudo(true)); + break; + + //ALREADY USED PSEUDO + + case (password.length < 8): + dispatch(updateTooShortPassword(true)); + break; + + case (! passwordRegex.test(password)): + dispatch(updateInvalidPassword(true)); + break; + + case ((actualDate-givenDate) < 409968000000): + dispatch(updateImpossibleBirthDate(true)); + break; + + default: + const newUser : User = new User("0",login,password,nationality,sexe,dateOfBirth); + dispatch(loginUser(newUser)); + nav.navigate('HomeTab'); + } +}; \ No newline at end of file diff --git a/bob_party/src/navigation/AppNavigator.tsx b/bob_party/src/navigation/AppNavigator.tsx index c9821e3..0a299bd 100644 --- a/bob_party/src/navigation/AppNavigator.tsx +++ b/bob_party/src/navigation/AppNavigator.tsx @@ -11,7 +11,7 @@ import Profile from '../screens/Profile' import SkinList from '../screens/SkinList' import GameChoice from '../screens/GameChoice' import SignIn from '../screens/SignIn' -//import SignUp from '../screens/SignUp' +import SignUp from '../screens/SignUp' @@ -87,6 +87,7 @@ function MainTabNavigator() { + ) diff --git a/bob_party/src/redux/features/credentialErrorsSlice.ts b/bob_party/src/redux/features/credentialErrorsSlice.ts new file mode 100644 index 0000000..8376956 --- /dev/null +++ b/bob_party/src/redux/features/credentialErrorsSlice.ts @@ -0,0 +1,174 @@ +import { createSlice, PayloadAction } from "@reduxjs/toolkit" + +var incorrectCredentialsBool : boolean = false; +var tooLongPseudodBool : boolean = false; +var tooShortPasswordBool : boolean = false; +var invalidPseudoBool : boolean = false; +var invalidPasswordBool : boolean = false; +var impossibleBirthDateBool : boolean = false; +var undefinedPseudoBool : boolean = false; +var undefinedPasswordBool : boolean = false; +var undefinedBirthDateBool : boolean = false; +var undefinedNationalityBool : boolean = false; +var undefinedSexBool : boolean = false; +var alreadyUsedPseudoBool : boolean = false; + + +export const credentialErrorsSlice = createSlice({ + name: "credentialErrors", + initialState:{ + newUserErrorList : { + tooLongPseudo: tooLongPseudodBool, + tooShortPassword : tooShortPasswordBool, + invalidPseudo: invalidPseudoBool, + invalidPassword: invalidPasswordBool, + impossibleBirthDate: impossibleBirthDateBool, + undefinedPseudo: undefinedPseudoBool, + undefinedPassword: undefinedPasswordBool, + undefinedBirthDate: undefinedBirthDateBool, + undefinedNationality: undefinedNationalityBool, + undefinedSex: undefinedSexBool, + alreadyUsedPseudo: alreadyUsedPseudoBool, + }, + loginErrorList : { + incorrectCredentials: incorrectCredentialsBool, + } + }, + reducers: { + updateIncorrectCredentials: (state, action: PayloadAction) => { + return { + ...state, + newUserErrorList:{ + ...state.newUserErrorList, + incorrectCredentials: action.payload + } + } + }, + updateTooLongPseudo: (state, action: PayloadAction) => { + return { + ...state, + newUserErrorList:{ + ...state.newUserErrorList, + tooShortPseudo: action.payload + } + } + }, + updateTooLongPassword: (state, action: PayloadAction) => { + return { + ...state, + newUserErrorList:{ + ...state.newUserErrorList, + tooLongPassword: action.payload + } + } + }, + updateTooShortPassword: (state, action: PayloadAction) => { + return { + ...state, + newUserErrorList:{ + ...state.newUserErrorList, + tooShortPassword: action.payload + } + } + }, + updateInvalidPseudo: (state, action: PayloadAction) => { + return { + ...state, + newUserErrorList:{ + ...state.newUserErrorList, + invalidPseudo: action.payload + } + } + }, + updateInvalidPassword: (state, action: PayloadAction) => { + return { + ...state, + newUserErrorList:{ + ...state.newUserErrorList, + invalidPassword: action.payload + } + } + }, + updateImpossibleBirthDate: (state, action: PayloadAction) => { + return { + ...state, + newUserErrorList:{ + ...state.newUserErrorList, + impossibleBirthDate: action.payload + } + } + }, + updateUndefinedPseudo: (state, action: PayloadAction) => { + return { + ...state, + newUserErrorList:{ + ...state.newUserErrorList, + undefinedPseudo: action.payload + } + } + }, + updateUndefinedPassword: (state, action: PayloadAction) => { + return { + ...state, + newUserErrorList:{ + ...state.newUserErrorList, + undefinedPassword: action.payload + } + } + }, + updateUndefinedBirthDate: (state, action: PayloadAction) => { + return { + ...state, + newUserErrorList:{ + ...state.newUserErrorList, + undefinedBirthDate: action.payload + } + } + }, + updateUndefinedNationality: (state, action: PayloadAction) => { + return { + ...state, + newUserErrorList:{ + ...state.newUserErrorList, + undefinedNationality: action.payload + } + } + }, + updateUndefinedSex: (state, action: PayloadAction) => { + return { + ...state, + newUserErrorList:{ + ...state.newUserErrorList, + undefinedSex: action.payload + } + } + }, + updateAlreadyUsedPseudo: (state, action: PayloadAction) => { + return { + ...state, + newUserErrorList:{ + ...state.newUserErrorList, + alreadyUsedPseudo: action.payload + } + } + }, + }, +}); + +export const { updateIncorrectCredentials } = credentialErrorsSlice.actions +export const { updateTooShortPassword } = credentialErrorsSlice.actions +export const { updateTooLongPseudo } = credentialErrorsSlice.actions +export const { updateTooLongPassword } = credentialErrorsSlice.actions +export const { updateInvalidPseudo } = credentialErrorsSlice.actions +export const { updateInvalidPassword } = credentialErrorsSlice.actions +export const { updateImpossibleBirthDate } = credentialErrorsSlice.actions +export const { updateUndefinedPseudo } = credentialErrorsSlice.actions +export const { updateUndefinedPassword } = credentialErrorsSlice.actions +export const { updateUndefinedBirthDate } = credentialErrorsSlice.actions +export const { updateUndefinedNationality } = credentialErrorsSlice.actions +export const { updateUndefinedSex } = credentialErrorsSlice.actions +export const { updateAlreadyUsedPseudo } = credentialErrorsSlice.actions + + + +export default credentialErrorsSlice.reducer; \ No newline at end of file diff --git a/bob_party/src/redux/features/currentUserSlice.ts b/bob_party/src/redux/features/currentUserSlice.ts index 460ad02..99823ae 100644 --- a/bob_party/src/redux/features/currentUserSlice.ts +++ b/bob_party/src/redux/features/currentUserSlice.ts @@ -2,50 +2,65 @@ import { createSlice, PayloadAction } from "@reduxjs/toolkit" import { Skin } from "../../core/Skin"; import { User } from "../../core/User/user"; -interface currentUserState { - value: User[] -} +const dateNull = new Date(); -const initialState: currentUserState = { - value: [], -} +const userNull:User= new User("","","","","",dateNull); + +var currentUser:User = userNull; export const currentUserSlice = createSlice({ - name: "currentUser", - initialState, + name: "currentUserManager", + initialState : { + currentUser + }, reducers: { loginUser: (state, action: PayloadAction) => { - state.value.push(action.payload); + const newUser : User = new User(action.payload.getId(), action.payload.getUsername(),action.payload.getPassword(),action.payload.getNationality(),action.payload.getSexe(),action.payload.getDateOfBirth(), action.payload.getCurrentCoins(), action.payload.getTotalCoins(),action.payload.getGamePlayed(),action.payload.getCurrentSkin(),action.payload.getTabSkin(), action.payload.getTabConv()) + + state.currentUser = newUser; }, updateSkin: (state, action: PayloadAction) =>{ - const newUser = state.value[0] + + + const newUser : User = new User(currentUser.getId(), currentUser.getUsername(),currentUser.getPassword(),currentUser.getNationality(),currentUser.getSexe(),currentUser.getDateOfBirth(), currentUser.getCurrentCoins(), currentUser.getTotalCoins(),currentUser.getGamePlayed(),currentUser.getCurrentSkin(),currentUser.getTabSkin(), currentUser.getTabConv()) + newUser.setCurrentSkin(action.payload); - state.value.pop(); - state.value.push(newUser); + + state.currentUser = newUser; }, updatePseudo: (state, action: PayloadAction) =>{ - const newUser = state.value[0] + const newUser: User = new User(currentUser.getId(), currentUser.getUsername(), currentUser.getPassword(), currentUser.getNationality(), currentUser.getSexe(), currentUser.getDateOfBirth()); + + console.log(currentUser); newUser.setUsername(action.payload); - state.value.pop(); - state.value.push(newUser); + return { + ...state, + currentUser: newUser, + } }, updatePassword: (state, action: PayloadAction) =>{ - const newUser = state.value[0] - newUser.setPassword(action.payload); - state.value.pop(); - state.value.push(newUser); + const newUser = state.currentUser; + currentUser.setPassword(action.payload) + return { + ...state, + currentUser: newUser, + } }, updateNationality: (state, action: PayloadAction) =>{ - const newUser = state.value[0] - newUser.setNationality(action.payload); - state.value.pop(); - state.value.push(newUser); + const newUser = state.currentUser; + currentUser.setNationality(action.payload) + return { + ...state, + currentUser: newUser, + } }, updateSex: (state, action: PayloadAction) =>{ - const newUser = state.value[0] - newUser.setSexe(action.payload); - state.value.pop(); - state.value.push(newUser); + const newUser = state.currentUser; + currentUser.setSexe(action.payload) + return { + ...state, + currentUser: newUser, + } } }, }); diff --git a/bob_party/src/redux/store.ts b/bob_party/src/redux/store.ts index 2f9f420..f8ece5b 100644 --- a/bob_party/src/redux/store.ts +++ b/bob_party/src/redux/store.ts @@ -1,5 +1,6 @@ import { configureStore } from "@reduxjs/toolkit"; import currentUserReducer from "./features/currentUserSlice"; +import credentialErrorsSlice from "./features/credentialErrorsSlice"; import { getDefaultMiddleware } from '@reduxjs/toolkit'; const customizedMiddleware = getDefaultMiddleware({ @@ -8,7 +9,8 @@ const customizedMiddleware = getDefaultMiddleware({ const store = configureStore({ reducer: { - currentUser: currentUserReducer, + currentUserManager: currentUserReducer, + credentialErrors: credentialErrorsSlice, }, middleware: (getDefaultMiddleware) => customizedMiddleware, }) diff --git a/bob_party/src/screens/Chat.tsx b/bob_party/src/screens/Chat.tsx index dedaabf..3e9b1d1 100644 --- a/bob_party/src/screens/Chat.tsx +++ b/bob_party/src/screens/Chat.tsx @@ -12,7 +12,7 @@ import { RootState } from '../redux/store'; function Chat(props: { navigation: any; }) { const { navigation } = props - const currentUser = useSelector((state: RootState) => state.currentUser.value[0]); + const currentUser = useSelector((state: RootState) => state.currentUserManager.currentUser); return ( diff --git a/bob_party/src/screens/GameChoice.tsx b/bob_party/src/screens/GameChoice.tsx index ab41c9e..d2f0257 100644 --- a/bob_party/src/screens/GameChoice.tsx +++ b/bob_party/src/screens/GameChoice.tsx @@ -15,7 +15,6 @@ let tabConv:Conversation[]=[]; const msc = require('../../assets/Icons/FondGris.png'); -const UserActu=new User("14", "leBg", "MdpDeOuf", "ouioui", "grand", new Date(2022,12,12), 12222, 123324, 12, tabSkinApp[0], tabSkinApp, tabConv); const jeuTest= new GameSolo("SNAKE", require('../../assets/Icons/UnSelected/Gamepad.png'),"ouin", 1, 1,new Map); function GameChoice(props: { navigation: any; }) { const { navigation } = props diff --git a/bob_party/src/screens/Home.tsx b/bob_party/src/screens/Home.tsx index bd27d71..aa7c070 100644 --- a/bob_party/src/screens/Home.tsx +++ b/bob_party/src/screens/Home.tsx @@ -17,8 +17,6 @@ let tabConv:Conversation[]=[]; function Home(props: { navigation: any; }) { const { navigation } = props - const currentUser = useSelector((state: RootState) => state.currentUser.value[0]); - return ( state.currentUser.value)[0]; - + const currentUser = useSelector((state: RootState) => state.currentUserManager.currentUser); return ( state.currentUser.value)[0]; + const currentUser = useSelector((state: RootState) => state.currentUserManager.currentUser); const [dialogPseudoVisible, setDialogPseudoVisible] = useState(false); const [dialogPasswordVisible, setDialogPasswordVisible] = useState(false); - const [dialogNationalityVisible, setDialogNationalityVisible] = useState(false); - const [dialogSexVisible, setDialogSexVisible] = useState(false); const [selectedSex, setSelectedSex] = useState(""); const [selectedNationality, setSelectedNationality] = useState(""); @@ -50,11 +49,11 @@ function Settings(props: { navigation: any; }) { Nationalité: {currentUser.getNationality()} - setDialogNationalityVisible(true)} title='Changer la nationnalité'/> + setSelectedNationality(value)} donePress={() => dispatch(updateNationality(selectedNationality))} values={tabNat} /> Sexe: {currentUser.getSexe()} - setDialogSexVisible(true)} title='Changer le sexe'/> + setSelectedSex(value)} donePress={() => dispatch(updateSex(selectedSex))} values={tabSex} /> ID: {currentUser.getId()} @@ -78,32 +77,6 @@ function Settings(props: { navigation: any; }) { closeDialog={ () => {setDialogPasswordVisible(false)}}> - - Changer de nationalité - - setSelectedNationality(value)} - items={tabNat} - /> - - setDialogNationalityVisible(false)} /> - {dispatch(updateNationality(selectedNationality)); setDialogNationalityVisible(false)}} /> - - - - Changer de sexe - - setSelectedSex(value)} - items={tabSex} - /> - - setDialogSexVisible(false)} /> - {dispatch(updateSex(selectedSex)); setDialogSexVisible(false)}} /> - - ); } diff --git a/bob_party/src/screens/SignIn.tsx b/bob_party/src/screens/SignIn.tsx index ad7414b..ce1e681 100644 --- a/bob_party/src/screens/SignIn.tsx +++ b/bob_party/src/screens/SignIn.tsx @@ -1,13 +1,16 @@ import { StatusBar } from 'expo-status-bar' -import { View, Pressable, Text} from 'react-native' +import { View, Pressable, Text, Alert} from 'react-native' import React, { useState } from 'react'; import stylesScreen from './style/screens.style' import { TextInput } from 'react-native-gesture-handler'; -import tabUS from "../constUser"; -import styles from "./style/SignIn.style" -import { useDispatch, } from 'react-redux'; +import styles from "./style/SignIn.style"; +import { useDispatch, useSelector } from 'react-redux'; +import tabUS from '../constUser'; import { loginUser } from '../redux/features/currentUserSlice'; - +import { checkCredentials } from '../core/Auth/login'; +import { RootState } from '../redux/store'; +import { updateIncorrectCredentials } from '../redux/features/credentialErrorsSlice'; +import Dialog from "react-native-dialog"; @@ -15,34 +18,39 @@ import { loginUser } from '../redux/features/currentUserSlice'; function SignIn(props: { navigation: any; }) { const { navigation } = props + const errorList = useSelector((state: RootState) => state.credentialErrors.loginErrorList); + const [pseudo, setPseudo] = useState(''); const [password, setPassword] = useState(''); - const dispatch=useDispatch(); - function userVerif(login: string, password: string, nav: any){ - if((tabUS.map((User) => User.getUsername()).indexOf(login)) !== -1){ - let id = (tabUS.map((User) => User.getUsername()).indexOf(login)) - if ((tabUS.map((User) => User.getUsername()).indexOf(login) === id) && ( tabUS[id].getPassword() === password) ){ - dispatch(loginUser(tabUS[id])); - nav.navigate('HomeTab'); - } - } + if (errorList.incorrectCredentials){ + Alert.alert("Pseudo ou Mot de passe incorrect"); + dispatch(updateIncorrectCredentials(true)); } - + return ( setPseudo(val)} autoCapitalize='none' /> - setPassword(val)} autoCapitalize='none' /> - userVerif(pseudo, password, navigation)}> + setPassword(val)} autoCapitalize='none' secureTextEntry={true}/> + checkCredentials(pseudo, password, dispatch, navigation)}> Se connecter navigation.navigate('SignUp')}> - Pas de compte? Inscrivez vous ! + Pas de compte? Inscrivez vous ! + + Ce pseudo n'exsite pas + dispatch(updateIncorrectCredentials(false))} /> + + + Mot de passe incorrect + dispatch(updateIncorrectCredentials(false))} /> + + ); } diff --git a/bob_party/src/screens/SignUp.tsx b/bob_party/src/screens/SignUp.tsx index 69d2d66..3a14bc3 100644 --- a/bob_party/src/screens/SignUp.tsx +++ b/bob_party/src/screens/SignUp.tsx @@ -1,29 +1,142 @@ -// import { StatusBar } from 'expo-status-bar' -// import { StyleSheet, View, ImageSourcePropType, Pressable, Text} from 'react-native' -// import React from 'react'; -// import stylesScreen from './style/screens.style' -// import { TextInput } from 'react-native-gesture-handler'; -// import { ButtonGameTypeChoice } from '../components/ButtonGameTypeChoice'; - -// import styles from "./style/SignIn.style" - -// function SignUp(props: { navigation: any; }) { -// const { navigation } = props -// return ( -// -// -// -// -// -// -// -// -// -// S'inscrire -// -// -// -// ); -// } - -// export default SignUp +import { StatusBar } from 'expo-status-bar' +import { StyleSheet, View, ImageSourcePropType, Pressable, Text, Alert} from 'react-native' +import React, { useState } from 'react'; +import stylesScreen from './style/screens.style' +import { TextInput } from 'react-native-gesture-handler'; +import { ButtonGameTypeChoice } from '../components/ButtonGameTypeChoice'; +import styleScreen from "./style/screens.style"; +import styles from "./style/SignUp.style"; +import { useDispatch, useSelector } from 'react-redux'; +import { checkNewUserValidity } from '../core/Auth/newUser'; +import DateTimePicker, { DateTimePickerEvent } from '@react-native-community/datetimepicker'; +import RNPickerSelect from "react-native-picker-select"; +import tabSex from '../constSex'; +import tabNat from '../constNat'; +import { PickerGreySmall } from '../components/PickerGreySmall'; +import { loginUser } from '../redux/features/currentUserSlice'; +import { RootState } from '../redux/store'; +import { updateImpossibleBirthDate, updateInvalidPassword, updateInvalidPseudo, updateTooLongPseudo, updateTooShortPassword, updateUndefinedBirthDate, updateUndefinedNationality, updateUndefinedPassword, updateUndefinedPseudo, updateUndefinedSex } from '../redux/features/credentialErrorsSlice'; +import { getSystemErrorMap } from 'util'; +import RNDateTimePicker from '@react-native-community/datetimepicker'; + +function SignUp(props: { navigation: any; }) { + const { navigation } = props + + const [pseudo, setPseudo] = useState(''); + const [password, setPassword] = useState(''); + const [date, setDate] = useState(new Date()) + + + function onDateSelected(event : DateTimePickerEvent, value : Date | undefined) { + console.log(value); + if (value != undefined) { + setDate(value); + } + } + + const [selectedSex, setSelectedSex] = useState(''); + const [selectedNationality, setSelectedNationality] = useState('') + + const errorList = useSelector((state: RootState) => state.credentialErrors.newUserErrorList); + + + const dispatch=useDispatch(); + + switch(true){ + case (errorList.undefinedPseudo): + Alert.alert("Veuillez définir un pseudo"); + dispatch(updateUndefinedPseudo(false)); + break; + + case (errorList.undefinedPassword): + Alert.alert("Veuillez définir un mot de passe"); + dispatch(updateUndefinedPassword(false)); + break; + + case (errorList.undefinedBirthDate): + Alert.alert("Veuillez définir une date de naissance"); + dispatch(updateUndefinedBirthDate(false)); + break; + + case (errorList.undefinedNationality): + Alert.alert("Veuillez définir une nationalité"); + dispatch(updateUndefinedNationality(false)) + break; + + case (errorList.undefinedSex): + Alert.alert("Veuillez définir un sexe"); + dispatch(updateUndefinedSex(false)); + break; + + case (errorList.tooLongPseudo): + Alert.alert("Votre pseudo ne doit pas dépasser 22 caractères"); + dispatch(updateTooLongPseudo(false)); + break; + + case (errorList.invalidPseudo): + Alert.alert("Votre pseudo doit contenir uniquement des lettres des chiffres et des - ou _"); + dispatch(updateInvalidPseudo(false)); + break; + + //ALREADY USED PSEUDO + + case (errorList.tooShortPassword): + Alert.alert("Votre mot de passe doit faire au moins 8 caractères"); + dispatch(updateTooShortPassword(false)); + break; + + case (errorList.invalidPassword): + Alert.alert("Votre pseudo doit contenir au moins une majuscule, une majuscule, un chiffre et un caractère spécial (#?!@$%^&*-)"); + dispatch(updateInvalidPassword(false)); + break; + + case (errorList.impossibleBirthDate): + Alert.alert("Vous devez avoir au moins 13 ans"); + dispatch(updateImpossibleBirthDate(false)); + break; + } + + return ( + + + + + Login + setPseudo(val)} autoCapitalize='none' /> + + + + Password + setPassword(val)} autoCapitalize='none' /> + + + + + Date de naissance + + onDateSelected(event, value)} mode='date' value={date} themeVariant='dark'/> + + + + + Nationalité + + setSelectedNationality(value)} values={tabNat} /> + + + + Sexe + setSelectedSex(value)} values={tabSex} /> + + checkNewUserValidity(pseudo,password,date,selectedNationality,selectedSex, dispatch, navigation)}> + S'inscrire + + navigation.navigate('SignIn')}> + J'ai déjà un compte + + + + ); +} + +export default SignUp diff --git a/bob_party/src/screens/SkinList.tsx b/bob_party/src/screens/SkinList.tsx index 94b5faa..d7d8d00 100644 --- a/bob_party/src/screens/SkinList.tsx +++ b/bob_party/src/screens/SkinList.tsx @@ -16,8 +16,6 @@ import { RootState } from '../redux/store'; function SkinList(props: { navigation: any; }) { const { navigation } = props - const currentUser = useSelector((state: RootState) => state.currentUser.value[0]); - return ( state.currentUser.value[0]); + const currentUser = useSelector((state: RootState) => state.currentUserManager.currentUser); return ( diff --git a/bob_party/yarn.lock b/bob_party/yarn.lock index c806614..fe5d035 100644 --- a/bob_party/yarn.lock +++ b/bob_party/yarn.lock @@ -3,36 +3,43 @@ "@ampproject/remapping@^2.1.0": - version "2.2.0" - resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + "integrity" "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" + "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" + "version" "2.2.0" dependencies: "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@7.10.4", "@babel/code-frame@~7.10.4": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": + "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/code-frame@~7.10.4": + "integrity" "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz" + "version" "7.10.4" dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== +"@babel/code-frame@7.10.4": + "integrity" "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz" + "version" "7.10.4" dependencies: - "@babel/highlight" "^7.18.6" + "@babel/highlight" "^7.10.4" "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.19.3", "@babel/compat-data@^7.19.4": "integrity" "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==" "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz" "version" "7.19.4" -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.12.9", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.7.5": - version "7.19.3" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz" - integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.1.0", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.12.9", "@babel/core@^7.13.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.4.0-0", "@babel/core@^7.7.5": + "integrity" "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==" + "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz" + "version" "7.19.3" dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" @@ -44,11 +51,11 @@ "@babel/template" "^7.18.10" "@babel/traverse" "^7.19.3" "@babel/types" "^7.19.3" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" + "convert-source-map" "^1.7.0" + "debug" "^4.1.0" + "gensync" "^1.0.0-beta.2" + "json5" "^2.2.1" + "semver" "^6.3.0" "@babel/generator@^7.14.0", "@babel/generator@^7.19.3", "@babel/generator@^7.19.4": "integrity" "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==" @@ -1483,12 +1490,12 @@ "@types/node" "*" "jest-mock" "^26.6.2" -"@jest/expect-utils@^29.1.2": - "integrity" "sha512-4a48bhKfGj/KAH39u0ppzNTABXQ8QPccWAFUFobWBaEMSMp+sB31Z2fK/l47c4a/Mu1po2ffmfAIPxXbVTXdtg==" - "resolved" "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.1.2.tgz" - "version" "29.1.2" +"@jest/expect-utils@^29.2.2": + "integrity" "sha512-vwnVmrVhTmGgQzyvcpze08br91OL61t9O0lJMDyb6Y/D8EKQ9V7rGUb/p7PDt0GPzK0zFYqXWFo4EO2legXmkg==" + "resolved" "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.2.2.tgz" + "version" "29.2.2" dependencies: - "jest-get-type" "^29.0.0" + "jest-get-type" "^29.2.0" "@jest/fake-timers@^26.6.2": "integrity" "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==" @@ -1623,10 +1630,10 @@ "@types/yargs" "^16.0.0" "chalk" "^4.0.0" -"@jest/types@^29.1.2": - "integrity" "sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-29.1.2.tgz" - "version" "29.1.2" +"@jest/types@^29.2.1": + "integrity" "sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw==" + "resolved" "https://registry.npmjs.org/@jest/types/-/types-29.2.1.tgz" + "version" "29.2.1" dependencies: "@jest/schemas" "^29.0.0" "@types/istanbul-lib-coverage" "^2.0.0" @@ -1882,16 +1889,18 @@ "prompts" "^2.4.0" "semver" "^6.3.0" +"@react-native-community/datetimepicker@6.2.0": + "integrity" "sha512-w1ZS+wYO3qSASliRp+B7mPphOhtVm++rhSbj1WsgXdgLgDXSkDxpMnAXXQu9M0XdcgBwVJ6wDExeIwuzU5Jtfg==" + "resolved" "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "invariant" "^2.2.4" + "@react-native-picker/picker@^1.8.3": "integrity" "sha512-pacdQDX6V6EmjF+HoiIh6u++qx4mTK0WnhgUHRc01B+Qt5eoeUwseBqmqfTSXTx/aHDEd6PiIw7UGvKgFoqgFQ==" "resolved" "https://registry.npmjs.org/@react-native-picker/picker/-/picker-1.16.8.tgz" "version" "1.16.8" -"@react-native-picker/picker@^2.4.8": - "integrity" "sha512-5NQ5XPo1B03YNqKFrV6h9L3CQaHlB80wd4ETHUEABRP2iLh7FHLVObX2GfziD+K/VJb8G4KZcZ23NFBFP1f7bg==" - "resolved" "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.4.8.tgz" - "version" "2.4.8" - "@react-native/assets@1.0.0": "integrity" "sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==" "resolved" "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz" @@ -2197,9 +2206,9 @@ "wonka" "^4.0.14" "@xmldom/xmldom@~0.7.0": - "integrity" "sha512-HHXP9hskkFQHy8QxxUXkS7946FFIhYVfGqsk0WLwllmexN9x/+R4UBLvurHEuyXRfVEObVR8APuQehykLviwSQ==" - "resolved" "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.6.tgz" - "version" "0.7.6" + "integrity" "sha512-PrJx38EfpitFhwmILRl37jAdBlsww6AZ6rRVK4QS7T7RHLhX7mSs647sTmgr9GIxe3qjXdesmomEgbgaokrVFg==" + "resolved" "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.8.tgz" + "version" "0.7.8" "abab@^2.0.3", "abab@^2.0.5": "integrity" "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" @@ -2245,9 +2254,9 @@ "version" "7.4.1" "acorn@^8.2.4": - "integrity" "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz" - "version" "8.8.0" + "integrity" "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz" + "version" "8.8.1" "agent-base@6": "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" @@ -2674,14 +2683,7 @@ dependencies: "stream-buffers" "2.2.x" -"bplist-parser@^0.3.1": - "integrity" "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==" - "resolved" "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz" - "version" "0.3.2" - dependencies: - "big-integer" "1.6.x" - -"bplist-parser@0.3.1": +"bplist-parser@^0.3.1", "bplist-parser@0.3.1": "integrity" "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==" "resolved" "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz" "version" "0.3.1" @@ -2915,7 +2917,7 @@ "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" "version" "1.0.2" -"charenc@~0.0.1", "charenc@0.0.2": +"charenc@~0.0.1": "integrity" "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" "resolved" "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" "version" "0.0.2" @@ -3224,7 +3226,7 @@ "shebang-command" "^2.0.0" "which" "^2.0.1" -"crypt@~0.0.1", "crypt@0.0.2": +"crypt@~0.0.1": "integrity" "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" "resolved" "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" "version" "0.0.2" @@ -3457,10 +3459,10 @@ "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz" "version" "26.6.2" -"diff-sequences@^29.0.0": - "integrity" "sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.0.0.tgz" - "version" "29.0.0" +"diff-sequences@^29.2.0": + "integrity" "sha512-413SY5JpYeSBZxmenGEmCVQ8mCgtFJF0w9PROdaS6z987XC2Pd2GOKqOITLtMftmyFZqgtCOb/QA7/Z3ZXfzIw==" + "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.2.0.tgz" + "version" "29.2.0" "dir-glob@^3.0.1": "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" @@ -3676,15 +3678,15 @@ "jest-regex-util" "^26.0.0" "expect@^29.0.0": - "integrity" "sha512-AuAGn1uxva5YBbBlXb+2JPxJRuemZsmlGcapPXWNSBNsQtAULfjioREGBWuI0EOvYUKjDnrCy8PW5Zlr1md5mw==" - "resolved" "https://registry.npmjs.org/expect/-/expect-29.1.2.tgz" - "version" "29.1.2" + "integrity" "sha512-hE09QerxZ5wXiOhqkXy5d2G9ar+EqOyifnCXCpMNu+vZ6DG9TJ6CO2c2kPDSLqERTTWrO7OZj8EkYHQqSd78Yw==" + "resolved" "https://registry.npmjs.org/expect/-/expect-29.2.2.tgz" + "version" "29.2.2" dependencies: - "@jest/expect-utils" "^29.1.2" - "jest-get-type" "^29.0.0" - "jest-matcher-utils" "^29.1.2" - "jest-message-util" "^29.1.2" - "jest-util" "^29.1.2" + "@jest/expect-utils" "^29.2.2" + "jest-get-type" "^29.2.0" + "jest-matcher-utils" "^29.2.2" + "jest-message-util" "^29.2.1" + "jest-util" "^29.2.1" "expo-application@~4.2.2": "integrity" "sha512-bFEaFRUdV6aK2iBd+HzkHNPYsyj88EAhaQW5leznmO0qQMJxpAQ3eoUXMey1hfDBh1qgkkHgSyCZ9BIgMAGJ1g==" @@ -4517,7 +4519,7 @@ "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" "version" "0.3.2" -"is-buffer@^1.1.5", "is-buffer@~1.1.1", "is-buffer@~1.1.6": +"is-buffer@^1.1.5", "is-buffer@~1.1.1": "integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" "version" "1.1.6" @@ -4865,15 +4867,15 @@ "jest-get-type" "^26.3.0" "pretty-format" "^26.6.2" -"jest-diff@^29.1.2": - "integrity" "sha512-4GQts0aUopVvecIT4IwD/7xsBaMhKTYoM4/njE/aVw9wpw+pIUVp8Vab/KnSzSilr84GnLBkaP3JLDnQYCKqVQ==" - "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-29.1.2.tgz" - "version" "29.1.2" +"jest-diff@^29.2.1": + "integrity" "sha512-gfh/SMNlQmP3MOUgdzxPOd4XETDJifADpT937fN1iUGz+9DgOu2eUPHH25JDkLVcLwwqxv3GzVyK4VBUr9fjfA==" + "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-29.2.1.tgz" + "version" "29.2.1" dependencies: "chalk" "^4.0.0" - "diff-sequences" "^29.0.0" - "jest-get-type" "^29.0.0" - "pretty-format" "^29.1.2" + "diff-sequences" "^29.2.0" + "jest-get-type" "^29.2.0" + "pretty-format" "^29.2.1" "jest-docblock@^26.0.0": "integrity" "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==" @@ -4923,10 +4925,10 @@ "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz" "version" "26.3.0" -"jest-get-type@^29.0.0": - "integrity" "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz" - "version" "29.0.0" +"jest-get-type@^29.2.0": + "integrity" "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==" + "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz" + "version" "29.2.0" "jest-haste-map@^26.6.2": "integrity" "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==" @@ -5011,15 +5013,15 @@ "jest-get-type" "^26.3.0" "pretty-format" "^26.6.2" -"jest-matcher-utils@^29.1.2": - "integrity" "sha512-MV5XrD3qYSW2zZSHRRceFzqJ39B2z11Qv0KPyZYxnzDHFeYZGJlgGi0SW+IXSJfOewgJp/Km/7lpcFT+cgZypw==" - "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.1.2.tgz" - "version" "29.1.2" +"jest-matcher-utils@^29.2.2": + "integrity" "sha512-4DkJ1sDPT+UX2MR7Y3od6KtvRi9Im1ZGLGgdLFLm4lPexbTaCgJW5NN3IOXlQHF7NSHY/VHhflQ+WoKtD/vyCw==" + "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.2.2.tgz" + "version" "29.2.2" dependencies: "chalk" "^4.0.0" - "jest-diff" "^29.1.2" - "jest-get-type" "^29.0.0" - "pretty-format" "^29.1.2" + "jest-diff" "^29.2.1" + "jest-get-type" "^29.2.0" + "pretty-format" "^29.2.1" "jest-message-util@^26.6.2": "integrity" "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==" @@ -5036,18 +5038,18 @@ "slash" "^3.0.0" "stack-utils" "^2.0.2" -"jest-message-util@^29.1.2": - "integrity" "sha512-9oJ2Os+Qh6IlxLpmvshVbGUiSkZVc2FK+uGOm6tghafnB2RyjKAxMZhtxThRMxfX1J1SOMhTn9oK3/MutRWQJQ==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.1.2.tgz" - "version" "29.1.2" +"jest-message-util@^29.2.1": + "integrity" "sha512-Dx5nEjw9V8C1/Yj10S/8ivA8F439VS8vTq1L7hEgwHFn9ovSKNpYW/kwNh7UglaEgXO42XxzKJB+2x0nSglFVw==" + "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.2.1.tgz" + "version" "29.2.1" dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.1.2" + "@jest/types" "^29.2.1" "@types/stack-utils" "^2.0.0" "chalk" "^4.0.0" "graceful-fs" "^4.2.9" "micromatch" "^4.0.4" - "pretty-format" "^29.1.2" + "pretty-format" "^29.2.1" "slash" "^3.0.0" "stack-utils" "^2.0.3" @@ -5218,12 +5220,12 @@ "graceful-fs" "^4.2.9" "picomatch" "^2.2.3" -"jest-util@^29.1.2": - "integrity" "sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-29.1.2.tgz" - "version" "29.1.2" +"jest-util@^29.2.1": + "integrity" "sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g==" + "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-29.2.1.tgz" + "version" "29.2.1" dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.2.1" "@types/node" "*" "chalk" "^4.0.0" "ci-info" "^3.2.0" @@ -5647,16 +5649,7 @@ dependencies: "buffer-alloc" "^1.1.0" -"md5@^2.2.1": - "integrity" "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==" - "resolved" "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "charenc" "0.0.2" - "crypt" "0.0.2" - "is-buffer" "~1.1.6" - -"md5@~2.2.0": +"md5@^2.2.1", "md5@~2.2.0": "integrity" "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==" "resolved" "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz" "version" "2.2.1" @@ -6703,18 +6696,18 @@ "react-is" "^17.0.1" "pretty-format@^29.0.0": - "integrity" "sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-29.1.2.tgz" - "version" "29.1.2" + "integrity" "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==" + "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz" + "version" "29.2.1" dependencies: "@jest/schemas" "^29.0.0" "ansi-styles" "^5.0.0" "react-is" "^18.0.0" -"pretty-format@^29.1.2": - "integrity" "sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-29.1.2.tgz" - "version" "29.1.2" +"pretty-format@^29.2.1": + "integrity" "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==" + "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz" + "version" "29.2.1" dependencies: "@jest/schemas" "^29.0.0" "ansi-styles" "^5.0.0" @@ -6743,9 +6736,9 @@ "asap" "~2.0.3" "promise@^8.2.0": - "integrity" "sha512-+CMAlLHqwRYwBMXKCP+o8ns7DN+xHDUiI+0nArsiJ9y+kJVPLFxEaSw6Ha9s9H0tftxg2Yzl25wqj9G7m5wLZg==" - "resolved" "https://registry.npmjs.org/promise/-/promise-8.2.0.tgz" - "version" "8.2.0" + "integrity" "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==" + "resolved" "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" + "version" "8.3.0" dependencies: "asap" "~2.0.6" @@ -6757,7 +6750,7 @@ "kleur" "^3.0.3" "sisteransi" "^1.0.5" -"prop-types@^15.7.2": +"prop-types@^15.7.2", "prop-types@^15.8.1": "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" "version" "15.8.1" @@ -6895,6 +6888,13 @@ "jscodeshift" "^0.13.1" "nullthrows" "^1.1.1" +"react-native-date-picker@^4.2.5": + "integrity" "sha512-YjwiMpZEnVVS+ymLvmJDicVZ3pSR+nJHgtAhctMl6fO8f7iRNcYhY427gemlTBf2Ji+XIAK0Agyl255DhaemFw==" + "resolved" "https://registry.npmjs.org/react-native-date-picker/-/react-native-date-picker-4.2.5.tgz" + "version" "4.2.5" + dependencies: + "prop-types" "^15.8.1" + "react-native-dialog-input@^1.0.8": "integrity" "sha512-W9YNMt6r+rUUMDEkOR1WMuGfSJw97ujB8H1xp8TjJTOnYVSlsf4aEP6t+J8tVk3XZaDcTawXgDjxH6E1WVWRog==" "resolved" "https://registry.npmjs.org/react-native-dialog-input/-/react-native-dialog-input-1.0.8.tgz" @@ -7019,7 +7019,7 @@ "object-assign" "^4.1.1" "react-is" "^16.12.0 || ^17.0.0 || ^18.0.0" -"react@*", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8 || ^17.0 || ^18.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18", "react@^17.0.2 || ^18.0.0", "react@^18.0.0", "react@>=16", "react@>=17.0.0", "react@18.0.0": +"react@*", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8 || ^17.0 || ^18.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18", "react@^17.0.2 || ^18.0.0", "react@^18.0.0", "react@>=17.0.0", "react@18.0.0": "integrity" "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==" "resolved" "https://registry.npmjs.org/react/-/react-18.0.0.tgz" "version" "18.0.0" @@ -7276,10 +7276,10 @@ "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" "version" "1.0.4" -"rimraf@^2.5.4", "rimraf@^2.6.2": - "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - "version" "2.7.1" +"rimraf@^2.5.4", "rimraf@^2.6.2", "rimraf@~2.6.2": + "integrity" "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + "version" "2.6.3" dependencies: "glob" "^7.1.3" @@ -7309,13 +7309,6 @@ dependencies: "glob" "^6.0.1" -"rimraf@~2.6.2": - "integrity" "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" - "version" "2.6.3" - dependencies: - "glob" "^7.1.3" - "rsvp@^4.8.4": "integrity" "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" "resolved" "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz" @@ -8112,14 +8105,14 @@ "version" "1.14.1" "tslib@^2.0.1": - "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" - "version" "2.4.0" + "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" + "version" "2.4.1" "tslib@^2.1.0": - "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" - "version" "2.4.0" + "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" + "version" "2.4.1" "type-check@~0.3.2": "integrity" "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==" diff --git a/create.sql b/create.sql deleted file mode 100644 index 398fa4b..0000000 --- a/create.sql +++ /dev/null @@ -1,108 +0,0 @@ -#Drop all the tables - -DROP TABLE Battle; -DROP TABLE Own; -DROP TABLE Message; -DROP TABLE Belong; -DROP TABLE ConvGroup; -DROP TABLE User; -DROP TABLE Skin; -DROP TABLE Game; - - - - -#Create the User table - -CREATE TABLE User ( - ID char(5) PRIMARY KEY, - Username varchar(20) NOT NULL, - Password varchar(20) NOT NULL, - Nationality varchar(20) NOT NULL, - Sex char(1) NOT NULL, - DateOfBirth date NOT NULL, - CurrentBobCoins bigint(255) DEFAULT 0, - TotalBobCoins bigint(255) DEFAULT 0, - NbGamePlayed bigint(255) DEFAULT 0 -); - - - -#Create the Skin table - -CREATE TABLE Skin ( - ID char(5) PRIMARY KEY, - Name varchar(20) UNIQUE NOT NULL, - Image varchar(20) UNIQUE NOT NULL -); - - - -#Create the Own table - -CREATE TABLE Own ( - IDSkin char(5), - IDUser char(5), - CONSTRAINT FK_Skin FOREIGN KEY (IDSkin) REFERENCES User(ID), - CONSTRAINT FK_User FOREIGN KEY (IDUser) REFERENCES Skin(ID), - PRIMARY KEY (IDUser, IDSkin) -); - - - -#Create the Game table - -CREATE TABLE Game ( - ID char(5) PRIMARY KEY, - Name varchar(20) UNIQUE NOT NULL -); - - - -#Create the Match table - -CREATE TABLE Battle ( - ID char(5) PRIMARY KEY, - Winner char(5) NOT NULL, - Loser char(5) NOT NULL, - Game char(5) NOT NULL, - CONSTRAINT Fk_Winner FOREIGN KEY (Winner) REFERENCES User(ID), - CONSTRAINT Fk_Loser FOREIGN KEY (Loser) REFERENCES User(ID), - CONSTRAINT Fk_Game FOREIGN KEY (Game) REFERENCES Game(ID) -); - - - -#Create the Group table - -CREATE TABLE ConvGroup ( - ID char(5) PRIMARY KEY, - Name varchar(20) NOT NULL -); - - - -#Create the Message table - -CREATE TABLE Message ( - ID char(5) PRIMARY KEY, - Message text NOT NULL, - IDSender char(5) NOT NULL, - IDUserReceiver char(5), - IDGroupReceiver char(5), - CONSTRAINT Fk_Sender FOREIGN KEY (IDSender) REFERENCES User(ID), - CONSTRAINT Fk_UsRec FOREIGN KEY (IDUserReceiver) REFERENCES User(ID), - CONSTRAINT Fk_GrRec FOREIGN KEY (IDGroupReceiver) REFERENCES ConvGroup(ID) -); - - - -#Create the Belong Table - -CREATE TABLE Belong ( - IDUser char(5), - IDGroup char(5), - CONSTRAINT Fk_UserID FOREIGN KEY (IDUser) REFERENCES User(ID), - CONSTRAINT Fk_Group FOREIGN KEY (IDGroup) REFERENCES ConvGroup(ID), - PRIMARY KEY (IDUser, IDGroup) -); \ No newline at end of file