Browse Source

FEATURE| Add new pages terms and privacy| Terms and Privacy modules

add-game-functionality
JetUp 2 years ago
parent
commit
544c381a65
  1. 36
      ios/GoogleService-Info.plist
  2. 9
      ios/Podfile
  3. 939
      ios/Podfile.lock
  4. 66
      ios/Truth.xcodeproj/project.pbxproj
  5. 2
      ios/Truth/AppDelegate.m
  6. 10
      iosDuplicate/Truth.xcworkspace/contents.xcworkspacedata
  7. 8
      iosDuplicate/Truth.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  8. 10
      iosDuplicate1/Truth.xcworkspace/contents.xcworkspacedata
  9. 770
      package-lock.json
  10. 2
      package.json
  11. 2
      src/i18n/locales/en/index.ts
  12. 8
      src/i18n/locales/en/onBoardingButton.translation.ts
  13. 2
      src/i18n/locales/hi/index.tsx
  14. 8
      src/i18n/locales/hi/onBoardingButton.translation.ts
  15. 2
      src/i18n/locales/hi/steps.translation.ts
  16. 4
      src/i18n/locales/ua/index.ts
  17. 8
      src/i18n/locales/ua/onBoardingButton.translation.ts
  18. 4
      src/i18n/locales/ua/step.translation.ts
  19. 8
      src/i18n/types/buttons.types.ts
  20. 2
      src/i18n/types/index.ts
  21. 4
      src/module/game/screen/select-packages.screen.tsx
  22. 5
      src/module/package/components/packages-item.component.tsx
  23. 1
      src/module/package/components/packages-list.tsx
  24. 44
      src/module/privacy-policy/screens/privacy-policy.tsx
  25. 40
      src/module/root/atoms/premium-button.component.tsx
  26. 31
      src/module/root/navigations-groups/on-boardings-group.tsx
  27. 20
      src/module/root/screens/game.tsx
  28. 2
      src/module/root/screens/language-select.screen.tsx
  29. 16
      src/module/root/screens/loading-screen.tsx
  30. 14
      src/module/root/screens/on-boarding.screen.tsx
  31. 45
      src/module/root/screens/questions.tsx
  32. 19
      src/module/setting/components/Settings-Item.component.tsx
  33. 5
      src/module/shared/components/buttons/red-button.tsx
  34. 8
      src/module/shared/components/header/header.component.tsx
  35. 10
      src/module/shared/components/modals/main-modal.tsx
  36. 0
      src/module/shared/components/name-title/name-title.tsx
  37. 0
      src/module/shared/components/question-block/question-block.tsx
  38. 32
      src/module/shared/components/text-containers/main-text-container.tsx
  39. 6
      src/module/shared/config/default-packages.tsx
  40. 5
      src/module/shared/config/privacy-texts.ts
  41. 2
      src/module/shared/enums/route-keys.ts
  42. 2
      src/module/terms-of-use/config/terms-text.ts
  43. 37
      src/module/terms-of-use/screens/use-of-terms.tsx

36
ios/GoogleService-Info.plist

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CLIENT_ID</key>
<string>180425292880-bfueoq3p0oq0b0lf2qviebio2q338eu8.apps.googleusercontent.com</string>
<key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.180425292880-bfueoq3p0oq0b0lf2qviebio2q338eu8</string>
<key>API_KEY</key>
<string>AIzaSyDsJWXu0NtusG6fric25R8zN-j-LSHd_tg</string>
<key>GCM_SENDER_ID</key>
<string>180425292880</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>org.reactjs.native.example.Truth</string>
<key>PROJECT_ID</key>
<string>truthordare-6493e</string>
<key>STORAGE_BUCKET</key>
<string>truthordare-6493e.appspot.com</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<true></true>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:180425292880:ios:7109aea721588b757da555</string>
<key>DATABASE_URL</key>
<string>https://truthordare-6493e-default-rtdb.europe-west1.firebasedatabase.app</string>
</dict>
</plist>

9
ios/Podfile

@ -2,6 +2,13 @@ require_relative '../node_modules/react-native/scripts/react_native_pods' @@ -2,6 +2,13 @@ require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
platform :ios, '11.0'
pod 'Firebase', :modular_headers => true
pod 'FirebaseCoreInternal', :modular_headers => true
pod 'GoogleUtilities', :modular_headers => true
pod 'FirebaseCore', :modular_headers => true
use_frameworks!
$RNFirebaseAsStaticFramework = true
target 'Truth' do
config = use_native_modules!
@ -21,7 +28,7 @@ target 'Truth' do @@ -21,7 +28,7 @@ target 'Truth' do
#
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable the next line.
use_flipper!()
# use_flipper!()
post_install do |installer|
react_native_post_install(installer)

939
ios/Podfile.lock

File diff suppressed because it is too large Load Diff

66
ios/Truth.xcodeproj/project.pbxproj

File diff suppressed because one or more lines are too long

2
ios/Truth/AppDelegate.m

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
#import "RNSplashScreen.h"
#import <Firebase.h>
#ifdef FB_SONARKIT_ENABLED
#import <FlipperKit/FlipperClient.h>
@ -28,6 +29,7 @@ static void InitializeFlipper(UIApplication *application) { @@ -28,6 +29,7 @@ static void InitializeFlipper(UIApplication *application) {
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[FIRApp configure];
#ifdef FB_SONARKIT_ENABLED
InitializeFlipper(application);
#endif

10
iosDuplicate/Truth.xcworkspace/contents.xcworkspacedata generated

@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Truth.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

8
iosDuplicate/Truth.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

10
iosDuplicate1/Truth.xcworkspace/contents.xcworkspacedata generated

@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Truth.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

770
package-lock.json generated

@ -9,6 +9,8 @@ @@ -9,6 +9,8 @@
"version": "0.0.1",
"dependencies": {
"@react-native-async-storage/async-storage": "^1.17.11",
"@react-native-firebase/app": "^17.0.0",
"@react-native-firebase/firestore": "^17.0.0",
"@react-navigation/native": "^6.0.11",
"@react-navigation/native-stack": "^6.7.0",
"@reduxjs/toolkit": "^1.9.2",
@ -1963,6 +1965,269 @@ @@ -1963,6 +1965,269 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@expo/config-plugins": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz",
"integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==",
"dependencies": {
"@expo/config-types": "^47.0.0",
"@expo/json-file": "8.2.36",
"@expo/plist": "0.0.18",
"@expo/sdk-runtime-versions": "^1.0.0",
"@react-native/normalize-color": "^2.0.0",
"chalk": "^4.1.2",
"debug": "^4.3.1",
"find-up": "~5.0.0",
"getenv": "^1.0.0",
"glob": "7.1.6",
"resolve-from": "^5.0.0",
"semver": "^7.3.5",
"slash": "^3.0.0",
"xcode": "^3.0.1",
"xml2js": "0.4.23"
}
},
"node_modules/@expo/config-plugins/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/@expo/config-plugins/node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/@expo/config-plugins/node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/@expo/config-plugins/node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/@expo/config-plugins/node_modules/find-up": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dependencies": {
"locate-path": "^6.0.0",
"path-exists": "^4.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@expo/config-plugins/node_modules/glob": {
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
"engines": {
"node": "*"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@expo/config-plugins/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"engines": {
"node": ">=8"
}
},
"node_modules/@expo/config-plugins/node_modules/locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dependencies": {
"p-locate": "^5.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@expo/config-plugins/node_modules/p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dependencies": {
"yocto-queue": "^0.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@expo/config-plugins/node_modules/p-locate": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dependencies": {
"p-limit": "^3.0.2"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@expo/config-plugins/node_modules/semver": {
"version": "7.3.8",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
"dependencies": {
"lru-cache": "^6.0.0"
},
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@expo/config-plugins/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/@expo/config-plugins/node_modules/uuid": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
"integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/@expo/config-plugins/node_modules/xcode": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz",
"integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==",
"dependencies": {
"simple-plist": "^1.1.0",
"uuid": "^7.0.3"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/@expo/config-types": {
"version": "47.0.0",
"resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz",
"integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g=="
},
"node_modules/@expo/json-file": {
"version": "8.2.36",
"resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz",
"integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==",
"dependencies": {
"@babel/code-frame": "~7.10.4",
"json5": "^1.0.1",
"write-file-atomic": "^2.3.0"
}
},
"node_modules/@expo/json-file/node_modules/@babel/code-frame": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
"integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"dependencies": {
"@babel/highlight": "^7.10.4"
}
},
"node_modules/@expo/json-file/node_modules/json5": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dependencies": {
"minimist": "^1.2.0"
},
"bin": {
"json5": "lib/cli.js"
}
},
"node_modules/@expo/json-file/node_modules/write-file-atomic": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
"integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
"dependencies": {
"graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
"signal-exit": "^3.0.2"
}
},
"node_modules/@expo/plist": {
"version": "0.0.18",
"resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz",
"integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==",
"dependencies": {
"@xmldom/xmldom": "~0.7.0",
"base64-js": "^1.2.3",
"xmlbuilder": "^14.0.0"
}
},
"node_modules/@expo/plist/node_modules/xmlbuilder": {
"version": "14.0.0",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz",
"integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==",
"engines": {
"node": ">=8.0"
}
},
"node_modules/@expo/sdk-runtime-versions": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz",
"integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ=="
},
"node_modules/@hapi/hoek": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
@ -3697,6 +3962,28 @@ @@ -3697,6 +3962,28 @@
"integrity": "sha512-o6aam+0Ug1xGK3ABYmBm0B1YuEKfM/5kaoZO0eHbZwSpw9UzDX4G5y4Nx/K20FHqUmJHkZmLvOUFYwN4N+HqKA==",
"dev": true
},
"node_modules/@react-native-firebase/app": {
"version": "17.0.0",
"resolved": "https://registry.npmjs.org/@react-native-firebase/app/-/app-17.0.0.tgz",
"integrity": "sha512-CRMDrqaaC7XSZe5NFczP1gEUfABGWgMmu27rP0mO2CA5zWaZX3FZ42XLsbscem7hpttdGeUBIvHpsLRDg1qANw==",
"dependencies": {
"@expo/config-plugins": "^5.0.4",
"opencollective-postinstall": "^2.0.1",
"superstruct": "^0.6.2"
},
"peerDependencies": {
"react": "*",
"react-native": "*"
}
},
"node_modules/@react-native-firebase/firestore": {
"version": "17.0.0",
"resolved": "https://registry.npmjs.org/@react-native-firebase/firestore/-/firestore-17.0.0.tgz",
"integrity": "sha512-0/4UWq0LmIHmjXBDwtfMo1uxsM8cjD+2P8XOt8H+S/KKExXGpEBT7QQEdMXD98H5PmbMbBiywfA5RSsQAco63A==",
"peerDependencies": {
"@react-native-firebase/app": "17.0.0"
}
},
"node_modules/@react-native/assets": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz",
@ -4708,6 +4995,14 @@ @@ -4708,6 +4995,14 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
"node_modules/@xmldom/xmldom": {
"version": "0.7.9",
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz",
"integrity": "sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/abab": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
@ -7789,6 +8084,17 @@ @@ -7789,6 +8084,17 @@
"node": ">=0.10.0"
}
},
"node_modules/for-own": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
"integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
"dependencies": {
"for-in": "^1.0.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@ -8055,6 +8361,14 @@ @@ -8055,6 +8361,14 @@
"node": ">=0.10.0"
}
},
"node_modules/getenv": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz",
"integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==",
"engines": {
"node": ">=6"
}
},
"node_modules/getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@ -11182,7 +11496,6 @@ @@ -11182,7 +11496,6 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@ -11844,6 +12157,34 @@ @@ -11844,6 +12157,34 @@
"node": ">=0.10.0"
}
},
"node_modules/mixin-object": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz",
"integrity": "sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==",
"dependencies": {
"for-in": "^0.1.3",
"is-extendable": "^0.1.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/mixin-object/node_modules/for-in": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz",
"integrity": "sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/mixin-object/node_modules/is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
"integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/mkdirp": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
@ -12424,6 +12765,14 @@ @@ -12424,6 +12765,14 @@
"node": ">=4"
}
},
"node_modules/opencollective-postinstall": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz",
"integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==",
"bin": {
"opencollective-postinstall": "index.js"
}
},
"node_modules/optionator": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
@ -14047,7 +14396,6 @@ @@ -14047,7 +14396,6 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
"engines": {
"node": ">=8"
}
@ -15406,6 +15754,58 @@ @@ -15406,6 +15754,58 @@
"resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz",
"integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw=="
},
"node_modules/superstruct": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.6.2.tgz",
"integrity": "sha512-lvA97MFAJng3rfjcafT/zGTSWm6Tbpk++DP6It4Qg7oNaeM+2tdJMuVgGje21/bIpBEs6iQql1PJH6dKTjl4Ig==",
"dependencies": {
"clone-deep": "^2.0.1",
"kind-of": "^6.0.1"
}
},
"node_modules/superstruct/node_modules/clone-deep": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz",
"integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==",
"dependencies": {
"for-own": "^1.0.0",
"is-plain-object": "^2.0.4",
"kind-of": "^6.0.0",
"shallow-clone": "^1.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/superstruct/node_modules/is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
"integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/superstruct/node_modules/shallow-clone": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
"integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
"dependencies": {
"is-extendable": "^0.1.1",
"kind-of": "^5.0.0",
"mixin-object": "^2.0.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/superstruct/node_modules/shallow-clone/node_modules/kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
"integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@ -16519,6 +16919,26 @@ @@ -16519,6 +16919,26 @@
"integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
"dev": true
},
"node_modules/xml2js": {
"version": "0.4.23",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
"integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
"dependencies": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
},
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/xml2js/node_modules/xmlbuilder": {
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
"engines": {
"node": ">=4.0"
}
},
"node_modules/xmlbuilder": {
"version": "9.0.7",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
@ -16557,8 +16977,7 @@ @@ -16557,8 +16977,7 @@
"node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/yaml": {
"version": "1.10.2",
@ -16600,6 +17019,17 @@ @@ -16600,6 +17019,17 @@
"engines": {
"node": ">=6"
}
},
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
}
},
"dependencies": {
@ -17900,6 +18330,206 @@ @@ -17900,6 +18330,206 @@
}
}
},
"@expo/config-plugins": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz",
"integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==",
"requires": {
"@expo/config-types": "^47.0.0",
"@expo/json-file": "8.2.36",
"@expo/plist": "0.0.18",
"@expo/sdk-runtime-versions": "^1.0.0",
"@react-native/normalize-color": "^2.0.0",
"chalk": "^4.1.2",
"debug": "^4.3.1",
"find-up": "~5.0.0",
"getenv": "^1.0.0",
"glob": "7.1.6",
"resolve-from": "^5.0.0",
"semver": "^7.3.5",
"slash": "^3.0.0",
"xcode": "^3.0.1",
"xml2js": "0.4.23"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"find-up": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"requires": {
"locate-path": "^6.0.0",
"path-exists": "^4.0.0"
}
},
"glob": {
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
"locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"requires": {
"p-locate": "^5.0.0"
}
},
"p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"requires": {
"yocto-queue": "^0.1.0"
}
},
"p-locate": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"requires": {
"p-limit": "^3.0.2"
}
},
"semver": {
"version": "7.3.8",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
"requires": {
"lru-cache": "^6.0.0"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"requires": {
"has-flag": "^4.0.0"
}
},
"uuid": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
"integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg=="
},
"xcode": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz",
"integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==",
"requires": {
"simple-plist": "^1.1.0",
"uuid": "^7.0.3"
}
}
}
},
"@expo/config-types": {
"version": "47.0.0",
"resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz",
"integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g=="
},
"@expo/json-file": {
"version": "8.2.36",
"resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz",
"integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==",
"requires": {
"@babel/code-frame": "~7.10.4",
"json5": "^1.0.1",
"write-file-atomic": "^2.3.0"
},
"dependencies": {
"@babel/code-frame": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
"integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"requires": {
"@babel/highlight": "^7.10.4"
}
},
"json5": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"requires": {
"minimist": "^1.2.0"
}
},
"write-file-atomic": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
"integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
"requires": {
"graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
"signal-exit": "^3.0.2"
}
}
}
},
"@expo/plist": {
"version": "0.0.18",
"resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz",
"integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==",
"requires": {
"@xmldom/xmldom": "~0.7.0",
"base64-js": "^1.2.3",
"xmlbuilder": "^14.0.0"
},
"dependencies": {
"xmlbuilder": {
"version": "14.0.0",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz",
"integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg=="
}
}
},
"@expo/sdk-runtime-versions": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz",
"integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ=="
},
"@hapi/hoek": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
@ -19193,6 +19823,22 @@ @@ -19193,6 +19823,22 @@
"integrity": "sha512-o6aam+0Ug1xGK3ABYmBm0B1YuEKfM/5kaoZO0eHbZwSpw9UzDX4G5y4Nx/K20FHqUmJHkZmLvOUFYwN4N+HqKA==",
"dev": true
},
"@react-native-firebase/app": {
"version": "17.0.0",
"resolved": "https://registry.npmjs.org/@react-native-firebase/app/-/app-17.0.0.tgz",
"integrity": "sha512-CRMDrqaaC7XSZe5NFczP1gEUfABGWgMmu27rP0mO2CA5zWaZX3FZ42XLsbscem7hpttdGeUBIvHpsLRDg1qANw==",
"requires": {
"@expo/config-plugins": "^5.0.4",
"opencollective-postinstall": "^2.0.1",
"superstruct": "^0.6.2"
}
},
"@react-native-firebase/firestore": {
"version": "17.0.0",
"resolved": "https://registry.npmjs.org/@react-native-firebase/firestore/-/firestore-17.0.0.tgz",
"integrity": "sha512-0/4UWq0LmIHmjXBDwtfMo1uxsM8cjD+2P8XOt8H+S/KKExXGpEBT7QQEdMXD98H5PmbMbBiywfA5RSsQAco63A==",
"requires": {}
},
"@react-native/assets": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz",
@ -19887,6 +20533,11 @@ @@ -19887,6 +20533,11 @@
"eslint-visitor-keys": "^3.3.0"
}
},
"@xmldom/xmldom": {
"version": "0.7.9",
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz",
"integrity": "sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA=="
},
"abab": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
@ -22266,6 +22917,14 @@ @@ -22266,6 +22917,14 @@
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
"integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ=="
},
"for-own": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
"integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
"requires": {
"for-in": "^1.0.1"
}
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@ -22461,6 +23120,11 @@ @@ -22461,6 +23120,11 @@
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
"integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA=="
},
"getenv": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz",
"integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg=="
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@ -24794,7 +25458,6 @@ @@ -24794,7 +25458,6 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": {
"yallist": "^4.0.0"
}
@ -25357,6 +26020,27 @@ @@ -25357,6 +26020,27 @@
"is-extendable": "^1.0.1"
}
},
"mixin-object": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz",
"integrity": "sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==",
"requires": {
"for-in": "^0.1.3",
"is-extendable": "^0.1.1"
},
"dependencies": {
"for-in": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz",
"integrity": "sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g=="
},
"is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
"integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="
}
}
},
"mkdirp": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
@ -25807,6 +26491,11 @@ @@ -25807,6 +26491,11 @@
}
}
},
"opencollective-postinstall": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz",
"integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q=="
},
"optionator": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
@ -26998,8 +27687,7 @@ @@ -26998,8 +27687,7 @@
"resolve-from": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
},
"resolve-url": {
"version": "0.2.1",
@ -28063,6 +28751,50 @@ @@ -28063,6 +28751,50 @@
"resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz",
"integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw=="
},
"superstruct": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.6.2.tgz",
"integrity": "sha512-lvA97MFAJng3rfjcafT/zGTSWm6Tbpk++DP6It4Qg7oNaeM+2tdJMuVgGje21/bIpBEs6iQql1PJH6dKTjl4Ig==",
"requires": {
"clone-deep": "^2.0.1",
"kind-of": "^6.0.1"
},
"dependencies": {
"clone-deep": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz",
"integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==",
"requires": {
"for-own": "^1.0.0",
"is-plain-object": "^2.0.4",
"kind-of": "^6.0.0",
"shallow-clone": "^1.0.0"
}
},
"is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
"integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="
},
"shallow-clone": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
"integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
"requires": {
"is-extendable": "^0.1.1",
"kind-of": "^5.0.0",
"mixin-object": "^2.0.1"
},
"dependencies": {
"kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
"integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
}
}
}
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@ -28930,6 +29662,22 @@ @@ -28930,6 +29662,22 @@
"integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
"dev": true
},
"xml2js": {
"version": "0.4.23",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
"integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
"requires": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
},
"dependencies": {
"xmlbuilder": {
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
}
}
},
"xmlbuilder": {
"version": "9.0.7",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
@ -28962,8 +29710,7 @@ @@ -28962,8 +29710,7 @@
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"yaml": {
"version": "1.10.2",
@ -28996,6 +29743,11 @@ @@ -28996,6 +29743,11 @@
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
},
"yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
}
}
}

2
package.json

@ -16,6 +16,8 @@ @@ -16,6 +16,8 @@
},
"dependencies": {
"@react-native-async-storage/async-storage": "^1.17.11",
"@react-native-firebase/app": "^17.0.0",
"@react-native-firebase/firestore": "^17.0.0",
"@react-navigation/native": "^6.0.11",
"@react-navigation/native-stack": "^6.7.0",
"@reduxjs/toolkit": "^1.9.2",

2
src/i18n/locales/en/index.ts

@ -1,7 +1,9 @@ @@ -1,7 +1,9 @@
import {MainLocaleModule} from '../../types';
import {settingTranslation} from './settings.translation';
import {onBoardingTranslation} from './steps.translation';
import {buttonsTranslation} from './onBoardingButton.translation';
export const en: MainLocaleModule = {
settingTranslation,
stepTranslation: onBoardingTranslation,
buttonsTranslation,
};

8
src/i18n/locales/en/onBoardingButton.translation.ts

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
export const buttonsTranslation = {
skip: 'Skip',
priceButton: 'Open now / $4.99',
later: 'Later',
truth: '-TRUTH-',
random: 'RANDOM CHANCE',
dare: '-DARE-',
}

2
src/i18n/locales/hi/index.tsx

@ -1,7 +1,9 @@ @@ -1,7 +1,9 @@
import {MainLocaleModule} from '../../types';
import {settingTranslation} from './settings.translation';
import {onBoardingTranslation} from './steps.translation';
import { buttonsTranslation } from './onBoardingButton.translation';
export const hi: MainLocaleModule = {
settingTranslation,
stepTranslation: onBoardingTranslation,
buttonsTranslation,
};

8
src/i18n/locales/hi/onBoardingButton.translation.ts

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
export const buttonsTranslation = {
skip: 'जनक',
priceButton: 'जनक/ $4.99',
later: 'जनक',
truth: '-सच-',
random: 'यिक म',
dare: '-हिमत-',
}

2
src/i18n/locales/hi/steps.translation.ts

@ -8,7 +8,7 @@ export const onBoardingTranslation: OnBoardingLocale.OnboardingSteps = { @@ -8,7 +8,7 @@ export const onBoardingTranslation: OnBoardingLocale.OnboardingSteps = {
step2: {
title: 'आरम कर और \n खल क आनद ल!',
description:
'इस गम म "मसरत" क 5 सतर ह, जिनमछ क \n जपनिए गम मिित कि गय। आपक बस इतन करनि \n खि और आप खलन कर सकत\n.एस. आप हम अपन \nरशन और कय बन सकत।',
'इस गम म "मसरत" क 5 सतर ह, जिनमछ क \n जपनिए गम मिित कि गय। आपक बस इतन करनि \n खि और आप खलन कर सकत। प.एस. आप हम अपनरशन और कय बन सकत।',
},
step3: {
title: 'पियम सकरण!',

4
src/i18n/locales/ua/index.ts

@ -1,8 +1,10 @@ @@ -1,8 +1,10 @@
import {MainLocaleModule} from '../../types';
import {settingTranslation} from './settings.translation';
import {onBoardingTranslationUa} from './step.translation';
import { buttonsTranslation } from './onBoardingButton.translation';
export const ua: MainLocaleModule = {
stepTranslation: onBoardingTranslationUa,
settingTranslation: settingTranslation,
};
buttonsTranslation,
};

8
src/i18n/locales/ua/onBoardingButton.translation.ts

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
export const buttonsTranslation = {
skip: 'Далі',
priceButton: 'Придбати за / $4.99',
later: 'Пізніше',
truth: '-ПРАВДА-',
random: 'ВИПАДКОВО',
dare: '-ДІЯ-',
}

4
src/i18n/locales/ua/step.translation.ts

@ -8,9 +8,9 @@ export const onBoardingTranslationUa = { @@ -8,9 +8,9 @@ export const onBoardingTranslationUa = {
},
step2: {
title: 'Розслабтеся та насолоджуйтеся \n грою',
title: 'Розслабтеся та насолоджуйтеся грою',
description:
'У цій грі є 5 рівнів "пікантності",\n деякі з яких розділені на ігри для пари \n або компанії. Все, що вам потрібно зробити, це \n додати гравців, і ви можете почати грати.\n P.S. Ви завжди можете створити власні \n питання та завдання',
'У цій грі є 5 рівнів "пікантності", деякі з яких розділені на ігри для пари або компанії. Все, що вам потрібно зробити, це додати \n гравців, і ви можете почати грати.\n P.S. Ви завжди можете створити власні \n питання та завдання',
},
step3: {
title: 'Преміум версія!',

8
src/i18n/types/buttons.types.ts

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
export interface Buttons {
skip: string,
priceButton: string,
later: string,
truth: string,
random: string,
dare: string,
}

2
src/i18n/types/index.ts

@ -1,6 +1,8 @@ @@ -1,6 +1,8 @@
import { Buttons } from './buttons.types';
import {OnBoardingLocale} from './on-boarding.types';
import {SettingLocale} from './settings.types';
export interface MainLocaleModule {
stepTranslation: OnBoardingLocale.OnboardingSteps;
settingTranslation: SettingLocale.Core;
buttonsTranslation: Buttons;
}

4
src/module/game/screen/select-packages.screen.tsx

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
import React, {FC} from 'react';
import React, {FC, useEffect} from 'react';
import {
colors,
Header,
@ -10,13 +10,13 @@ import {PackagesList} from '../../package'; @@ -10,13 +10,13 @@ import {PackagesList} from '../../package';
interface IProps extends IRouteParams {}
export const SelectPackages: FC<IProps> = ({navigation}) => {
return (
<ScreenLayout
backgroundColor={colors.primaryColor}
backgroundStatusBar={colors.primaryColor}
headerComponent={
<Header
title="Packages"
leftIcon="settings"
rightIcon="setting"
onPressRight={() =>

5
src/module/package/components/packages-item.component.tsx

@ -25,11 +25,12 @@ export const PackagesItem: FC<IPackage> = ({ @@ -25,11 +25,12 @@ export const PackagesItem: FC<IPackage> = ({
questions,
actions,
}) => {
const navigation = useNavigation();
const navigation = useNavigation<any>();
const dispatch = useAppDispatch();
const play = () => {
navigation.navigate(RouteKey.Package as any);
console.log(title);
navigation.navigate(RouteKey.Package, {title});
dispatch(resetSteps());
dispatch(shuffleTruths());
dispatch(shuffleDares());

1
src/module/package/components/packages-list.tsx

@ -8,6 +8,7 @@ import {useTranslation} from 'react-i18next'; @@ -8,6 +8,7 @@ import {useTranslation} from 'react-i18next';
export const PackagesList = () => {
const {i18n} = useTranslation();
const lang = i18n.language;
console.log(lang);
return (
<View style={styles.container}>
{defaultPackages.map((item: any, index) => (

44
src/module/privacy-policy/screens/privacy-policy.tsx

@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import {View} from 'react-native';
import {
colors,
Header,
IRouteParams,
RouteKey,
ScreenLayout,
} from '../../shared';
import { MainTextContainer } from '../../shared/components/text-containers/main-text-container';
import { privacy } from '../../shared/config/privacy-texts';
interface IProps extends IRouteParams {}
export const PrivacyPolicy: React.FC<IProps> = ({navigation}) => {
const goBack = () => {
navigation.navigate(RouteKey.Setting, {
previous_screen: RouteKey.Game,
});
};
const {t, i18n} = useTranslation();
const lang = i18n.language;
console.log('lang:', i18n.language);
return (
<ScreenLayout
backgroundColor={colors.primaryColor}
backgroundStatusBar={colors.primaryColor}
paddingHorizontal={20}
headerComponent={
<Header
leftIcon="arrow"
title="Privacy Policy"
onPressLeft={() => goBack()}
rightIcon="none"
/>
}>
<MainTextContainer text={privacy[lang as keyof typeof privacy]}/>
</ScreenLayout>
);
};

40
src/module/root/atoms/premium-button.component.tsx

@ -1,9 +1,10 @@ @@ -1,9 +1,10 @@
import AsyncStorage from '@react-native-async-storage/async-storage';
import { useNavigation } from '@react-navigation/native';
import { navigate } from '@react-navigation/routers/lib/typescript/src/CommonActions';
import {CommonActions, useNavigation} from '@react-navigation/native';
import {navigate} from '@react-navigation/routers/lib/typescript/src/CommonActions';
import React, {FC} from 'react';
import { useTranslation } from 'react-i18next';
import {StyleSheet, Text, TouchableOpacity, View} from 'react-native';
import { StorageKey, storageService } from '../../services/async-storage.service';
import {StorageKey, storageService} from '../../services/async-storage.service';
import {colors, IRouteParams, PrimaryBtn, RouteKey} from '../../shared';
interface IProps {
currentIndex: number;
@ -21,30 +22,29 @@ interface IProps { @@ -21,30 +22,29 @@ interface IProps {
) => void;
}
export const GroupBtn: FC<IProps> = ({currentIndex, data, onPressItem}) => {
const navigation = useNavigation();
const {i18n, t} = useTranslation();
const onBoardFinish = async () => {
await AsyncStorage.setItem(StorageKey.OnBoarding, 'true');
navigation.navigate(RouteKey.Game as any);
navigation.dispatch(CommonActions.reset({
index: 0,
routes: [{name: RouteKey.Game}]
}));
};
if (data.length - 1 === currentIndex) {
return (
<View style={styles.btncontainer}>
<PrimaryBtn
onPress={async () => {
await AsyncStorage.setItem(StorageKey.OnBoarding, 'true');
navigation.navigate(RouteKey.Game as any);
console.log('last buttons')
}}
children={<Text style={styles.text}>{`Open now / $4.99`}</Text>}
onPress={onBoardFinish}
children={<Text style={styles.text}>{t('buttonsTranslation.priceButton')}</Text>}
width={190}
/>
<TouchableOpacity
style={styles.laterBtn}
onPress={ async () =>{
await AsyncStorage.setItem(StorageKey.OnBoarding, 'true');
navigation.navigate(RouteKey.Game as any);
console.log('last buttons')
}
}>
<Text style={[styles.text, {fontWeight: '400'}]}>Later</Text>
<TouchableOpacity style={styles.laterBtn} onPress={onBoardFinish}>
<Text style={[styles.text, {fontWeight: '400'}]}>{t('buttonsTranslation.later')}</Text>
</TouchableOpacity>
</View>
);
@ -52,7 +52,7 @@ export const GroupBtn: FC<IProps> = ({currentIndex, data, onPressItem}) => { @@ -52,7 +52,7 @@ export const GroupBtn: FC<IProps> = ({currentIndex, data, onPressItem}) => {
return (
<PrimaryBtn
onPress={() => onPressItem(data)}
children={<Text style={styles.text}>Skip</Text>}
children={<Text style={styles.text}>{t('buttonsTranslation.skip')}</Text>}
width={155}
/>
);

31
src/module/root/navigations-groups/on-boardings-group.tsx

@ -5,17 +5,40 @@ import {LanguageSelect, Onboarding, Setting} from '../screens'; @@ -5,17 +5,40 @@ import {LanguageSelect, Onboarding, Setting} from '../screens';
import {SelectPackages} from '../../game/screen/select-packages.screen';
import {LoadingScreen} from '../screens/loading-screen';
import {Game} from '../screens/game';
import { Questions } from '../screens/questions';
import {Questions} from '../screens/questions';
import {PrivacyPolicy} from '../../privacy-policy/screens/privacy-policy';
import {UseOfTerms} from '../../terms-of-use/screens/use-of-terms';
import firestore from '@react-native-firebase/firestore';
import AsyncStorage from '@react-native-async-storage/async-storage';
// console.log(usersCollection);
const Stack = createNativeStackNavigator();
export const OnboardingGroup: FC = () => {
// const usersCollection = firestore()
// .collection('GameItems')
// .get()
// .then(querySnapshot => {
// querySnapshot.forEach(snapshot => {
// let data = snapshot.data();
// data.GameItems.map(item => console.log(item));
// });
// });
const getall = async () => {
const keys = await AsyncStorage.getAllKeys();
const result = await AsyncStorage.multiGet(keys);
console.log(result);
}
getall();
return (
<Stack.Navigator
screenOptions={{
headerShown: false,
}}
initialRouteName={RouteKey.Loading}
>
initialRouteName={RouteKey.LanguageSelect}>
<Stack.Screen name={RouteKey.Questions} component={Questions} />
<Stack.Screen name={RouteKey.Package} component={Game} />
<Stack.Screen name={RouteKey.Onboarding} component={Onboarding} />
@ -23,6 +46,8 @@ export const OnboardingGroup: FC = () => { @@ -23,6 +46,8 @@ export const OnboardingGroup: FC = () => {
<Stack.Screen name={RouteKey.LanguageSelect} component={LanguageSelect} />
<Stack.Screen name={RouteKey.Game} component={SelectPackages} />
<Stack.Screen name={RouteKey.Setting} component={Setting} />
<Stack.Screen name={RouteKey.PrivacyPolicy} component={PrivacyPolicy} />
<Stack.Screen name={RouteKey.UseOfTerms} component={UseOfTerms} />
</Stack.Navigator>
);
};

20
src/module/root/screens/game.tsx

@ -7,11 +7,15 @@ import { @@ -7,11 +7,15 @@ import {
IRouteParams,
} from '../../shared';
import React from 'react';
import {NameTitle} from '../../shared/components/nameTitle/name-title';
import {NameTitle} from '../../shared/components/name-title/name-title';
import {RedButton} from '../../shared/components/buttons/red-button';
import { useTranslation } from 'react-i18next';
interface IProps extends IRouteParams {}
export const Game: React.FC<IProps> = ({navigation, route}) => {
const {title} = route.params;
const {t} = useTranslation();
const goBack = () => {
navigation.navigate(RouteKey.Game);
};
@ -19,8 +23,8 @@ export const Game: React.FC<IProps> = ({navigation, route}) => { @@ -19,8 +23,8 @@ export const Game: React.FC<IProps> = ({navigation, route}) => {
const randomGame = () => {
const isQuestions = Math.random() < 0.5;
navigation.navigate(RouteKey.Questions, {isQuestions})
}
navigation.navigate(RouteKey.Questions, {isQuestions, title});
};
return (
<ScreenLayout
@ -32,24 +36,26 @@ export const Game: React.FC<IProps> = ({navigation, route}) => { @@ -32,24 +36,26 @@ export const Game: React.FC<IProps> = ({navigation, route}) => {
leftIcon="arrow"
gamer={true}
onPressLeft={() => goBack()}
title="Crazy"
title={title}
/>
<NameTitle name="Player" />
<View style={styles.buttons}>
<RedButton
name="-TRUTH-"
name={t('buttonsTranslation.truth')}
isQuestions={true}
navigation={navigation}
route={route}
title={title}
/>
<TouchableOpacity onPress={randomGame}>
<Text style={styles.random}>RANDOM CHANCE</Text>
<Text style={styles.random}>{t('buttonsTranslation.random')}</Text>
</TouchableOpacity>
<RedButton
name="-DARE-"
name={t('buttonsTranslation.dare')}
isQuestions={false}
navigation={navigation}
route={route}
title={title}
/>
</View>
</>

2
src/module/root/screens/language-select.screen.tsx

@ -27,8 +27,6 @@ interface IProps extends IRouteParams {} @@ -27,8 +27,6 @@ interface IProps extends IRouteParams {}
export const LanguageSelect: FC<IProps> = ({navigation}) => {
const {t, i18n} = useTranslation();
console.log('before', i18n.language);
return (
<ScreenLayout
backgroundColor={colors.primaryColor}

16
src/module/root/screens/loading-screen.tsx

@ -8,10 +8,14 @@ import { @@ -8,10 +8,14 @@ import {
import React, {FC, useEffect, useState} from 'react';
import {ScreenLayout, colors, RouteKey} from '../../shared';
import AsyncStorage from '@react-native-async-storage/async-storage';
import {useNavigation} from '@react-navigation/native';
import {useNavigation, CommonActions} from '@react-navigation/native';
import {StorageKey, storageService} from '../../services/async-storage.service';
import { useTranslation } from 'react-i18next';
export const LoadingScreen = () => {
const {i18n} = useTranslation();
const navigate = useNavigation();
const getLanguage = async () => {
const response = await AsyncStorage.getItem(StorageKey.Language);
return response;
@ -26,6 +30,10 @@ export const LoadingScreen = () => { @@ -26,6 +30,10 @@ export const LoadingScreen = () => {
let language = await getLanguage();
const isOnBoard = await getOnboardEnd();
if (language) {
i18n.changeLanguage(language);
}
if (isOnBoard && language) {
navigate.navigate(RouteKey.Game as any);
} else if (language && !isOnBoard) {
@ -33,9 +41,13 @@ export const LoadingScreen = () => { @@ -33,9 +41,13 @@ export const LoadingScreen = () => {
} else if (!language) {
navigate.navigate(RouteKey.LanguageSelect as any);
}
navigate.dispatch(CommonActions.reset({
index: 0,
routes: [{name: RouteKey.Game}]
}));
};
const navigate = useNavigation();
useEffect(() => {
init();

14
src/module/root/screens/on-boarding.screen.tsx

@ -33,13 +33,13 @@ export const Onboarding: FC<IProps> = ({navigation}) => { @@ -33,13 +33,13 @@ export const Onboarding: FC<IProps> = ({navigation}) => {
<Header
leftIcon="arrow"
onPressLeft={() => goBack()}
rightIcon="setting"
onPressRight={() =>
{console.log('Option');
navigation.navigate(RouteKey.Setting, {
previous_screen: RouteKey.Onboarding,
})}
}
rightIcon="none"
// onPressRight={() =>
// {console.log('Option');
// navigation.navigate(RouteKey.Setting, {
// previous_screen: RouteKey.Onboarding,
// })}
// }
/>
}>
<ContentOnBoarding

45
src/module/root/screens/questions.tsx

@ -14,14 +14,17 @@ import { @@ -14,14 +14,17 @@ import {
IRouteParams,
PrimaryBtn,
} from '../../shared';
import React, { useState } from 'react';
import {NameTitle} from '../../shared/components/nameTitle/name-title';
import {QuestionBlock} from '../../shared/components/questionBlock/question-block';
import { MainModal } from '../../shared/components/modals/main-modal';
import { useAppDispatch } from '../../../store/hooks';
import { nextStep, resetSteps } from '../../services/current-step/current-step-slice';
import { shuffleTruths } from '../../services/truths/truth-slice';
import { shuffleDares } from '../../services/dares/dares-slice';
import React, {useState} from 'react';
import {NameTitle} from '../../shared/components/name-title/name-title';
import {QuestionBlock} from '../../shared/components/question-block/question-block';
import {MainModal} from '../../shared/components/modals/main-modal';
import {useAppDispatch} from '../../../store/hooks';
import {
nextStep,
resetSteps,
} from '../../services/current-step/current-step-slice';
import {shuffleTruths} from '../../services/truths/truth-slice';
import {shuffleDares} from '../../services/dares/dares-slice';
interface IProps extends IRouteParams {}
export const Questions: React.FC<IProps> = ({navigation, route}) => {
@ -29,22 +32,22 @@ export const Questions: React.FC<IProps> = ({navigation, route}) => { @@ -29,22 +32,22 @@ export const Questions: React.FC<IProps> = ({navigation, route}) => {
const dispatch = useAppDispatch();
console.log(route.params);
const {title} = route.params;
const goBack = () => {
navigation.navigate(RouteKey.Game);
};
const goGameScreen = () => {
navigation.navigate(RouteKey.Package);
navigation.navigate(RouteKey.Package, {title});
dispatch(nextStep());
}
};
const refreshList = () => {
dispatch(shuffleTruths());
dispatch(shuffleDares());
dispatch(resetSteps());
}
};
return (
<ScreenLayout
@ -63,11 +66,15 @@ export const Questions: React.FC<IProps> = ({navigation, route}) => { @@ -63,11 +66,15 @@ export const Questions: React.FC<IProps> = ({navigation, route}) => {
leftIcon="arrow"
gamer={true}
onPressLeft={() => goBack()}
title="Crazy"
title={title}
/>
<NameTitle name="Player" />
<QuestionBlock isQuestions={route.params.isQuestions}/>
<MainModal isVisible={isVisible} rate={true}/>
<QuestionBlock isQuestions={route.params.isQuestions} />
<MainModal
isVisible={isVisible}
rate={true}
setIsVisible={setIsVisible}
/>
</View>
<View style={styles.buttons}>
@ -82,7 +89,9 @@ export const Questions: React.FC<IProps> = ({navigation, route}) => { @@ -82,7 +89,9 @@ export const Questions: React.FC<IProps> = ({navigation, route}) => {
width={101}
/>
<PrimaryBtn
onPress={() => {goGameScreen()}}
onPress={() => {
goGameScreen();
}}
children={
<Image
source={require('../../../assets/image/play.png')}
@ -92,7 +101,9 @@ export const Questions: React.FC<IProps> = ({navigation, route}) => { @@ -92,7 +101,9 @@ export const Questions: React.FC<IProps> = ({navigation, route}) => {
width={101}
/>
<PrimaryBtn
onPress={() => {setIsVisible(true)}}
onPress={() => {
setIsVisible(true);
}}
children={
<Image
source={require('../../../assets/image/addPlus.png')}

19
src/module/setting/components/Settings-Item.component.tsx

@ -1,7 +1,9 @@ @@ -1,7 +1,9 @@
import {useNavigation} from '@react-navigation/native';
import React, {FC} from 'react';
import {useTranslation} from 'react-i18next';
import {StyleSheet, Text, View, TouchableOpacity} from 'react-native';
import {Icon} from '../../shared';
import {settingTranslation} from '../../../i18n/locales/en/settings.translation';
import {Icon, RouteKey} from '../../shared';
interface IProps {
title: string;
@ -11,8 +13,21 @@ interface IProps { @@ -11,8 +13,21 @@ interface IProps {
export const SettingsItem: FC<IProps> = ({title, iconName, component}) => {
const {t, i18n} = useTranslation();
const navigation = useNavigation();
const goTo = () => {
console.log(title);
switch (title) {
case 'settingTranslation.policy':
navigation.navigate(RouteKey.PrivacyPolicy as any);
break;
case 'settingTranslation.term':
navigation.navigate(RouteKey.UseOfTerms as any);
}
};
return (
<TouchableOpacity style={styles.container}>
<TouchableOpacity style={styles.container} onPress={goTo}>
<View style={styles.title}>
<Text style={styles.icon}>
<Icon name={iconName} size={22} color="#A798FF" />

5
src/module/shared/components/buttons/red-button.tsx

@ -8,12 +8,13 @@ import { IRouteParams } from '../../interfaces'; @@ -8,12 +8,13 @@ import { IRouteParams } from '../../interfaces';
interface IProps extends IRouteParams {
name: string;
isQuestions: boolean;
title: string;
}
export const RedButton: React.FC<IProps> = ({name , isQuestions, navigation}) => {
export const RedButton: React.FC<IProps> = ({name , isQuestions, navigation, title}) => {
return (
<TouchableOpacity style={styles.container} onPress={() => navigation.navigate(RouteKey.Questions, {isQuestions})}>
<TouchableOpacity style={styles.container} onPress={() => navigation.navigate(RouteKey.Questions, {isQuestions, title})}>
<Text style={styles.title}>{name}</Text>
</TouchableOpacity>
);

8
src/module/shared/components/header/header.component.tsx

@ -34,11 +34,12 @@ export const Header: FC<IProps> = ({ @@ -34,11 +34,12 @@ export const Header: FC<IProps> = ({
<Text style={styles.title}>{title}</Text>
)}
{rightIcon && (
{rightIcon && rightIcon !== 'none' && (
<TouchableOpacity style={styles.button} onPress={onPressRight}>
<Icon name={rightIcon} size={22} color={colors.secondaryColor} />
</TouchableOpacity>
)}
{rightIcon === 'none' && <View style={{width: 30}}></View>}
{gamer && <View style={{width: 27}}></View>}
</View>
);
@ -61,8 +62,9 @@ const styles = StyleSheet.create({ @@ -61,8 +62,9 @@ const styles = StyleSheet.create({
gamerTitle: {
backgroundColor: '#2C205C',
borderRadius: 60,
width: 122,
height: 54,
minWidth: 122,
padding: 14,
minHeight: 54,
justifyContent: 'center',
alignItems: 'center',
},

10
src/module/shared/components/modals/main-modal.tsx

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
import {Modal, View, Text, StyleSheet} from 'react-native';
import React from 'react';
import {Modal, View, Text, StyleSheet, TouchableOpacity, TouchableWithoutFeedback} from 'react-native';
import React, { Dispatch, SetStateAction } from 'react';
import {colors} from '../../colors';
import {PrimaryBtn} from '../buttons';
@ -8,6 +8,7 @@ interface IProps { @@ -8,6 +8,7 @@ interface IProps {
limit?: boolean;
custom?: boolean;
rate?: boolean;
setIsVisible: Dispatch<SetStateAction<boolean>>,
}
export const MainModal: React.FC<IProps> = ({
@ -15,6 +16,7 @@ export const MainModal: React.FC<IProps> = ({ @@ -15,6 +16,7 @@ export const MainModal: React.FC<IProps> = ({
limit,
custom,
rate,
setIsVisible,
}) => {
return (
<Modal visible={isVisible} transparent={true} animationType={'fade'}>
@ -57,12 +59,12 @@ export const MainModal: React.FC<IProps> = ({ @@ -57,12 +59,12 @@ export const MainModal: React.FC<IProps> = ({
) : (
<View style={styles.buttonsVertical}>
<PrimaryBtn
onPress={async () => {}}
onPress={() => {setIsVisible(false)}}
children={<Text style={styles.buttonText}>Rate the app</Text>}
width={'100%'}
/>
<PrimaryBtn
onPress={async () => {}}
onPress={ () => {setIsVisible(false)}}
children={
<Text style={[styles.buttonText, {fontWeight: '400'}]}>
Let the developer be sad further :(

0
src/module/shared/components/nameTitle/name-title.tsx → src/module/shared/components/name-title/name-title.tsx

0
src/module/shared/components/questionBlock/question-block.tsx → src/module/shared/components/question-block/question-block.tsx

32
src/module/shared/components/text-containers/main-text-container.tsx

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
import {StyleSheet, Text, View} from 'react-native';
import React from 'react';
import { colors } from '../../colors';
interface IProps {
text: string
}
export const MainTextContainer: React.FC<IProps> = ({text}) => {
return (
<View style={styles.container}>
<Text style={styles.description}>
{text}
</Text>
</View>
);
};
const styles = StyleSheet.create({
container: {
backgroundColor: colors.darkPurple,
borderRadius: 20,
paddingVertical: 32,
paddingHorizontal: 20,
},
description: {
lineHeight: 32,
fontSize: 22,
color: colors.purple,
textAlign: 'center'
}
});

6
src/module/shared/config/default-packages.tsx

@ -3,7 +3,7 @@ import {Image} from 'react-native'; @@ -3,7 +3,7 @@ import {Image} from 'react-native';
export const defaultPackages = [
{
title: {en: 'Under 18', ua: 'до 18 років', hi: '18 स'},
title: {en: 'Under 18', ua: 'До 18 років', hi: '18 स'},
image: (
<Image
source={require('../../../assets/image/rabbit.png')}
@ -51,7 +51,7 @@ export const defaultPackages = [ @@ -51,7 +51,7 @@ export const defaultPackages = [
],
},
{
title: {en: 'Light', ua: 'легкий', hi: 'रशन'},
title: {en: 'Light', ua: 'Легкий', hi: 'रशन'},
image: (
<Image
source={require('../../../assets/image/feathers.png')}
@ -99,7 +99,7 @@ export const defaultPackages = [ @@ -99,7 +99,7 @@ export const defaultPackages = [
],
},
{
title: {en: 'Crazy', ua: 'божевільний', hi: 'पगल'},
title: {en: 'Crazy', ua: 'Божевільний', hi: 'पगल'},
image: (
<Image
source={require('../../../assets/image/hand.png')}

5
src/module/shared/config/privacy-texts.ts

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
export const privacy = {
en: 'We collect, use and disclose Personal Information to provide you with the product or service you have requested and to offer you additional products and services we believe you might be interested in. The purposes for which we collect Personal Information will be identified before or at the time we collect the information. In certain circumstances, the purposes for which information is collected may be clear, and consent may be implied, such as where your name, address and payment information is provided as part of the order process',
ua: 'Ми збираємо, використовуємо та розкриваємо особисту інформацію, щоб надати вам продукт або послугу, які ви запитували, і запропонувати вам додаткові продукти та послуги, які, на нашу думку, можуть вас зацікавити. Цілі, для яких ми збираємо особисту інформацію, будуть визначені до або під час час, коли ми збираємо інформацію. За певних обставин цілі, для яких збирається інформація, можуть бути зрозумілими, а згода може матися на увазі, наприклад, коли ваше ім’я, адреса та платіжна інформація надаються як частина процесу замовлення',
hi: 'हम आपक अनित उतद यरदन करनिए वयकिगत जनक एकतर करत, उपयग करत और परकट करत और आपक अतिित उत और सशकश करनिए हमिस हि आपकि सकत। जिन उदिए हम वयकिगत जनक एकतर करत, उनक पहचन पहल पर कएग समय जब हम जनक एकतर करत। कछ परििि, जनक एकतर करन उदय सपषट ह सकत, और सहमतििित ह सकत, जि ऑरडर परकििप म आपकम, पत और भगतन जनक कहरदन क',
};

2
src/module/shared/enums/route-keys.ts

@ -6,4 +6,6 @@ export enum RouteKey { @@ -6,4 +6,6 @@ export enum RouteKey {
Loading = 'Loading',
Package = 'Package',
Questions = 'Questions',
PrivacyPolicy = 'PrivacyPolicy',
UseOfTerms = 'UseOfTerms',
}

2
src/module/terms-of-use/config/terms-text.ts

@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
export const TermsText =
'You agree to use our application for legitimate purposes and not for any illegal or unauthorized purpose, including without limitation, in violation of any intellectual property or privacy law. By agreeing to the Terms, you represent and warrant that you are at least the age of majority in your state or province of residence and are legally capable of entering into a binding contract.';

37
src/module/terms-of-use/screens/use-of-terms.tsx

@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
import React from 'react';
import {View} from 'react-native';
import {
colors,
Header,
IRouteParams,
RouteKey,
ScreenLayout,
} from '../../shared';
import { MainTextContainer } from '../../shared/components/text-containers/main-text-container';
import { TermsText } from '../config/terms-text';
interface IProps extends IRouteParams {}
export const UseOfTerms: React.FC<IProps> = ({navigation}) => {
const goBack = () => {
navigation.navigate(RouteKey.Setting, {
previous_screen: RouteKey.Game,
});
};
return (
<ScreenLayout
backgroundColor={colors.primaryColor}
backgroundStatusBar={colors.primaryColor}
paddingHorizontal={20}
headerComponent={
<Header
leftIcon="arrow"
title="Terms and conditions"
onPressLeft={() => goBack()}
rightIcon="none"
/>
}>
<MainTextContainer text={TermsText}/>
</ScreenLayout>
);
};
Loading…
Cancel
Save