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 0000000..651da3e Binary files /dev/null and b/bob_party/assets/BobsSkins/unlogged.png differ diff --git a/bob_party/package-lock.json b/bob_party/package-lock.json index 82b9d8b..4ae54bb 100644 --- a/bob_party/package-lock.json +++ b/bob_party/package-lock.json @@ -8,7 +8,7 @@ "name": "bob_party", "version": "1.0.0", "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", @@ -20,6 +20,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", @@ -3533,21 +3534,21 @@ } }, "node_modules/@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, "dependencies": { - "jest-get-type": "^29.0.0" + "jest-get-type": "^29.2.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=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