diff --git a/R-Dash/package-lock.json b/R-Dash/package-lock.json index cd790fa..c7f4d34 100644 --- a/R-Dash/package-lock.json +++ b/R-Dash/package-lock.json @@ -12,6 +12,7 @@ "@react-navigation/bottom-tabs": "^6.5.5", "@react-navigation/native": "^6.1.6", "@react-navigation/stack": "^6.3.16", + "@reduxjs/toolkit": "^1.9.3", "@rneui/base": "^4.0.0-rc.7", "expo": "~48.0.6", "expo-document-picker": "~11.2.1", @@ -23,6 +24,8 @@ "react-native-gesture-handler": "^2.9.0", "react-native-maps": "1.3.2", "react-native-safe-area-context": "^4.5.0", + "react-redux": "^8.0.5", + "redux": "^4.2.1", "typescript": "^4.9.4" }, "devDependencies": { @@ -5091,6 +5094,29 @@ "react-native-screens": ">= 3.0.0" } }, + "node_modules/@reduxjs/toolkit": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.3.tgz", + "integrity": "sha512-GU2TNBQVofL09VGmuSioNPQIu6Ml0YLf4EJhgj0AvBadRlCGzUWet8372LjvO4fqKZF2vH1xU0htAa7BrK9pZg==", + "dependencies": { + "immer": "^9.0.16", + "redux": "^4.2.0", + "redux-thunk": "^2.4.2", + "reselect": "^4.1.7" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.0.2" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, "node_modules/@rneui/base": { "version": "4.0.0-rc.7", "resolved": "https://registry.npmjs.org/@rneui/base/-/base-4.0.0-rc.7.tgz", @@ -5338,6 +5364,15 @@ "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==" }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -5415,6 +5450,11 @@ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, "node_modules/@types/yargs": { "version": "15.0.15", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", @@ -5780,9 +5820,9 @@ "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==" }, "node_modules/babel-preset-expo": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.3.0.tgz", - "integrity": "sha512-cIz+5TVBkcZgtfpTyFPo1peswr2dvQj2VIwdj5vY37/zESsYBHfaZ+u/A11yb1WnuZHcYD/ZoSLNwmWr20jp4Q==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.3.1.tgz", + "integrity": "sha512-1JL4T7q3uXu9FeJhLXDAKhFbWs75Qj2pixA60eR2ROzE9LnrKxm2g42OfcArS4vJcPj2NzcOdPpMI9/ZgF8i8Q==", "dependencies": { "@babel/plugin-proposal-decorators": "^7.12.9", "@babel/plugin-proposal-object-rest-spread": "^7.12.13", @@ -5790,7 +5830,55 @@ "@babel/preset-env": "^7.20.0", "babel-plugin-module-resolver": "^4.1.0", "babel-plugin-react-native-web": "~0.18.10", - "metro-react-native-babel-preset": "0.73.7" + "metro-react-native-babel-preset": "0.73.8" + } + }, + "node_modules/babel-preset-expo/node_modules/metro-react-native-babel-preset": { + "version": "0.73.8", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.73.8.tgz", + "integrity": "sha512-spNrcQJTbQntEIqJnCA6yL4S+dzV9fXCk7U+Rm7yJasZ4o4Frn7jP23isu7FlZIp1Azx1+6SbP7SgQM+IP5JgQ==", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "react-refresh": "^0.4.0" + }, + "peerDependencies": { + "@babel/core": "*" } }, "node_modules/babel-preset-fbjs": { @@ -7319,16 +7407,16 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/expo": { - "version": "48.0.7", - "resolved": "https://registry.npmjs.org/expo/-/expo-48.0.7.tgz", - "integrity": "sha512-4sPW+HWm03z72FKIG9IddwEhF9+RlAUsTh8pnsoZjZbXALVikmV3QjD4zp/Dkt9YuiCAnJN1VBaT2AlhbYk2Rg==", + "version": "48.0.9", + "resolved": "https://registry.npmjs.org/expo/-/expo-48.0.9.tgz", + "integrity": "sha512-RlYpJSny4g3G2sqAfx1taaT7QFEw2cIfYLlZWmguA6EQSCviaeaQU1m4tvVXU1jIXb/w8jqer18XIq56VuECfg==", "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "0.6.2", "@expo/config": "8.0.2", "@expo/config-plugins": "6.0.1", "@expo/vector-icons": "^13.0.0", - "babel-preset-expo": "~9.3.0", + "babel-preset-expo": "~9.3.1", "cross-spawn": "^6.0.5", "expo-application": "~5.1.1", "expo-asset": "~8.9.1", @@ -7337,7 +7425,7 @@ "expo-font": "~11.1.1", "expo-keep-awake": "~12.0.1", "expo-modules-autolinking": "1.1.2", - "expo-modules-core": "1.2.5", + "expo-modules-core": "1.2.6", "fbemitter": "^3.0.0", "getenv": "^1.0.0", "invariant": "^2.2.4", @@ -7535,9 +7623,9 @@ } }, "node_modules/expo-modules-core": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.2.5.tgz", - "integrity": "sha512-5pXNlLHNKLayOusAFMbqr27gjgymHuKuWl/Dtbw2MjoyJY1MZCGD2nIJxd1TTcfnyxNxLg6OQmgkyqoBUFqBuw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.2.6.tgz", + "integrity": "sha512-vyleKepkP8F6L+D55B/E4FbZ8x9pdy3yw/mdbGBkDkrmo2gmeMjOM1mKLSszOkLIqet05O7Wy8m0FZHZTo0VBg==", "dependencies": { "compare-versions": "^3.4.0", "invariant": "^2.2.4" @@ -8324,6 +8412,15 @@ "node": ">=4.0" } }, + "node_modules/immer": { + "version": "9.0.19", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.19.tgz", + "integrity": "sha512-eY+Y0qcsB4TZKwgQzLaE/lqYMlKhv5J9dyd2RhhtGhNo2njPXDqU9XPfcNfa3MIDsdtZt5KlkIsirlo4dHsWdQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", @@ -12293,6 +12390,49 @@ "asap": "~2.0.6" } }, + "node_modules/react-redux": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz", + "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==", + "dependencies": { + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/use-sync-external-store": "^0.0.3", + "hoist-non-react-statics": "^3.3.2", + "react-is": "^18.0.0", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^16.8 || ^17.0 || ^18.0", + "@types/react-dom": "^16.8 || ^17.0 || ^18.0", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0", + "react-native": ">=0.59", + "redux": "^4" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-redux/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, "node_modules/react-refresh": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", @@ -12354,6 +12494,22 @@ "node": ">=0.10.0" } }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/redux-thunk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", + "peerDependencies": { + "redux": "^4" + } + }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -18184,6 +18340,17 @@ "warn-once": "^0.1.0" } }, + "@reduxjs/toolkit": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.3.tgz", + "integrity": "sha512-GU2TNBQVofL09VGmuSioNPQIu6Ml0YLf4EJhgj0AvBadRlCGzUWet8372LjvO4fqKZF2vH1xU0htAa7BrK9pZg==", + "requires": { + "immer": "^9.0.16", + "redux": "^4.2.0", + "redux-thunk": "^2.4.2", + "reselect": "^4.1.7" + } + }, "@rneui/base": { "version": "4.0.0-rc.7", "resolved": "https://registry.npmjs.org/@rneui/base/-/base-4.0.0-rc.7.tgz", @@ -18386,6 +18553,15 @@ "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==" }, + "@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "requires": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -18463,6 +18639,11 @@ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" }, + "@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, "@types/yargs": { "version": "15.0.15", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", @@ -18742,9 +18923,9 @@ "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==" }, "babel-preset-expo": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.3.0.tgz", - "integrity": "sha512-cIz+5TVBkcZgtfpTyFPo1peswr2dvQj2VIwdj5vY37/zESsYBHfaZ+u/A11yb1WnuZHcYD/ZoSLNwmWr20jp4Q==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.3.1.tgz", + "integrity": "sha512-1JL4T7q3uXu9FeJhLXDAKhFbWs75Qj2pixA60eR2ROzE9LnrKxm2g42OfcArS4vJcPj2NzcOdPpMI9/ZgF8i8Q==", "requires": { "@babel/plugin-proposal-decorators": "^7.12.9", "@babel/plugin-proposal-object-rest-spread": "^7.12.13", @@ -18752,7 +18933,54 @@ "@babel/preset-env": "^7.20.0", "babel-plugin-module-resolver": "^4.1.0", "babel-plugin-react-native-web": "~0.18.10", - "metro-react-native-babel-preset": "0.73.7" + "metro-react-native-babel-preset": "0.73.8" + }, + "dependencies": { + "metro-react-native-babel-preset": { + "version": "0.73.8", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.73.8.tgz", + "integrity": "sha512-spNrcQJTbQntEIqJnCA6yL4S+dzV9fXCk7U+Rm7yJasZ4o4Frn7jP23isu7FlZIp1Azx1+6SbP7SgQM+IP5JgQ==", + "requires": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "react-refresh": "^0.4.0" + } + } } }, "babel-preset-fbjs": { @@ -19925,16 +20153,16 @@ } }, "expo": { - "version": "48.0.7", - "resolved": "https://registry.npmjs.org/expo/-/expo-48.0.7.tgz", - "integrity": "sha512-4sPW+HWm03z72FKIG9IddwEhF9+RlAUsTh8pnsoZjZbXALVikmV3QjD4zp/Dkt9YuiCAnJN1VBaT2AlhbYk2Rg==", + "version": "48.0.9", + "resolved": "https://registry.npmjs.org/expo/-/expo-48.0.9.tgz", + "integrity": "sha512-RlYpJSny4g3G2sqAfx1taaT7QFEw2cIfYLlZWmguA6EQSCviaeaQU1m4tvVXU1jIXb/w8jqer18XIq56VuECfg==", "requires": { "@babel/runtime": "^7.20.0", "@expo/cli": "0.6.2", "@expo/config": "8.0.2", "@expo/config-plugins": "6.0.1", "@expo/vector-icons": "^13.0.0", - "babel-preset-expo": "~9.3.0", + "babel-preset-expo": "~9.3.1", "cross-spawn": "^6.0.5", "expo-application": "~5.1.1", "expo-asset": "~8.9.1", @@ -19943,7 +20171,7 @@ "expo-font": "~11.1.1", "expo-keep-awake": "~12.0.1", "expo-modules-autolinking": "1.1.2", - "expo-modules-core": "1.2.5", + "expo-modules-core": "1.2.6", "fbemitter": "^3.0.0", "getenv": "^1.0.0", "invariant": "^2.2.4", @@ -20093,9 +20321,9 @@ } }, "expo-modules-core": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.2.5.tgz", - "integrity": "sha512-5pXNlLHNKLayOusAFMbqr27gjgymHuKuWl/Dtbw2MjoyJY1MZCGD2nIJxd1TTcfnyxNxLg6OQmgkyqoBUFqBuw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.2.6.tgz", + "integrity": "sha512-vyleKepkP8F6L+D55B/E4FbZ8x9pdy3yw/mdbGBkDkrmo2gmeMjOM1mKLSszOkLIqet05O7Wy8m0FZHZTo0VBg==", "requires": { "compare-versions": "^3.4.0", "invariant": "^2.2.4" @@ -20697,6 +20925,11 @@ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz", "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==" }, + "immer": { + "version": "9.0.19", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.19.tgz", + "integrity": "sha512-eY+Y0qcsB4TZKwgQzLaE/lqYMlKhv5J9dyd2RhhtGhNo2njPXDqU9XPfcNfa3MIDsdtZt5KlkIsirlo4dHsWdQ==" + }, "import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", @@ -23759,6 +23992,26 @@ } } }, + "react-redux": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz", + "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==", + "requires": { + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/use-sync-external-store": "^0.0.3", + "hoist-non-react-statics": "^3.3.2", + "react-is": "^18.0.0", + "use-sync-external-store": "^1.0.0" + }, + "dependencies": { + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + } + } + }, "react-refresh": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", @@ -23810,6 +24063,20 @@ } } }, + "redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "requires": { + "@babel/runtime": "^7.9.2" + } + }, + "redux-thunk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", + "requires": {} + }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", diff --git a/R-Dash/package.json b/R-Dash/package.json index 3fe64e8..3d0c40f 100644 --- a/R-Dash/package.json +++ b/R-Dash/package.json @@ -13,6 +13,7 @@ "@react-navigation/bottom-tabs": "^6.5.5", "@react-navigation/native": "^6.1.6", "@react-navigation/stack": "^6.3.16", + "@reduxjs/toolkit": "^1.9.3", "@rneui/base": "^4.0.0-rc.7", "expo": "~48.0.6", "expo-document-picker": "~11.2.1", @@ -24,6 +25,8 @@ "react-native-gesture-handler": "^2.9.0", "react-native-maps": "1.3.2", "react-native-safe-area-context": "^4.5.0", + "react-redux": "^8.0.5", + "redux": "^4.2.1", "typescript": "^4.9.4" }, "devDependencies": { diff --git a/R-Dash/redux/Constants.ts b/R-Dash/redux/Constants.ts new file mode 100644 index 0000000..e69de29 diff --git a/R-Dash/redux/Store.ts b/R-Dash/redux/Store.ts new file mode 100644 index 0000000..622be88 --- /dev/null +++ b/R-Dash/redux/Store.ts @@ -0,0 +1,14 @@ +import { configureStore } from '@reduxjs/toolkit' +import appReducer from './reducers/appReducer'; + +// Reference here all your application reducers +const reducer = { + appReducer: appReducer, +} + +// @ts-ignore +const store = configureStore({ + reducer, +}); + +export default store; \ No newline at end of file diff --git a/R-Dash/redux/actions/teams.ts b/R-Dash/redux/actions/teams.ts new file mode 100644 index 0000000..f08baa3 --- /dev/null +++ b/R-Dash/redux/actions/teams.ts @@ -0,0 +1,23 @@ +import { Team } from "../../core/Team"; +import { Fetch_Teams } from "../Constants"; + +export const setCitiesList = (citiesList: Team[]) => { + return { + type: Fetch_Teams, + payload: citiesList, + }; +} + +export const getCitiesList = () => { + return async dispatch => { + try { + const citiesPromise = await fetch('https://iut-weather-api.azurewebsites.net/'); + const citiesListJson = await citiesPromise.json(); + const citiesList: Team[] = citiesListJson.map(elt => new Localisation(elt["name"], elt["latitude"], elt["longitude"])); + dispatch(setCitiesList(citiesList)); + } catch (error) { + console.log('Error---------', error); + //dispatch(fetchDataRejected(error)) + } + } +} \ No newline at end of file diff --git a/R-Dash/redux/reducers/appReducer.ts b/R-Dash/redux/reducers/appReducer.ts new file mode 100644 index 0000000..74da99e --- /dev/null +++ b/R-Dash/redux/reducers/appReducer.ts @@ -0,0 +1,35 @@ +const initialState = { + Teams: [], + Owners: [], + Members: [], + WaitingMembers: [], + Laps: [], + Points: [], + Sessions: [], + Tracks: [], +}; + +const appReducer = (state = initialState, action: { type: any; payload: any; }) => { + switch (action.type) { + case 'Fetch_Teams': + return { ...state, cities: [...state.Teams, action.payload] }; + case 'Fetch_Owners': + return { ...state, cities: [...state.Owners, action.payload] }; + case 'Fetch_Members': + return { ...state, cities: [...state.Members, action.payload] }; + case 'Fetch_WaitingMembers': + return { ...state, cities: [...state.WaitingMembers, action.payload] }; + case 'Fetch_laps': + return { ...state, cities: [...state.Laps, action.payload] }; + case 'Fetch_Points': + return { ...state, cities: [...state.Points, action.payload] }; + case 'Fetch_Sessions': + return { ...state, cities: [...state.Sessions, action.payload] }; + case 'Fetch_Tracks': + return { ...state, cities: [...state.Tracks, action.payload] }; + default: + return state; + } +}; + +export default appReducer; \ No newline at end of file