diff --git a/mobile/.env.example b/mobile/.env.example index 673d69ca5..43b59a9e6 100644 --- a/mobile/.env.example +++ b/mobile/.env.example @@ -1,6 +1,8 @@ -API_URL= -REDIRECT_URL= -AWS_REGION= -USER_POOL_ID= -USER_POOL_CLIENT_ID= -AWS_DOMAIN= \ No newline at end of file +EXPO_PUBLIC_API_URL= +EXPO_PUBLIC_AWS_REGION= +EXPO_PUBLIC_USER_POOL_ID= +EXPO_PUBLIC_USER_POOL_CLIENT_ID= +EXPO_PUBLIC_AWS_DOMAIN= +EXPO_PUBLIC_PRIVACY_POLICY_LINK= +EXPO_PUBLIC_TERMS_AND_CONDITIONS_LINK= +EXPO_PUBLIC_INFORMATION_LINK= \ No newline at end of file diff --git a/mobile/.gitignore b/mobile/.gitignore index 8ecf2815f..2b9d32e2f 100644 --- a/mobile/.gitignore +++ b/mobile/.gitignore @@ -9,6 +9,9 @@ npm-debug.* *.mobileprovision *.orig.* web-build/ +.env.production +.env.test +.env.development # macOS .DS_Store diff --git a/mobile/app.config.ts b/mobile/app.config.ts index a36cf332d..8e7015dad 100644 --- a/mobile/app.config.ts +++ b/mobile/app.config.ts @@ -4,10 +4,10 @@ import { config } from 'dotenv'; config(); // Load environment variables from .env file const expoConfig: ExpoConfig = { - name: 'teo', - slug: 'teo', - scheme: 'teo', - version: '0.0.1', + name: 'vic', + slug: 'vic', + scheme: 'vic', + version: '1.0.0', orientation: 'portrait', icon: './src/assets/images/icon.png', userInterfaceStyle: 'light', @@ -18,9 +18,9 @@ const expoConfig: ExpoConfig = { }, assetBundlePatterns: ['**/*'], ios: { - buildNumber: '3', + buildNumber: '1', supportsTablet: true, - bundleIdentifier: 'com.commitglobal.vic', + bundleIdentifier: 'org.commitglobal.vic', entitlements: { 'com.apple.developer.applesignin': ['Default'], }, @@ -32,13 +32,13 @@ const expoConfig: ExpoConfig = { }, }, android: { - versionCode: 3, + versionCode: 1, adaptiveIcon: { foregroundImage: './src/assets/images/adaptive-icon.png', backgroundColor: '#ffffff', }, googleServicesFile: './google-services.json', - package: 'com.commitglobal.vic', + package: 'org.commitglobal.vic', }, web: { favicon: './src/assets/images/favicon.png', @@ -60,21 +60,20 @@ const expoConfig: ExpoConfig = { ], ], extra: { - apiUrl: process.env.API_URL, - redirectUrl: process.env.REDIRECT_URL, - awsRegion: process.env.AWS_REGION, - userPoolId: process.env.USER_POOL_ID, - userPoolClientId: process.env.USER_POOL_CLIENT_ID, - awsDomain: process.env.AWS_DOMAIN, + apiUrl: process.env.EXPO_PUBLIC_API_URL, + awsRegion: process.env.EXPO_PUBLIC_AWS_REGION, + userPoolId: process.env.EXPO_PUBLIC_USER_POOL_ID, + userPoolClientId: process.env.EXPO_PUBLIC_USER_POOL_CLIENT_ID, + awsDomain: process.env.EXPO_PUBLIC_AWS_DOMAIN, eas: { - projectId: '7dd2fea9-6bb9-4b69-865f-c00ab46b5183', + projectId: '6aaad982-5a5c-4af8-b66c-7689afe74e1f', }, - policyLink: process.env.PRIVACY_POLICY_LINK, - termsLink: process.env.TERMS_AND_CONDITIONS_LINK, - infoLink: process.env.INFORMATION_LINK, + policyLink: process.env.EXPO_PUBLIC_PRIVACY_POLICY_LINK, + termsLink: process.env.EXPO_PUBLIC_TERMS_AND_CONDITIONS_LINK, + infoLink: process.env.EXPO_PUBLIC_INFORMATION_LINK, }, updates: { - url: 'https://u.expo.dev/7dd2fea9-6bb9-4b69-865f-c00ab46b5183', + url: 'https://u.expo.dev/6aaad982-5a5c-4af8-b66c-7689afe74e1f', }, runtimeVersion: { policy: 'sdkVersion', diff --git a/mobile/eas.json b/mobile/eas.json index 8d07004d7..12187c21d 100644 --- a/mobile/eas.json +++ b/mobile/eas.json @@ -9,7 +9,7 @@ }, "preview": { "distribution": "internal", - "node": "16.15.1" + "node": "16.18.1" }, "production": { "channel": "production" diff --git a/mobile/google-services.json b/mobile/google-services.json index 117d37677..fb5395032 100644 --- a/mobile/google-services.json +++ b/mobile/google-services.json @@ -1,33 +1,33 @@ { "project_info": { - "project_number": "42831608116", - "project_id": "teo-development", - "storage_bucket": "teo-development.appspot.com" + "project_number": "584495752855", + "project_id": "ngohub-407214", + "storage_bucket": "ngohub-407214.appspot.com" }, "client": [ { "client_info": { - "mobilesdk_app_id": "1:42831608116:android:7fa59eb7d5a6645ae30d61", + "mobilesdk_app_id": "1:584495752855:android:f3aaf3a840d319d931abd2", "android_client_info": { - "package_name": "com.commitglobal.vic" + "package_name": "org.commitglobal.vic" } }, "oauth_client": [ { - "client_id": "42831608116-9bgd5lbk97dm4s17ncvs9cfe6he457dd.apps.googleusercontent.com", + "client_id": "584495752855-d3211kb6fq1j7fahr9r408irh12svkpa.apps.googleusercontent.com", "client_type": 3 } ], "api_key": [ { - "current_key": "AIzaSyDXrTVXUs3FCJf-QGKg4Tx2G_j9T9se5sA" + "current_key": "AIzaSyARcOpZ96_TKutqvBnuibFq67qk1Tmd6VA" } ], "services": { "appinvite_service": { "other_platform_oauth_client": [ { - "client_id": "42831608116-9bgd5lbk97dm4s17ncvs9cfe6he457dd.apps.googleusercontent.com", + "client_id": "584495752855-d3211kb6fq1j7fahr9r408irh12svkpa.apps.googleusercontent.com", "client_type": 3 } ] @@ -36,4 +36,4 @@ } ], "configuration_version": "1" -} \ No newline at end of file +} diff --git a/mobile/package-lock.json b/mobile/package-lock.json index fe5976451..edc8fc196 100644 --- a/mobile/package-lock.json +++ b/mobile/package-lock.json @@ -1,26 +1,25 @@ { - "name": "teo-mobile", - "version": "0.0.1", + "name": "vic-mobile", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "teo-mobile", - "version": "0.0.1", + "name": "vic-mobile", + "version": "1.0.0", "dependencies": { - "@aws-amplify/react-native": "^1.0.4", "@eva-design/eva": "^2.1.1", "@gorhom/bottom-sheet": "^4.4.5", "@hookform/resolvers": "^3.1.0", - "@react-native-async-storage/async-storage": "^1.19.7", - "@react-native-community/netinfo": "^9.5.0", + "@react-native-async-storage/async-storage": "1.18.2", + "@react-native-community/netinfo": "9.3.10", "@react-navigation/bottom-tabs": "^6.5.7", "@react-navigation/drawer": "^6.6.2", "@react-navigation/native": "^6.1.6", "@react-navigation/native-stack": "^6.9.12", "@ui-kitten/components": "5.3.1", - "amazon-cognito-identity-js": "^6.2.0", - "aws-amplify": "^5.3.12", + "amazon-cognito-identity-js": "^6.3.7", + "aws-amplify": "5.3.12", "axios": "^1.4.0", "core-js": "^3.30.2", "date-fns": "^2.30.0", @@ -45,7 +44,7 @@ "react-content-loader": "^6.2.1", "react-hook-form": "^7.43.9", "react-i18next": "^12.2.2", - "react-native": "0.72.5", + "react-native": "0.72.6", "react-native-gesture-handler": "~2.12.0", "react-native-reanimated": "~3.3.0", "react-native-safe-area-context": "4.6.3", @@ -61,7 +60,6 @@ "@babel/core": "7.21.3", "@react-native-community/eslint-config": "^3.2.0", "@types/react": "~18.2.14", - "@types/react-native": "^0.71.6", "@types/react-native-vector-icons": "^6.4.13", "dotenv": "^16.0.3", "eslint-plugin-prettier": "^5.0.0", @@ -186,21 +184,6 @@ "url": "0.11.0" } }, - "node_modules/@aws-amplify/auth/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/@aws-amplify/auth/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, "node_modules/@aws-amplify/cache": { "version": "5.1.12", "resolved": "https://registry.npmjs.org/@aws-amplify/cache/-/cache-5.1.12.tgz", @@ -235,17 +218,6 @@ "node": ">= 10.0.0" } }, - "node_modules/@aws-amplify/core/node_modules/react-native-url-polyfill": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-native-url-polyfill/-/react-native-url-polyfill-1.3.0.tgz", - "integrity": "sha512-w9JfSkvpqqlix9UjDvJjm1EjSt652zVQ6iwCIj1cVVkwXf4jQhQgTNXY6EVTwuAmUjg6BC6k9RHCBynoLFo3IQ==", - "dependencies": { - "whatwg-url-without-unicode": "8.0.0-3" - }, - "peerDependencies": { - "react-native": "*" - } - }, "node_modules/@aws-amplify/datastore": { "version": "4.7.6", "resolved": "https://registry.npmjs.org/@aws-amplify/datastore/-/datastore-4.7.6.tgz", @@ -265,21 +237,6 @@ "zen-push": "0.2.1" } }, - "node_modules/@aws-amplify/datastore/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/@aws-amplify/datastore/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, "node_modules/@aws-amplify/geo": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/@aws-amplify/geo/-/geo-2.3.6.tgz", @@ -337,21 +294,6 @@ "uuid": "^3.2.1" } }, - "node_modules/@aws-amplify/predictions/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/@aws-amplify/predictions/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, "node_modules/@aws-amplify/pubsub": { "version": "5.5.6", "resolved": "https://registry.npmjs.org/@aws-amplify/pubsub/-/pubsub-5.5.6.tgz", @@ -368,35 +310,6 @@ "zen-observable-ts": "0.8.19" } }, - "node_modules/@aws-amplify/pubsub/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/@aws-amplify/pubsub/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/@aws-amplify/react-native": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@aws-amplify/react-native/-/react-native-1.0.4.tgz", - "integrity": "sha512-eqOXhv1Vnh+4EfUc6FDDGU74d4+8HHT81S8SdrDOco/GgRQl4z6s/3Po58zEVxVjMvuJflg1NrUwsdjNKahgAw==", - "dependencies": { - "base-64": "^1.0.0", - "buffer": "^6.0.3", - "react-native-url-polyfill": "^2.0.0" - }, - "peerDependencies": { - "react-native": ">=0.70", - "react-native-get-random-values": ">=1.9.0" - } - }, "node_modules/@aws-amplify/rtn-push-notification": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/@aws-amplify/rtn-push-notification/-/rtn-push-notification-1.1.8.tgz", @@ -424,21 +337,6 @@ "node": ">= 10.0.0" } }, - "node_modules/@aws-amplify/storage/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/@aws-amplify/storage/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, "node_modules/@aws-crypto/crc32": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-2.0.0.tgz", @@ -5457,11 +5355,11 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.451.0.tgz", - "integrity": "sha512-rhK+qeYwCIs+laJfWCcrYEjay2FR/9VABZJ2NRM89jV/fKqGVQR52E5DQqrI+oEIL5JHMhhnr4N4fyECMS35lw==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { - "@smithy/types": "^2.5.0", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -5799,9 +5697,9 @@ } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", - "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", + "version": "3.465.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.465.0.tgz", + "integrity": "sha512-f+QNcWGswredzC1ExNAB/QzODlxwaTdXkNT5cvke2RLX8SFU5pYk6h4uCtWC0vWPELzOfMfloBrJefBzlarhsw==", "dependencies": { "tslib": "^2.5.0" }, @@ -10107,14 +10005,14 @@ "dev": true }, "node_modules/@react-native-async-storage/async-storage": { - "version": "1.19.7", - "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.19.7.tgz", - "integrity": "sha512-zvfhOWWnjzeP4exfgNwDUot7MQafEEJnbjjNsVKWRxRuQT521GLSHUJQHjMTLg19QPT+HbsGjL7rJzKkmXuq7w==", + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.18.2.tgz", + "integrity": "sha512-dM8AfdoeIxlh+zqgr0o5+vCTPQ0Ru1mrPzONZMsr7ufp5h+6WgNxQNza7t0r5qQ6b04AJqTlBNixTWZxqP649Q==", "dependencies": { "merge-options": "^3.0.4" }, "peerDependencies": { - "react-native": "^0.0.0-0 || >=0.60 <1.0" + "react-native": "^0.0.0-0 || 0.60 - 0.72 || 1000.0.0" } }, "node_modules/@react-native-community/cli": { @@ -11812,9 +11710,9 @@ "dev": true }, "node_modules/@react-native-community/netinfo": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-9.5.0.tgz", - "integrity": "sha512-sppTBobjvIlPYXyDAyb5WJoBaQq1hprnHj1PWICsA10mVnlmwX5ZVkgO2vGjsfFtb+fmWK9XtZF+aQ6ijqQcwg==", + "version": "9.3.10", + "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-9.3.10.tgz", + "integrity": "sha512-OwnqoJUp/4sa9e3ju+wQavAa8l0fiA3DheeLMKzKxtKeAe0CA7bNxWRM752JvRQ6A/igPnt1V0zSlu5owvQEuA==", "peerDependencies": { "react-native": ">=0.59" } @@ -12021,9 +11919,9 @@ } }, "node_modules/@smithy/types": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.6.0.tgz", - "integrity": "sha512-PgqxJq2IcdMF9iAasxcqZqqoOXBHufEfmbEUdN1pmJrJltT42b0Sc8UiYSWWzKkciIp9/mZDpzYi4qYG1qqg6g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.7.0.tgz", + "integrity": "sha512-1OIFyhK+vOkMbu4aN2HZz/MomREkrAC/HqY5mlJMUJfGrPRwijJDTeiN8Rnj9zUaB8ogXAfIOtZrrgqZ4w7Wnw==", "dependencies": { "tslib": "^2.5.0" }, @@ -12147,7 +12045,8 @@ "version": "0.71.12", "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.71.12.tgz", "integrity": "sha512-0jjn9kbxXAdR1PnSw1Gls/0kfq1MOijq090WFkPNqlSMpv+AuwiH5FNacQVxcjtRHUV4424+czGm4015oanDxg==", - "devOptional": true, + "optional": true, + "peer": true, "dependencies": { "@types/react": "*" } @@ -12650,21 +12549,6 @@ "js-cookie": "^2.2.1" } }, - "node_modules/amazon-cognito-identity-js/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/amazon-cognito-identity-js/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, "node_modules/anser": { "version": "1.4.10", "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", @@ -13451,26 +13335,13 @@ } }, "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, "node_modules/buffer-alloc": { @@ -13497,6 +13368,11 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "node_modules/buffer/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -21344,9 +21220,9 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-native": { - "version": "0.72.5", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.72.5.tgz", - "integrity": "sha512-oIewslu5DBwOmo7x5rdzZlZXCqDIna0R4dUwVpfmVteORYLr4yaZo5wQnMeR+H7x54GaMhmgeqp0ZpULtulJFg==", + "version": "0.72.6", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.72.6.tgz", + "integrity": "sha512-RafPY2gM7mcrFySS8TL8x+TIO3q7oAlHpzEmC7Im6pmXni6n1AuufGaVh0Narbr1daxstw7yW7T9BKW5dpVc2A==", "dependencies": { "@jest/create-cache-key-function": "^29.2.1", "@react-native-community/cli": "11.3.7", @@ -21504,9 +21380,9 @@ } }, "node_modules/react-native-url-polyfill": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-native-url-polyfill/-/react-native-url-polyfill-2.0.0.tgz", - "integrity": "sha512-My330Do7/DvKnEvwQc0WdcBnFPploYKp9CYlefDXzIdEaA+PAhDYllkvGeEroEzvc4Kzzj2O4yVdz8v6fjRvhA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-native-url-polyfill/-/react-native-url-polyfill-1.3.0.tgz", + "integrity": "sha512-w9JfSkvpqqlix9UjDvJjm1EjSt652zVQ6iwCIj1cVVkwXf4jQhQgTNXY6EVTwuAmUjg6BC6k9RHCBynoLFo3IQ==", "dependencies": { "whatwg-url-without-unicode": "8.0.0-3" }, diff --git a/mobile/package.json b/mobile/package.json index 057661bac..c5ecef937 100644 --- a/mobile/package.json +++ b/mobile/package.json @@ -1,28 +1,29 @@ { - "name": "teo-mobile", - "version": "0.0.1", + "name": "vic-mobile", + "version": "1.0.0", "main": "node_modules/expo/AppEntry.js", "scripts": { - "start": "expo start", + "start": "NODE_ENV=development expo start", + "start:test": "NODE_ENV=test expo start", + "start:production": "NODE_ENV=production expo start", "android": "expo start --android", "ios": "expo start --ios", "web": "expo start --web", "lint": "eslint . --ext .tsx,.ts" }, "dependencies": { - "@aws-amplify/react-native": "^1.0.4", "@eva-design/eva": "^2.1.1", "@gorhom/bottom-sheet": "^4.4.5", "@hookform/resolvers": "^3.1.0", - "@react-native-async-storage/async-storage": "^1.19.7", - "@react-native-community/netinfo": "^9.5.0", + "@react-native-async-storage/async-storage": "1.18.2", + "@react-native-community/netinfo": "9.3.10", "@react-navigation/bottom-tabs": "^6.5.7", "@react-navigation/drawer": "^6.6.2", "@react-navigation/native": "^6.1.6", "@react-navigation/native-stack": "^6.9.12", "@ui-kitten/components": "5.3.1", - "amazon-cognito-identity-js": "^6.2.0", - "aws-amplify": "^5.3.12", + "amazon-cognito-identity-js": "^6.3.7", + "aws-amplify": "5.3.12", "axios": "^1.4.0", "core-js": "^3.30.2", "date-fns": "^2.30.0", @@ -47,7 +48,7 @@ "react-content-loader": "^6.2.1", "react-hook-form": "^7.43.9", "react-i18next": "^12.2.2", - "react-native": "0.72.5", + "react-native": "0.72.6", "react-native-gesture-handler": "~2.12.0", "react-native-reanimated": "~3.3.0", "react-native-safe-area-context": "4.6.3", @@ -63,7 +64,6 @@ "@babel/core": "7.21.3", "@react-native-community/eslint-config": "^3.2.0", "@types/react": "~18.2.14", - "@types/react-native": "^0.71.6", "@types/react-native-vector-icons": "^6.4.13", "dotenv": "^16.0.3", "eslint-plugin-prettier": "^5.0.0", diff --git a/mobile/src/assets/images/adaptive-icon.png b/mobile/src/assets/images/adaptive-icon.png index 1f5415f43..ff4e8a367 100644 Binary files a/mobile/src/assets/images/adaptive-icon.png and b/mobile/src/assets/images/adaptive-icon.png differ diff --git a/mobile/src/assets/images/icon.png b/mobile/src/assets/images/icon.png index 1f5415f43..ff4e8a367 100644 Binary files a/mobile/src/assets/images/icon.png and b/mobile/src/assets/images/icon.png differ diff --git a/mobile/src/assets/images/logo.png b/mobile/src/assets/images/logo.png index 1f5415f43..fb77c525b 100644 Binary files a/mobile/src/assets/images/logo.png and b/mobile/src/assets/images/logo.png differ diff --git a/mobile/src/assets/images/splash.png b/mobile/src/assets/images/splash.png index 606c7a0cf..4ad91a64c 100644 Binary files a/mobile/src/assets/images/splash.png and b/mobile/src/assets/images/splash.png differ diff --git a/mobile/src/assets/images/teo-logo.png b/mobile/src/assets/images/teo-logo.png deleted file mode 100644 index e7e8ac5f0..000000000 Binary files a/mobile/src/assets/images/teo-logo.png and /dev/null differ diff --git a/mobile/src/assets/images/vic-logo.png b/mobile/src/assets/images/vic-logo.png new file mode 100644 index 000000000..6ac359125 Binary files /dev/null and b/mobile/src/assets/images/vic-logo.png differ diff --git a/mobile/src/assets/locales/en/translation.json b/mobile/src/assets/locales/en/translation.json index 2b45193d0..6d26c3a08 100644 --- a/mobile/src/assets/locales/en/translation.json +++ b/mobile/src/assets/locales/en/translation.json @@ -1,7 +1,7 @@ { "general": { "current_month": "This month", - "about_teo": "About TEO", + "about_teo": "About VIC", "event": "Event", "news": "Latest news", "organizations": "Organizations", @@ -325,7 +325,7 @@ "label": "How did you hear about us?", "required": "This field is mandatory", "social": "Social networks", - "teo": "From the TEO app", + "teo": "From the VIC app", "friend": "From a colleague or friend", "event": "From an event", "other": "Another option" @@ -420,7 +420,7 @@ "information": "Voluntary information", "email": "Contact email", "active_since": "Volunteer from", - "created_on": "Registered in TEO since", + "created_on": "Registered in VIC since", "errors": { "VOLUNTEER_PROFILE_003": "The volunteer has no profile created. Create one first!", "VOLUNTEER_003": "Only active volunteers can be archived", @@ -444,7 +444,7 @@ "pattern": "Email format is invalid" }, "checkbox": { - "label": "Same as TEO account email" + "label": "Same as VIC account email" }, "branch": { "label": "Subsidiary or branch" @@ -582,7 +582,9 @@ }, "home": { "greeting": "Hi, {{name}}!", - "paragraph": "Welcome to your TEO account! The place to keep track of your volunteer hours and documents, lorem ipsum.", + "paragraph": "Welcome to your VIC account! The place to keep track of your volunteer hours and documents, lorem ipsum.", + "no_ngo_title": "You didn't add any organizations yet", + "no_ngo_paragraph": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur molestie vel lorem a varius. Praesent nisi libero, fermentum eu aliquet non, euismod eu arcu. Donec et ipsum ut ex efficitur tristique.", "add_hours": "Add volunteer hours!", "join_ngo": "Join an organization!", "statistics": { diff --git a/mobile/src/assets/locales/ro/translation.json b/mobile/src/assets/locales/ro/translation.json index 561db808c..23bfd8c1e 100644 --- a/mobile/src/assets/locales/ro/translation.json +++ b/mobile/src/assets/locales/ro/translation.json @@ -1,7 +1,7 @@ { "general": { "current_month": "Luna aceasta", - "about_teo": "Despre TEO", + "about_teo": "Despre VIC", "event": "Eveniment", "news": "Ultimele noutăți", "organizations": "Organizații", @@ -325,7 +325,7 @@ "label": "De unde ai aflat de noi?", "required": "Acest câmp este obligatoriu", "social": "Rețelele de socializare", - "teo": "Din aplicația TEO", + "teo": "Din aplicația VIC", "friend": "De la un coleg sau prieten", "event": "Dintr-un eveniment", "other": "Altă opțiune" @@ -415,7 +415,7 @@ "information": "Informații voluntar", "email": "Email de contact", "active_since": "Voluntar din", - "created_on": "Înregistrat în TEO din", + "created_on": "Înregistrat în VIC din", "errors": { "VOLUNTEER_PROFILE_003": "Voluntarul nu are profil creat. Creează unul înainte!", "VOLUNTEER_003": "Doar voluntarii activi pot fi arhivați", @@ -439,7 +439,7 @@ "pattern": "Formatul email-ului nu este valid" }, "checkbox": { - "label": "Același ca email cont TEO" + "label": "Același ca email cont VIC" }, "branch": { "label": "Filială sau sucursală" @@ -577,7 +577,9 @@ }, "home": { "greeting": "Salut, {{name}}!", - "paragraph": "Bun venit în contul tău TEO! Locul unde poți să ții evidența orelor de activitate și a documentelor tale de voluntar.", + "paragraph": "Bun venit în contul tău VIC! Locul unde poți să ții evidența orelor de activitate și a documentelor tale de voluntar.", + "no_ngo_title": "Nu ai adăugat încă nicio organizație", + "no_ngo_paragraph": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur molestie vel lorem a varius. Praesent nisi libero, fermentum eu aliquet non, euismod eu arcu. Donec et ipsum ut ex efficitur tristique.", "add_hours": "Adaugă ore de voluntariat!", "join_ngo": "Alătură-te unei organizații!", "statistics": { diff --git a/mobile/src/assets/svg/doc.js b/mobile/src/assets/svg/doc.js index 3cd38bc62..5fe835935 100644 --- a/mobile/src/assets/svg/doc.js +++ b/mobile/src/assets/svg/doc.js @@ -1,5 +1,5 @@ export default ` - - + + `; diff --git a/mobile/src/assets/svg/speakerphone.js b/mobile/src/assets/svg/speakerphone.js index 7afe28f2b..956581c28 100644 --- a/mobile/src/assets/svg/speakerphone.js +++ b/mobile/src/assets/svg/speakerphone.js @@ -1,4 +1,4 @@ export default ` - + `; diff --git a/mobile/src/assets/svg/success-icon.js b/mobile/src/assets/svg/success-icon.js index f8ff176be..b63acfe52 100644 --- a/mobile/src/assets/svg/success-icon.js +++ b/mobile/src/assets/svg/success-icon.js @@ -1,12 +1,6 @@ export default ` - - - - - - - - - + + + `; diff --git a/mobile/src/assets/svg/volunteer-clock.js b/mobile/src/assets/svg/volunteer-clock.js index 84e6141c2..26be0a8dd 100644 --- a/mobile/src/assets/svg/volunteer-clock.js +++ b/mobile/src/assets/svg/volunteer-clock.js @@ -1,4 +1,4 @@ export default ` - + `; diff --git a/mobile/src/assets/svg/volunteer-user.js b/mobile/src/assets/svg/volunteer-user.js index 92310d755..e31a7ee84 100644 --- a/mobile/src/assets/svg/volunteer-user.js +++ b/mobile/src/assets/svg/volunteer-user.js @@ -1,5 +1,5 @@ export default ` - - + + `; diff --git a/mobile/src/common/theme/theme.json b/mobile/src/common/theme/theme.json index 794031da5..f6103c2fd 100644 --- a/mobile/src/common/theme/theme.json +++ b/mobile/src/common/theme/theme.json @@ -1,19 +1,20 @@ { + "color-primary-50": "#FFFBEB", "color-primary-100": "#CBFAEA", "color-primary-200": "#99F6DD", "color-primary-300": "#63E3CD", "color-primary-400": "#3BC9BC", - "color-primary-500": "#0AA5A5", - "color-primary-600": "#07828D", - "color-primary-700": "#056376", - "color-primary-800": "#03475F", + "color-primary-500": "#FFD209", + "color-primary-600": "#FBBF24", + "color-primary-700": "#FFD209", + "color-primary-800": "#F59E0B", "color-primary-900": "#01344F", "color-success-100": "#DBF7F5", "color-success-200": "#C1EDEA", "color-success-300": "#A7E2E2", - "color-success-400": "#88D7D8", - "color-success-500": "#12B6B6", - "color-success-600": "#4AC3C4", + "color-success-400": "#3b76f6", + "color-success-500": "#2563EB", + "color-success-600": "#1d58d8", "color-success-700": "#0AA5A5", "color-success-800": "#2E8D8E", "color-success-900": "#246F6F", @@ -68,7 +69,7 @@ "text-info-color": "#1F2937", "text-hint-color": "$cool-gray-500", "text-disabled-color": "#1F2937", - "text-primary-color": "$color-primary-500", + "text-primary-color": "$color-primary-700", "text-success-color": "$color-success-500", "text-danger-focus-color": "$color-danger-500", "text-danger-color": "$color-danger-500", diff --git a/mobile/src/components/AboutTeo.tsx b/mobile/src/components/AboutTeo.tsx index 3a37e9ea0..daa1c60e0 100644 --- a/mobile/src/components/AboutTeo.tsx +++ b/mobile/src/components/AboutTeo.tsx @@ -2,8 +2,6 @@ import React from 'react'; import SectionWrapper from './SectionWrapper'; import StatisticsCard from './StatisticsCard'; //SVG -import EllipseSvg from '../assets/svg/ellipse'; -import IconSvg from './IconSvg'; import HorizontalCarousel from './HorizontalCarousel'; import { useTeoStatistics } from '../services/statistics/statistics.service'; import { useTranslation } from 'react-i18next'; @@ -35,7 +33,7 @@ const AboutTeo = () => { } return ( - }> + {getTeoStatisticsError ? ( {`${t( 'general:error.load_entries', @@ -43,16 +41,14 @@ const AboutTeo = () => { ) : ( )} diff --git a/mobile/src/components/Button.tsx b/mobile/src/components/Button.tsx index cb07f8037..2385ecb55 100644 --- a/mobile/src/components/Button.tsx +++ b/mobile/src/components/Button.tsx @@ -10,6 +10,7 @@ import { import { Platform, View } from 'react-native'; import { StyleSheet } from 'react-native'; import { ALLOW_FONT_SCALLING } from '../common/constants/constants'; +import { ButtonType } from '../common/enums/button-type.enum'; export interface ButtonProps extends ButtonKittenProps { label: string; @@ -42,9 +43,11 @@ const Button = ({ label, onPress, appearance, loading, ...props }: ButtonProps) {() => ( {label} diff --git a/mobile/src/components/LogInButton.tsx b/mobile/src/components/LogInButton.tsx index 86e0a80b4..a2200f8eb 100644 --- a/mobile/src/components/LogInButton.tsx +++ b/mobile/src/components/LogInButton.tsx @@ -15,7 +15,7 @@ const LogInButton = ({ onPress }: LogInButtonProps) => { {`${t('registered')} `} - {`${t( + {`${t( 'login', )}`} diff --git a/mobile/src/components/SectionHeader.tsx b/mobile/src/components/SectionHeader.tsx index e0067bd1c..9595532a1 100644 --- a/mobile/src/components/SectionHeader.tsx +++ b/mobile/src/components/SectionHeader.tsx @@ -11,10 +11,10 @@ interface SectionHeaderProps { const SectionHeader = ({ title, icon, action }: SectionHeaderProps) => ( - {icon} {title} + {icon} {action} ); diff --git a/mobile/src/components/SeeAllAction.tsx b/mobile/src/components/SeeAllAction.tsx index 59d708752..a04a30afd 100644 --- a/mobile/src/components/SeeAllAction.tsx +++ b/mobile/src/components/SeeAllAction.tsx @@ -13,7 +13,7 @@ const SeeAllAction = ({ onPress }: SeeAllActionProps) => { const theme = useTheme(); return ( diff --git a/mobile/src/components/SignUpButton.tsx b/mobile/src/components/SignUpButton.tsx index 9082cbb9f..ec4c05a88 100644 --- a/mobile/src/components/SignUpButton.tsx +++ b/mobile/src/components/SignUpButton.tsx @@ -14,7 +14,7 @@ const SignUpButton = ({ onPress }: SignUpButtonProps) => { const theme = useTheme(); return ( - + {`${t('email')}`} @@ -45,5 +45,5 @@ const styles = StyleSheet.create({ }), }, image: { width: 44, height: 44, margin: 0 }, - textStyle: { fontSize: 14, color: 'white' }, + textStyle: { fontSize: 14, color: 'black' }, }); diff --git a/mobile/src/components/Statistics.tsx b/mobile/src/components/Statistics.tsx index c9c0f58d3..c84205b45 100644 --- a/mobile/src/components/Statistics.tsx +++ b/mobile/src/components/Statistics.tsx @@ -66,7 +66,7 @@ const Statistics = ({ navigation }: { navigation: any }) => { number: statistics?.numberOfUpcomingEvents, })}`} subtitle={t('statistics.events.description')} - backgroundColor="turquoise-50" + backgroundColor="color-primary-50" onPress={onEventsCardPress} /> {userProfile?.activeOrganization && ( @@ -77,7 +77,7 @@ const Statistics = ({ navigation }: { navigation: any }) => { number: statistics?.numberOfActivityLogUpdates, })}`} subtitle={t('statistics.hours.description')} - backgroundColor="turquoise-50" + backgroundColor="color-primary-50" onPress={onHoursCardPress} /> { number: statistics?.numberOfDocumentUpdates, })}`} subtitle={t('statistics.documents.description')} - backgroundColor="turquoise-50" + backgroundColor="color-primary-50" onPress={onDocumentsCardPress} /> { number: statistics?.numberOfOrganizationUpdates, })}`} subtitle={t('statistics.organizations.description')} - backgroundColor="turquoise-50" + backgroundColor="color-primary-50" onPress={onOrganizationsCardPress} /> diff --git a/mobile/src/components/StatisticsCard.tsx b/mobile/src/components/StatisticsCard.tsx index 1c2dff39d..2a0066cab 100644 --- a/mobile/src/components/StatisticsCard.tsx +++ b/mobile/src/components/StatisticsCard.tsx @@ -1,10 +1,11 @@ +/* eslint-disable react-native/no-inline-styles */ import React from 'react'; import { Icon, Text, useTheme } from '@ui-kitten/components'; import { Platform, StyleSheet, TouchableHighlight, View } from 'react-native'; import { ALLOW_FONT_SCALLING } from '../common/constants/constants'; interface StatisticsCardProps { - icon: string; + icon?: string; title: string; subtitle: string; onPress?: () => void; @@ -22,12 +23,19 @@ const StatisticsCard = ({ return ( - - + + {icon && ( + + )} {title} @@ -49,7 +57,6 @@ const styles = StyleSheet.create({ gap: 18, borderRadius: 16, width: 140, - minHeight: 163, ...Platform.select({ android: { elevation: 2, // Adjust the shadow elevation as desired diff --git a/mobile/src/components/TopNavigationCard.tsx b/mobile/src/components/TopNavigationCard.tsx index b3add8f63..d7f416fae 100644 --- a/mobile/src/components/TopNavigationCard.tsx +++ b/mobile/src/components/TopNavigationCard.tsx @@ -41,8 +41,7 @@ export default TopNavigationCard; const themedStyles = StyleService.create({ elipsis: { - backgroundColor: 'white', - opacity: 0.5, + backgroundColor: '$color-primary-500', height: 16, width: 16, borderRadius: 100, @@ -50,10 +49,10 @@ const themedStyles = StyleService.create({ marginLeft: -8, }, notPressed: { - backgroundColor: '$color-success-500', + backgroundColor: '$cool-gray-800', }, pressed: { - backgroundColor: '$color-success-700', + backgroundColor: '$cool-gray-700', }, container: { paddingVertical: 24, diff --git a/mobile/src/layouts/PageLayout.tsx b/mobile/src/layouts/PageLayout.tsx index 40bb3e8d5..c6decdc9b 100644 --- a/mobile/src/layouts/PageLayout.tsx +++ b/mobile/src/layouts/PageLayout.tsx @@ -23,6 +23,7 @@ interface ActionsOptionsProps { primaryBtnType?: ButtonType; loading?: boolean; helperText?: string; + secondaryLinkColor?: boolean; } interface PageLayoutProps { @@ -114,9 +115,9 @@ export const PageLayout = ({ ; @@ -64,8 +65,8 @@ const DrawerHeader = withStyles( ), (theme) => ({ drawerHeader: { - backgroundColor: theme['drawer-background'], - color: theme['turquoise-300'], + backgroundColor: theme['cool-gray-800'], + color: theme['color-basic-100'], paddingHorizontal: 18, paddingTop: 24, paddingBottom: 8, @@ -74,19 +75,24 @@ const DrawerHeader = withStyles( ); const DrawerItemTitle = withStyles( - ({ children, eva, category }: DrawerItemComponentProps) => ( - - {children} - - ), + ({ children, eva, active, category }: DrawerItemComponentProps) => { + const theme = useTheme(); + return ( + + {children} + + ); + }, () => ({ drawerItemTitle: { - color: '#fff', flexWrap: 'wrap', paddingLeft: 16, maxWidth: '80%', @@ -131,7 +137,11 @@ const DrawerContent = withStyles( {userProfile?.myOrganizations?.map((organization: IOrganizationVolunteer) => ( {organization.name}} + title={ + + {organization.name} + + } accessoryLeft={renderAccessroyLeft.bind(null, organization.logo || '')} onPress={onOrganizationChange.bind(null, organization)} style={[ @@ -155,7 +165,7 @@ const DrawerContent = withStyles( }, (theme) => ({ drawer: { - backgroundColor: theme['drawer-background'], + backgroundColor: theme['cool-gray-800'], borderBottomRightRadius: 40, }, drawerItem: { @@ -167,7 +177,7 @@ const DrawerContent = withStyles( justifyContent: 'flex-start', }, activeDrawerItem: { - backgroundColor: 'rgba(0, 0, 0, 0.15)', + backgroundColor: theme['cool-gray-700'], marginHorizontal: 10, borderRadius: 50, paddingHorizontal: 8, diff --git a/mobile/src/routes/Tabs.tsx b/mobile/src/routes/Tabs.tsx index d261bde88..266082b0f 100644 --- a/mobile/src/routes/Tabs.tsx +++ b/mobile/src/routes/Tabs.tsx @@ -17,7 +17,7 @@ const Title = ({ title, active }: { title: string; active?: boolean }) => { return ( {title} diff --git a/mobile/src/screens/Home.tsx b/mobile/src/screens/Home.tsx index c83a6b6b2..1bbc0f289 100644 --- a/mobile/src/screens/Home.tsx +++ b/mobile/src/screens/Home.tsx @@ -36,12 +36,26 @@ const Home = ({ navigation }: any) => { showsVerticalScrollIndicator={false} > - + {`${t('greeting', { name: userProfile?.firstName || '' })}`}{' '} - + - {`${t('paragraph')}`} + {`${t('paragraph')}`} + {!userProfile?.activeOrganization && ( + <> + + {`${t('no_ngo_title')}`} + + {`${t( + 'no_ngo_paragraph', + )}`} + + )} {userProfile?.activeOrganization ? ( diff --git a/mobile/src/screens/JoinByAccessCode.tsx b/mobile/src/screens/JoinByAccessCode.tsx index 7fff058d0..6b3b83eca 100644 --- a/mobile/src/screens/JoinByAccessCode.tsx +++ b/mobile/src/screens/JoinByAccessCode.tsx @@ -155,7 +155,7 @@ const JoinByAccessCode = ({ navigation }: any) => {