├── .babelrc
├── .gitignore
├── App.js
├── README.md
├── __tests__
└── App-test.js
├── android
├── app
│ ├── BUCK
│ ├── build.gradle
│ ├── build_defs.bzl
│ ├── proguard-rules.pro
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ └── fonts
│ │ │ ├── AntDesign.ttf
│ │ │ ├── Entypo.ttf
│ │ │ ├── EvilIcons.ttf
│ │ │ ├── Feather.ttf
│ │ │ ├── FontAwesome.ttf
│ │ │ ├── FontAwesome5_Brands.ttf
│ │ │ ├── FontAwesome5_Regular.ttf
│ │ │ ├── FontAwesome5_Solid.ttf
│ │ │ ├── Foundation.ttf
│ │ │ ├── Ionicons.ttf
│ │ │ ├── MaterialCommunityIcons.ttf
│ │ │ ├── MaterialIcons.ttf
│ │ │ ├── Octicons.ttf
│ │ │ ├── Roboto.ttf
│ │ │ ├── Roboto_medium.ttf
│ │ │ ├── SimpleLineIcons.ttf
│ │ │ ├── Zocial.ttf
│ │ │ └── rubicon-icon-font.ttf
│ │ ├── java
│ │ └── com
│ │ │ └── cognitorn
│ │ │ ├── MainActivity.java
│ │ │ └── MainApplication.java
│ │ └── res
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ └── values
│ │ ├── strings.xml
│ │ └── styles.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── keystores
│ ├── BUCK
│ └── debug.keystore.properties
└── settings.gradle
├── app.json
├── assets
├── fonts
│ └── SpaceMono-Regular.ttf
└── images
│ ├── homescreen-background.jpg
│ ├── icon.png
│ ├── robot-dev.png
│ ├── robot-prod.png
│ └── splash.jpg
├── common
└── style.js
├── components
├── StyledText.js
└── TabBarIcon.js
├── constants
├── Colors.js
├── Layout.js
└── amplify-config.js
├── index.js
├── ios
├── CognitoRN-tvOS
│ └── Info.plist
├── CognitoRN-tvOSTests
│ └── Info.plist
├── CognitoRN.xcodeproj
│ ├── project.pbxproj
│ └── xcshareddata
│ │ └── xcschemes
│ │ ├── CognitoRN-tvOS.xcscheme
│ │ └── CognitoRN.xcscheme
├── CognitoRN
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Base.lproj
│ │ └── LaunchScreen.xib
│ ├── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ ├── Info.plist
│ └── main.m
└── CognitoRNTests
│ ├── CognitoRNTests.m
│ └── Info.plist
├── meta
└── images
│ ├── landing-page.png
│ ├── login-screen.png
│ └── secure-home.png
├── navigation
├── AppNavigator.js
└── MainTabNavigator.js
├── package.json
├── screens
├── auth
│ ├── ForgotPasswordScreen.js
│ ├── LandingScreen.js
│ ├── LoginScreen.js
│ ├── RegisterConfirmScreen.js
│ ├── RegisterDOBScreen.js
│ ├── RegisterFirstNameScreen.js
│ ├── RegisterLastNameScreen.js
│ ├── RegisterPasswordScreen.js
│ ├── RegisterUsernameScreen.js
│ └── style.js
└── secure
│ ├── chat
│ ├── ChatHomeScreen.js
│ ├── ChatNavigation.js
│ ├── ChatRoomScreen.js
│ └── graphql
│ │ ├── CreateEventMessageMeta.vtl
│ │ ├── CreateEventMessageMutation.js
│ │ ├── CreateEventMessageSubscription.js
│ │ ├── ListEventMessages.js
│ │ └── ListEventMessages.vtl
│ ├── home
│ └── HomeScreen.js
│ └── settings
│ └── SettingsScreen.js
└── yarn.lock
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["module:metro-react-native-babel-preset"]
3 | }
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # OSX
2 | #
3 | .DS_Store
4 |
5 | # Xcode
6 | #
7 | build/
8 | *.pbxuser
9 | !default.pbxuser
10 | *.mode1v3
11 | !default.mode1v3
12 | *.mode2v3
13 | !default.mode2v3
14 | *.perspectivev3
15 | !default.perspectivev3
16 | xcuserdata
17 | *.xccheckout
18 | *.moved-aside
19 | DerivedData
20 | *.hmap
21 | *.ipa
22 | *.xcuserstate
23 | project.xcworkspace
24 |
25 | # Android/IntelliJ
26 | #
27 | build/
28 | .idea
29 | .gradle
30 | local.properties
31 | *.iml
32 |
33 | # node.js
34 | #
35 | node_modules/
36 | npm-debug.log
37 | yarn-error.log
38 |
39 | # BUCK
40 | buck-out/
41 | \.buckd/
42 | *.keystore
43 |
44 | # fastlane
45 | #
46 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
47 | # screenshots whenever they are needed.
48 | # For more information about the recommended setup visit:
49 | # https://docs.fastlane.tools/best-practices/source-control/
50 |
51 | */fastlane/report.xml
52 | */fastlane/Preview.html
53 | */fastlane/screenshots
54 |
55 | # Bundle artifact
56 | *.jsbundle
57 |
--------------------------------------------------------------------------------
/App.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {Platform, StatusBar, StyleSheet, View} from 'react-native';
3 | import AppNavigator from './navigation/AppNavigator';
4 | import Amplify from '@aws-amplify/core';
5 | import {amplifyConfigs} from "./constants/amplify-config";
6 |
7 | Amplify.configure(amplifyConfigs);
8 | Amplify.Logger.LOG_LEVEL = 'INFO';
9 |
10 | export default class App extends React.Component {
11 |
12 | state = {
13 | isLoadingComplete: false,
14 | };
15 |
16 | constructor(props) {
17 | super(props);
18 |
19 | // Configure amplify
20 | Amplify.configure(amplifyConfigs);
21 |
22 | this.state = {loading: true};
23 | }
24 |
25 | render() {
26 |
27 | return (
28 |
29 | {Platform.OS === 'ios' && }
30 |
31 |
32 | );
33 | }
34 | }
35 |
36 | const styles = StyleSheet.create({
37 | container: {
38 | flex: 1,
39 | backgroundColor: '#fff',
40 | // paddingTop: Platform.OS === 'ios' ? 0 : StatusBar.currentHeight
41 | },
42 | });
43 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | React Native App with Cognito
2 | ===============================
3 | #### Creator: Vladimir Budilov
4 | * [LinkedIn](https://www.linkedin.com/in/vbudilov/)
5 | * [Medium](https://medium.com/@budilov)
6 |
7 |
8 | After reinventing the wheel a bunch of times I decided to create a fairly good-looking react native with Cognito template.
9 | ### Quickstart
10 |
11 | ```
12 | yarn install
13 | react-native run-android
14 | ```
15 |
16 | ### Screenshots
17 |
18 | 
19 | 
20 | 
21 |
22 | ### Tech stack/Frameworks/Services:
23 |
24 | 1. React Native
25 | 2. AWS Amplify
26 | 3. AWS Cognito
27 | 4. Native Base
28 |
29 | Note: You will have to create your own AWS Cognito User Pool in order to use this app (otherwise it'll default to my sample User Pool and all fo the users that register for your copy of the app will be registered in my User Pool). Once you create it, update the amplify-configs.js file under /constants.
30 |
31 | ```
32 | Found in /constants/amplify-config.js
33 |
34 | // REQUIRED - Amazon Cognito Region
35 | region: 'us-east-1',
36 |
37 | // OPTIONAL - Amazon Cognito User Pool ID
38 | userPoolId: 'us-east-1_######',
39 |
40 | // OPTIONAL - Amazon Cognito Web Client ID (26-char alphanumeric string)
41 | userPoolWebClientId: '#########',
42 | ```
43 |
44 |
45 | ##### The next step is to include a fully-functioning chat functionality with AWS Amplify and AWS AppSync. That's in the works.
46 |
47 | Note: if you encounter the following error when running ```react-native run-android```
48 |
49 | ```error spawnSync ./gradlew EACCES. Run CLI with --verbose flag for more details.```
50 |
51 | you need to change the permissions on your gradlew file:
52 |
53 | ```chmod 755 android/gradlew ```
54 |
55 |
--------------------------------------------------------------------------------
/__tests__/App-test.js:
--------------------------------------------------------------------------------
1 | import 'react-native';
2 | import React from 'react';
3 | import App from '../../rnCognito/App';
4 | import renderer from 'react-test-renderer';
5 | import NavigationTestUtils from 'react-navigation/NavigationTestUtils';
6 |
7 | describe('App snapshot', () => {
8 | jest.useFakeTimers();
9 | beforeEach(() => {
10 | NavigationTestUtils.resetInternalState();
11 | });
12 |
13 | it('renders the loading screen', async () => {
14 | const tree = renderer.create().toJSON();
15 | expect(tree).toMatchSnapshot();
16 | });
17 |
18 | it('renders the root without loading screen', async () => {
19 | const tree = renderer.create().toJSON();
20 | expect(tree).toMatchSnapshot();
21 | });
22 | });
23 |
--------------------------------------------------------------------------------
/android/app/BUCK:
--------------------------------------------------------------------------------
1 | # To learn about Buck see [Docs](https://buckbuild.com/).
2 | # To run your application with Buck:
3 | # - install Buck
4 | # - `npm start` - to start the packager
5 | # - `cd android`
6 | # - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"`
7 | # - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck
8 | # - `buck install -r android/app` - compile, install and run application
9 | #
10 |
11 | load(":build_defs.bzl", "create_aar_targets", "create_jar_targets")
12 |
13 | lib_deps = []
14 |
15 | create_aar_targets(glob(["libs/*.aar"]))
16 |
17 | create_jar_targets(glob(["libs/*.jar"]))
18 |
19 | android_library(
20 | name = "all-libs",
21 | exported_deps = lib_deps,
22 | )
23 |
24 | android_library(
25 | name = "app-code",
26 | srcs = glob([
27 | "src/main/java/**/*.java",
28 | ]),
29 | deps = [
30 | ":all-libs",
31 | ":build_config",
32 | ":res",
33 | ],
34 | )
35 |
36 | android_build_config(
37 | name = "build_config",
38 | package = "com.cognitorn",
39 | )
40 |
41 | android_resource(
42 | name = "res",
43 | package = "com.cognitorn",
44 | res = "src/main/res",
45 | )
46 |
47 | android_binary(
48 | name = "app",
49 | keystore = "//android/keystores:debug",
50 | manifest = "src/main/AndroidManifest.xml",
51 | package_type = "debug",
52 | deps = [
53 | ":app-code",
54 | ],
55 | )
56 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: "com.android.application"
2 |
3 | import com.android.build.OutputFile
4 |
5 | /**
6 | * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
7 | * and bundleReleaseJsAndAssets).
8 | * These basically call `react-native bundle` with the correct arguments during the Android build
9 | * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
10 | * bundle directly from the development server. Below you can see all the possible configurations
11 | * and their defaults. If you decide to add a configuration block, make sure to add it before the
12 | * `apply from: "../../node_modules/react-native/react.gradle"` line.
13 | *
14 | * project.ext.react = [
15 | * // the name of the generated asset file containing your JS bundle
16 | * bundleAssetName: "index.android.bundle",
17 | *
18 | * // the entry file for bundle generation
19 | * entryFile: "index.android.js",
20 | *
21 | * // whether to bundle JS and assets in debug mode
22 | * bundleInDebug: false,
23 | *
24 | * // whether to bundle JS and assets in release mode
25 | * bundleInRelease: true,
26 | *
27 | * // whether to bundle JS and assets in another build variant (if configured).
28 | * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
29 | * // The configuration property can be in the following formats
30 | * // 'bundleIn${productFlavor}${buildType}'
31 | * // 'bundleIn${buildType}'
32 | * // bundleInFreeDebug: true,
33 | * // bundleInPaidRelease: true,
34 | * // bundleInBeta: true,
35 | *
36 | * // whether to disable dev mode in custom build variants (by default only disabled in release)
37 | * // for example: to disable dev mode in the staging build type (if configured)
38 | * devDisabledInStaging: true,
39 | * // The configuration property can be in the following formats
40 | * // 'devDisabledIn${productFlavor}${buildType}'
41 | * // 'devDisabledIn${buildType}'
42 | *
43 | * // the root of your project, i.e. where "package.json" lives
44 | * root: "../../",
45 | *
46 | * // where to put the JS bundle asset in debug mode
47 | * jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
48 | *
49 | * // where to put the JS bundle asset in release mode
50 | * jsBundleDirRelease: "$buildDir/intermediates/assets/release",
51 | *
52 | * // where to put drawable resources / React Native assets, e.g. the ones you use via
53 | * // require('./image.png')), in debug mode
54 | * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
55 | *
56 | * // where to put drawable resources / React Native assets, e.g. the ones you use via
57 | * // require('./image.png')), in release mode
58 | * resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
59 | *
60 | * // by default the gradle tasks are skipped if none of the JS files or assets change; this means
61 | * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
62 | * // date; if you have any other folders that you want to ignore for performance reasons (gradle
63 | * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
64 | * // for example, you might want to remove it from here.
65 | * inputExcludes: ["android/**", "ios/**"],
66 | *
67 | * // override which node gets called and with what additional arguments
68 | * nodeExecutableAndArgs: ["node"],
69 | *
70 | * // supply additional arguments to the packager
71 | * extraPackagerArgs: []
72 | * ]
73 | */
74 |
75 | project.ext.react = [
76 | entryFile: "index.js"
77 | ]
78 |
79 | apply from: "../../node_modules/react-native/react.gradle"
80 |
81 | /**
82 | * Set this to true to create two separate APKs instead of one:
83 | * - An APK that only works on ARM devices
84 | * - An APK that only works on x86 devices
85 | * The advantage is the size of the APK is reduced by about 4MB.
86 | * Upload all the APKs to the Play Store and people will download
87 | * the correct one based on the CPU architecture of their device.
88 | */
89 | def enableSeparateBuildPerCPUArchitecture = false
90 |
91 | /**
92 | * Run Proguard to shrink the Java bytecode in release builds.
93 | */
94 | def enableProguardInReleaseBuilds = false
95 |
96 | android {
97 | compileSdkVersion rootProject.ext.compileSdkVersion
98 |
99 | compileOptions {
100 | sourceCompatibility JavaVersion.VERSION_1_8
101 | targetCompatibility JavaVersion.VERSION_1_8
102 | }
103 |
104 | defaultConfig {
105 | applicationId "com.cognitorn"
106 | minSdkVersion rootProject.ext.minSdkVersion
107 | targetSdkVersion rootProject.ext.targetSdkVersion
108 | versionCode 1
109 | versionName "1.0"
110 | }
111 | splits {
112 | abi {
113 | reset()
114 | enable enableSeparateBuildPerCPUArchitecture
115 | universalApk false // If true, also generate a universal APK
116 | include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
117 | }
118 | }
119 | buildTypes {
120 | release {
121 | minifyEnabled enableProguardInReleaseBuilds
122 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
123 | }
124 | }
125 | // applicationVariants are e.g. debug, release
126 | applicationVariants.all { variant ->
127 | variant.outputs.each { output ->
128 | // For each separate APK per architecture, set a unique version code as described here:
129 | // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
130 | def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3, "x86_64": 4]
131 | def abi = output.getFilter(OutputFile.ABI)
132 | if (abi != null) { // null for the universal-debug, universal-release variants
133 | output.versionCodeOverride =
134 | versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
135 | }
136 | }
137 | }
138 | }
139 |
140 | dependencies {
141 | implementation project(':react-native-gesture-handler')
142 | implementation project(':react-native-vector-icons')
143 | implementation project(':amazon-cognito-identity-js')
144 | implementation fileTree(dir: "libs", include: ["*.jar"])
145 | implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
146 | implementation "com.facebook.react:react-native:+" // From node_modules
147 | }
148 |
149 | // Run this once to be able to run the application with BUCK
150 | // puts all compile dependencies into folder libs for BUCK to use
151 | task copyDownloadableDepsToLibs(type: Copy) {
152 | from configurations.compile
153 | into 'libs'
154 | }
155 |
--------------------------------------------------------------------------------
/android/app/build_defs.bzl:
--------------------------------------------------------------------------------
1 | """Helper definitions to glob .aar and .jar targets"""
2 |
3 | def create_aar_targets(aarfiles):
4 | for aarfile in aarfiles:
5 | name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")]
6 | lib_deps.append(":" + name)
7 | android_prebuilt_aar(
8 | name = name,
9 | aar = aarfile,
10 | )
11 |
12 | def create_jar_targets(jarfiles):
13 | for jarfile in jarfiles:
14 | name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")]
15 | lib_deps.append(":" + name)
16 | prebuilt_jar(
17 | name = name,
18 | binary_jar = jarfile,
19 | )
20 |
--------------------------------------------------------------------------------
/android/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
13 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/AntDesign.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/AntDesign.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Entypo.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/Entypo.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/EvilIcons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/EvilIcons.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Feather.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/Feather.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/FontAwesome.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/FontAwesome.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Foundation.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/Foundation.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Ionicons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/Ionicons.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/MaterialIcons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/MaterialIcons.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Octicons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/Octicons.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Roboto.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/Roboto.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Roboto_medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/Roboto_medium.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/SimpleLineIcons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/SimpleLineIcons.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Zocial.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/Zocial.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/rubicon-icon-font.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/assets/fonts/rubicon-icon-font.ttf
--------------------------------------------------------------------------------
/android/app/src/main/java/com/cognitorn/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.cognitorn;
2 |
3 | import com.facebook.react.ReactActivity;
4 |
5 | public class MainActivity extends ReactActivity {
6 |
7 | /**
8 | * Returns the name of the main component registered from JavaScript.
9 | * This is used to schedule rendering of the component.
10 | */
11 | @Override
12 | protected String getMainComponentName() {
13 | return "CognitoRN";
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/cognitorn/MainApplication.java:
--------------------------------------------------------------------------------
1 | package com.cognitorn;
2 |
3 | import android.app.Application;
4 |
5 | import com.facebook.react.ReactApplication;
6 | import com.swmansion.gesturehandler.react.RNGestureHandlerPackage;
7 | import com.oblador.vectoricons.VectorIconsPackage;
8 | import com.amazonaws.RNAWSCognitoPackage;
9 | import com.facebook.react.ReactNativeHost;
10 | import com.facebook.react.ReactPackage;
11 | import com.facebook.react.shell.MainReactPackage;
12 | import com.facebook.soloader.SoLoader;
13 |
14 | import java.util.Arrays;
15 | import java.util.List;
16 |
17 | public class MainApplication extends Application implements ReactApplication {
18 |
19 | private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
20 | @Override
21 | public boolean getUseDeveloperSupport() {
22 | return BuildConfig.DEBUG;
23 | }
24 |
25 | @Override
26 | protected List getPackages() {
27 | return Arrays.asList(
28 | new MainReactPackage(),
29 | new RNGestureHandlerPackage(),
30 | new VectorIconsPackage(),
31 | new RNAWSCognitoPackage()
32 | );
33 | }
34 |
35 | @Override
36 | protected String getJSMainModuleName() {
37 | return "index";
38 | }
39 | };
40 |
41 | @Override
42 | public ReactNativeHost getReactNativeHost() {
43 | return mReactNativeHost;
44 | }
45 |
46 | @Override
47 | public void onCreate() {
48 | super.onCreate();
49 | SoLoader.init(this, /* native exopackage */ false);
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | CognitoRN
3 |
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | ext {
5 | buildToolsVersion = "28.0.3"
6 | minSdkVersion = 16
7 | compileSdkVersion = 28
8 | targetSdkVersion = 28
9 | supportLibVersion = "28.0.0"
10 | }
11 | repositories {
12 | google()
13 | jcenter()
14 | }
15 | dependencies {
16 | classpath("com.android.tools.build:gradle:3.4.0")
17 |
18 | // NOTE: Do not place your application dependencies here; they belong
19 | // in the individual module build.gradle files
20 | }
21 | }
22 |
23 | allprojects {
24 | repositories {
25 | mavenLocal()
26 | google()
27 | jcenter()
28 | maven {
29 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
30 | url "$rootDir/../node_modules/react-native/android"
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/android/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/android/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | #
4 | # Copyright 2015 the original author or authors.
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ##############################################################################
20 | ##
21 | ## Gradle start up script for UN*X
22 | ##
23 | ##############################################################################
24 |
25 | # Attempt to set APP_HOME
26 | # Resolve links: $0 may be a link
27 | PRG="$0"
28 | # Need this for relative symlinks.
29 | while [ -h "$PRG" ] ; do
30 | ls=`ls -ld "$PRG"`
31 | link=`expr "$ls" : '.*-> \(.*\)$'`
32 | if expr "$link" : '/.*' > /dev/null; then
33 | PRG="$link"
34 | else
35 | PRG=`dirname "$PRG"`"/$link"
36 | fi
37 | done
38 | SAVED="`pwd`"
39 | cd "`dirname \"$PRG\"`/" >/dev/null
40 | APP_HOME="`pwd -P`"
41 | cd "$SAVED" >/dev/null
42 |
43 | APP_NAME="Gradle"
44 | APP_BASE_NAME=`basename "$0"`
45 |
46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
48 |
49 | # Use the maximum available, or set MAX_FD != -1 to use that value.
50 | MAX_FD="maximum"
51 |
52 | warn () {
53 | echo "$*"
54 | }
55 |
56 | die () {
57 | echo
58 | echo "$*"
59 | echo
60 | exit 1
61 | }
62 |
63 | # OS specific support (must be 'true' or 'false').
64 | cygwin=false
65 | msys=false
66 | darwin=false
67 | nonstop=false
68 | case "`uname`" in
69 | CYGWIN* )
70 | cygwin=true
71 | ;;
72 | Darwin* )
73 | darwin=true
74 | ;;
75 | MINGW* )
76 | msys=true
77 | ;;
78 | NONSTOP* )
79 | nonstop=true
80 | ;;
81 | esac
82 |
83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
84 |
85 | # Determine the Java command to use to start the JVM.
86 | if [ -n "$JAVA_HOME" ] ; then
87 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
88 | # IBM's JDK on AIX uses strange locations for the executables
89 | JAVACMD="$JAVA_HOME/jre/sh/java"
90 | else
91 | JAVACMD="$JAVA_HOME/bin/java"
92 | fi
93 | if [ ! -x "$JAVACMD" ] ; then
94 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
95 |
96 | Please set the JAVA_HOME variable in your environment to match the
97 | location of your Java installation."
98 | fi
99 | else
100 | JAVACMD="java"
101 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
102 |
103 | Please set the JAVA_HOME variable in your environment to match the
104 | location of your Java installation."
105 | fi
106 |
107 | # Increase the maximum file descriptors if we can.
108 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
109 | MAX_FD_LIMIT=`ulimit -H -n`
110 | if [ $? -eq 0 ] ; then
111 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
112 | MAX_FD="$MAX_FD_LIMIT"
113 | fi
114 | ulimit -n $MAX_FD
115 | if [ $? -ne 0 ] ; then
116 | warn "Could not set maximum file descriptor limit: $MAX_FD"
117 | fi
118 | else
119 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
120 | fi
121 | fi
122 |
123 | # For Darwin, add options to specify how the application appears in the dock
124 | if $darwin; then
125 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
126 | fi
127 |
128 | # For Cygwin, switch paths to Windows format before running java
129 | if $cygwin ; then
130 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
131 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
132 | JAVACMD=`cygpath --unix "$JAVACMD"`
133 |
134 | # We build the pattern for arguments to be converted via cygpath
135 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
136 | SEP=""
137 | for dir in $ROOTDIRSRAW ; do
138 | ROOTDIRS="$ROOTDIRS$SEP$dir"
139 | SEP="|"
140 | done
141 | OURCYGPATTERN="(^($ROOTDIRS))"
142 | # Add a user-defined pattern to the cygpath arguments
143 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
144 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
145 | fi
146 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
147 | i=0
148 | for arg in "$@" ; do
149 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
150 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
151 |
152 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
153 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
154 | else
155 | eval `echo args$i`="\"$arg\""
156 | fi
157 | i=$((i+1))
158 | done
159 | case $i in
160 | (0) set -- ;;
161 | (1) set -- "$args0" ;;
162 | (2) set -- "$args0" "$args1" ;;
163 | (3) set -- "$args0" "$args1" "$args2" ;;
164 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
165 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
166 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
167 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
168 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
169 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
170 | esac
171 | fi
172 |
173 | # Escape application args
174 | save () {
175 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
176 | echo " "
177 | }
178 | APP_ARGS=$(save "$@")
179 |
180 | # Collect all arguments for the java command, following the shell quoting and substitution rules
181 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
182 |
183 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
184 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
185 | cd "$(dirname "$0")"
186 | fi
187 |
188 | exec "$JAVACMD" "$@"
189 |
--------------------------------------------------------------------------------
/android/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem http://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%" == "" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%" == "" set DIRNAME=.
29 | set APP_BASE_NAME=%~n0
30 | set APP_HOME=%DIRNAME%
31 |
32 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
33 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
34 |
35 | @rem Find java.exe
36 | if defined JAVA_HOME goto findJavaFromJavaHome
37 |
38 | set JAVA_EXE=java.exe
39 | %JAVA_EXE% -version >NUL 2>&1
40 | if "%ERRORLEVEL%" == "0" goto init
41 |
42 | echo.
43 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
44 | echo.
45 | echo Please set the JAVA_HOME variable in your environment to match the
46 | echo location of your Java installation.
47 |
48 | goto fail
49 |
50 | :findJavaFromJavaHome
51 | set JAVA_HOME=%JAVA_HOME:"=%
52 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
53 |
54 | if exist "%JAVA_EXE%" goto init
55 |
56 | echo.
57 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
58 | echo.
59 | echo Please set the JAVA_HOME variable in your environment to match the
60 | echo location of your Java installation.
61 |
62 | goto fail
63 |
64 | :init
65 | @rem Get command-line arguments, handling Windows variants
66 |
67 | if not "%OS%" == "Windows_NT" goto win9xME_args
68 |
69 | :win9xME_args
70 | @rem Slurp the command line arguments.
71 | set CMD_LINE_ARGS=
72 | set _SKIP=2
73 |
74 | :win9xME_args_slurp
75 | if "x%~1" == "x" goto execute
76 |
77 | set CMD_LINE_ARGS=%*
78 |
79 | :execute
80 | @rem Setup the command line
81 |
82 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
83 |
84 | @rem Execute Gradle
85 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
86 |
87 | :end
88 | @rem End local scope for the variables with windows NT shell
89 | if "%ERRORLEVEL%"=="0" goto mainEnd
90 |
91 | :fail
92 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
93 | rem the _cmd.exe /c_ return code!
94 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
95 | exit /b 1
96 |
97 | :mainEnd
98 | if "%OS%"=="Windows_NT" endlocal
99 |
100 | :omega
101 |
--------------------------------------------------------------------------------
/android/keystores/BUCK:
--------------------------------------------------------------------------------
1 | keystore(
2 | name = "debug",
3 | properties = "debug.keystore.properties",
4 | store = "debug.keystore",
5 | visibility = [
6 | "PUBLIC",
7 | ],
8 | )
9 |
--------------------------------------------------------------------------------
/android/keystores/debug.keystore.properties:
--------------------------------------------------------------------------------
1 | key.store=debug.keystore
2 | key.alias=androiddebugkey
3 | key.store.password=android
4 | key.alias.password=android
5 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'CognitoRN'
2 | include ':react-native-gesture-handler'
3 | project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')
4 | include ':react-native-vector-icons'
5 | project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android')
6 | include ':amazon-cognito-identity-js'
7 | project(':amazon-cognito-identity-js').projectDir = new File(rootProject.projectDir, '../node_modules/amazon-cognito-identity-js/android')
8 |
9 | include ':app'
10 |
--------------------------------------------------------------------------------
/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "CognitoRN",
3 | "displayName": "CognitoRN"
4 | }
--------------------------------------------------------------------------------
/assets/fonts/SpaceMono-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/assets/fonts/SpaceMono-Regular.ttf
--------------------------------------------------------------------------------
/assets/images/homescreen-background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/assets/images/homescreen-background.jpg
--------------------------------------------------------------------------------
/assets/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/assets/images/icon.png
--------------------------------------------------------------------------------
/assets/images/robot-dev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/assets/images/robot-dev.png
--------------------------------------------------------------------------------
/assets/images/robot-prod.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/assets/images/robot-prod.png
--------------------------------------------------------------------------------
/assets/images/splash.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/assets/images/splash.jpg
--------------------------------------------------------------------------------
/common/style.js:
--------------------------------------------------------------------------------
1 | import {StyleSheet} from "react-native";
2 |
3 | export const mainStyle = StyleSheet.create({
4 | header: {
5 | backgroundColor: "#007dff"
6 | },
7 | content: {
8 | backgroundColor: '#d7d7d7'
9 | },
10 | scroll: {
11 | backgroundColor: 'white',
12 | },
13 | userRow: {
14 | alignItems: 'center',
15 | flexDirection: 'row',
16 | paddingBottom: 6,
17 | paddingLeft: 15,
18 | paddingRight: 15,
19 | paddingTop: 6,
20 | },
21 | userImage: {
22 | marginRight: 12,
23 | },
24 | listContainer: {
25 | marginBottom: 0,
26 | marginTop: 0,
27 | borderTopWidth: 0,
28 | },
29 | listItemContainer: {
30 | borderBottomColor: '#ECECEC',
31 | },
32 | });
33 |
--------------------------------------------------------------------------------
/components/StyledText.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {Text} from 'react-native';
3 |
4 | export class MonoText extends React.Component {
5 | render() {
6 | return ;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/components/TabBarIcon.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {Icon} from 'native-base';
3 |
4 | import Colors from '../constants/Colors';
5 |
6 | export default class TabBarIcon extends React.Component {
7 | render() {
8 | return (
9 |
17 | );
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/constants/Colors.js:
--------------------------------------------------------------------------------
1 | const tintColor = '#2f95dc';
2 |
3 | export default {
4 | tintColor,
5 | tabIconDefault: '#ccc',
6 | tabIconSelected: tintColor,
7 | tabBar: '#fefefe',
8 | errorBackground: 'red',
9 | errorText: '#fff',
10 | warningBackground: '#EAEB5E',
11 | warningText: '#666804',
12 | noticeBackground: tintColor,
13 | noticeText: '#fff',
14 | };
15 |
--------------------------------------------------------------------------------
/constants/Layout.js:
--------------------------------------------------------------------------------
1 | import {Dimensions} from 'react-native';
2 |
3 | const width = Dimensions.get('window').width;
4 | const height = Dimensions.get('window').height;
5 |
6 | export default {
7 | window: {
8 | width,
9 | height,
10 | },
11 | isSmallDevice: width < 375,
12 | };
13 |
--------------------------------------------------------------------------------
/constants/amplify-config.js:
--------------------------------------------------------------------------------
1 | export const amplifyConfigs = {
2 | Auth: {
3 |
4 | // REQUIRED - Amazon Cognito Region
5 | region: 'us-east-1',
6 |
7 | // OPTIONAL - Amazon Cognito User Pool ID
8 | userPoolId: 'us-east-1_PGSbCVZ7S',
9 |
10 | // OPTIONAL - Amazon Cognito Web Client ID (26-char alphanumeric string)
11 | userPoolWebClientId: 'hh5ibv67so0qukt55c5ulaltk',
12 |
13 | // OPTIONAL - Enforce user authentication prior to accessing AWS resources or not
14 | mandatorySignIn: false,
15 |
16 | // OPTIONAL - Manually set the authentication flow type. Default is 'USER_SRP_AUTH'
17 | authenticationFlowType: 'USER_SRP_AUTH'
18 | }
19 | };
20 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | import { AppRegistry } from 'react-native';
2 | import App from './App';
3 |
4 | AppRegistry.registerComponent('CognitoRN', () => App);
5 |
--------------------------------------------------------------------------------
/ios/CognitoRN-tvOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 | UIViewControllerBasedStatusBarAppearance
38 |
39 | NSLocationWhenInUseUsageDescription
40 |
41 | NSAppTransportSecurity
42 |
43 |
44 | NSExceptionDomains
45 |
46 | localhost
47 |
48 | NSExceptionAllowsInsecureHTTPLoads
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/ios/CognitoRN-tvOSTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/ios/CognitoRN.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 | /* Begin PBXBuildFile section */
9 | 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
10 | 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
11 | 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; };
12 | 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; };
13 | 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; };
14 | 00E356F31AD99517003FC87E /* CognitoRNTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* CognitoRNTests.m */; };
15 | 11D1A2F320CAFA9E000508D9 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
16 | 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; };
17 | 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; };
18 | 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; };
19 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
20 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
21 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
22 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
23 | 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
24 | 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
25 | 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
26 | 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
27 | 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
28 | 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
29 | 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */; };
30 | 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */; };
31 | 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */; };
32 | 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */; };
33 | 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */; };
34 | 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */; };
35 | 2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D16E6891FA4F8E400B85C8A /* libReact.a */; };
36 | 2DCD954D1E0B4F2C00145EB5 /* CognitoRNTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* CognitoRNTests.m */; };
37 | 2DF0FFEE2056DD460020B375 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; };
38 | 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
39 | ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; };
40 | ED297163215061F000B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED297162215061F000B7C4FE /* JavaScriptCore.framework */; };
41 | ED2971652150620600B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED2971642150620600B7C4FE /* JavaScriptCore.framework */; };
42 | AFC4962DED094AB7A38ABDB2 /* Roboto_medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5390D1485C4F4B7CA1478532 /* Roboto_medium.ttf */; };
43 | 64DCE2B8730C444FBD1685FE /* Roboto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ACDD7E4754854122A8BEC7B4 /* Roboto.ttf */; };
44 | A2B097B91125415C9F89DDD3 /* rubicon-icon-font.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6424CD731B7D4E8A91FD0328 /* rubicon-icon-font.ttf */; };
45 | 2F6397F627CF4BAE9E85C071 /* libRNAWSCognito.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C3340A13103F49DFBA49A4C9 /* libRNAWSCognito.a */; };
46 | 0D30C931B63746F081FC49B4 /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6612A50F1BBA46D9BA37CFAB /* libRNVectorIcons.a */; };
47 | E115B32574354AFCB78D7D16 /* libRNVectorIcons-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 68C76BCEFF354B72B3E3BC2A /* libRNVectorIcons-tvOS.a */; };
48 | 9C75EE7587074114B73A825F /* libRNGestureHandler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC370C0A069D432CA3C0698B /* libRNGestureHandler.a */; };
49 | /* End PBXBuildFile section */
50 |
51 | /* Begin PBXContainerItemProxy section */
52 | 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = {
53 | isa = PBXContainerItemProxy;
54 | containerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */;
55 | proxyType = 2;
56 | remoteGlobalIDString = 134814201AA4EA6300B7C361;
57 | remoteInfo = RCTActionSheet;
58 | };
59 | 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = {
60 | isa = PBXContainerItemProxy;
61 | containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;
62 | proxyType = 2;
63 | remoteGlobalIDString = 134814201AA4EA6300B7C361;
64 | remoteInfo = RCTGeolocation;
65 | };
66 | 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = {
67 | isa = PBXContainerItemProxy;
68 | containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
69 | proxyType = 2;
70 | remoteGlobalIDString = 58B5115D1A9E6B3D00147676;
71 | remoteInfo = RCTImage;
72 | };
73 | 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = {
74 | isa = PBXContainerItemProxy;
75 | containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;
76 | proxyType = 2;
77 | remoteGlobalIDString = 58B511DB1A9E6C8500147676;
78 | remoteInfo = RCTNetwork;
79 | };
80 | 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = {
81 | isa = PBXContainerItemProxy;
82 | containerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */;
83 | proxyType = 2;
84 | remoteGlobalIDString = 832C81801AAF6DEF007FA2F7;
85 | remoteInfo = RCTVibration;
86 | };
87 | 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
88 | isa = PBXContainerItemProxy;
89 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
90 | proxyType = 1;
91 | remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
92 | remoteInfo = CognitoRN;
93 | };
94 | 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = {
95 | isa = PBXContainerItemProxy;
96 | containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */;
97 | proxyType = 2;
98 | remoteGlobalIDString = 134814201AA4EA6300B7C361;
99 | remoteInfo = RCTSettings;
100 | };
101 | 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = {
102 | isa = PBXContainerItemProxy;
103 | containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
104 | proxyType = 2;
105 | remoteGlobalIDString = 3C86DF461ADF2C930047B81A;
106 | remoteInfo = RCTWebSocket;
107 | };
108 | 146834031AC3E56700842450 /* PBXContainerItemProxy */ = {
109 | isa = PBXContainerItemProxy;
110 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
111 | proxyType = 2;
112 | remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192;
113 | remoteInfo = React;
114 | };
115 | 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = {
116 | isa = PBXContainerItemProxy;
117 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
118 | proxyType = 1;
119 | remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7;
120 | remoteInfo = "CognitoRN-tvOS";
121 | };
122 | 2D16E6711FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {
123 | isa = PBXContainerItemProxy;
124 | containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
125 | proxyType = 2;
126 | remoteGlobalIDString = ADD01A681E09402E00F6D226;
127 | remoteInfo = "RCTBlob-tvOS";
128 | };
129 | 2D16E6831FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {
130 | isa = PBXContainerItemProxy;
131 | containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
132 | proxyType = 2;
133 | remoteGlobalIDString = 3DBE0D001F3B181A0099AA32;
134 | remoteInfo = fishhook;
135 | };
136 | 2D16E6851FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {
137 | isa = PBXContainerItemProxy;
138 | containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
139 | proxyType = 2;
140 | remoteGlobalIDString = 3DBE0D0D1F3B181C0099AA32;
141 | remoteInfo = "fishhook-tvOS";
142 | };
143 | 2DF0FFDE2056DD460020B375 /* PBXContainerItemProxy */ = {
144 | isa = PBXContainerItemProxy;
145 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
146 | proxyType = 2;
147 | remoteGlobalIDString = EBF21BDC1FC498900052F4D5;
148 | remoteInfo = jsinspector;
149 | };
150 | 2DF0FFE02056DD460020B375 /* PBXContainerItemProxy */ = {
151 | isa = PBXContainerItemProxy;
152 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
153 | proxyType = 2;
154 | remoteGlobalIDString = EBF21BFA1FC4989A0052F4D5;
155 | remoteInfo = "jsinspector-tvOS";
156 | };
157 | 2DF0FFE22056DD460020B375 /* PBXContainerItemProxy */ = {
158 | isa = PBXContainerItemProxy;
159 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
160 | proxyType = 2;
161 | remoteGlobalIDString = 139D7ECE1E25DB7D00323FB7;
162 | remoteInfo = "third-party";
163 | };
164 | 2DF0FFE42056DD460020B375 /* PBXContainerItemProxy */ = {
165 | isa = PBXContainerItemProxy;
166 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
167 | proxyType = 2;
168 | remoteGlobalIDString = 3D383D3C1EBD27B6005632C8;
169 | remoteInfo = "third-party-tvOS";
170 | };
171 | 2DF0FFE62056DD460020B375 /* PBXContainerItemProxy */ = {
172 | isa = PBXContainerItemProxy;
173 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
174 | proxyType = 2;
175 | remoteGlobalIDString = 139D7E881E25C6D100323FB7;
176 | remoteInfo = "double-conversion";
177 | };
178 | 2DF0FFE82056DD460020B375 /* PBXContainerItemProxy */ = {
179 | isa = PBXContainerItemProxy;
180 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
181 | proxyType = 2;
182 | remoteGlobalIDString = 3D383D621EBD27B9005632C8;
183 | remoteInfo = "double-conversion-tvOS";
184 | };
185 | 2DF0FFEA2056DD460020B375 /* PBXContainerItemProxy */ = {
186 | isa = PBXContainerItemProxy;
187 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
188 | proxyType = 2;
189 | remoteGlobalIDString = 9936F3131F5F2E4B0010BF04;
190 | remoteInfo = privatedata;
191 | };
192 | 2DF0FFEC2056DD460020B375 /* PBXContainerItemProxy */ = {
193 | isa = PBXContainerItemProxy;
194 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
195 | proxyType = 2;
196 | remoteGlobalIDString = 9936F32F1F5F2E5B0010BF04;
197 | remoteInfo = "privatedata-tvOS";
198 | };
199 | 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = {
200 | isa = PBXContainerItemProxy;
201 | containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
202 | proxyType = 2;
203 | remoteGlobalIDString = 2D2A283A1D9B042B00D4039D;
204 | remoteInfo = "RCTImage-tvOS";
205 | };
206 | 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */ = {
207 | isa = PBXContainerItemProxy;
208 | containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;
209 | proxyType = 2;
210 | remoteGlobalIDString = 2D2A28471D9B043800D4039D;
211 | remoteInfo = "RCTLinking-tvOS";
212 | };
213 | 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
214 | isa = PBXContainerItemProxy;
215 | containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;
216 | proxyType = 2;
217 | remoteGlobalIDString = 2D2A28541D9B044C00D4039D;
218 | remoteInfo = "RCTNetwork-tvOS";
219 | };
220 | 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
221 | isa = PBXContainerItemProxy;
222 | containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */;
223 | proxyType = 2;
224 | remoteGlobalIDString = 2D2A28611D9B046600D4039D;
225 | remoteInfo = "RCTSettings-tvOS";
226 | };
227 | 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */ = {
228 | isa = PBXContainerItemProxy;
229 | containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */;
230 | proxyType = 2;
231 | remoteGlobalIDString = 2D2A287B1D9B048500D4039D;
232 | remoteInfo = "RCTText-tvOS";
233 | };
234 | 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */ = {
235 | isa = PBXContainerItemProxy;
236 | containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
237 | proxyType = 2;
238 | remoteGlobalIDString = 2D2A28881D9B049200D4039D;
239 | remoteInfo = "RCTWebSocket-tvOS";
240 | };
241 | 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */ = {
242 | isa = PBXContainerItemProxy;
243 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
244 | proxyType = 2;
245 | remoteGlobalIDString = 2D2A28131D9B038B00D4039D;
246 | remoteInfo = "React-tvOS";
247 | };
248 | 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */ = {
249 | isa = PBXContainerItemProxy;
250 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
251 | proxyType = 2;
252 | remoteGlobalIDString = 3D3C059A1DE3340900C268FA;
253 | remoteInfo = yoga;
254 | };
255 | 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */ = {
256 | isa = PBXContainerItemProxy;
257 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
258 | proxyType = 2;
259 | remoteGlobalIDString = 3D3C06751DE3340C00C268FA;
260 | remoteInfo = "yoga-tvOS";
261 | };
262 | 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */ = {
263 | isa = PBXContainerItemProxy;
264 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
265 | proxyType = 2;
266 | remoteGlobalIDString = 3D3CD9251DE5FBEC00167DC4;
267 | remoteInfo = cxxreact;
268 | };
269 | 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
270 | isa = PBXContainerItemProxy;
271 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
272 | proxyType = 2;
273 | remoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4;
274 | remoteInfo = "cxxreact-tvOS";
275 | };
276 | 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
277 | isa = PBXContainerItemProxy;
278 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
279 | proxyType = 2;
280 | remoteGlobalIDString = 3D3CD90B1DE5FBD600167DC4;
281 | remoteInfo = jschelpers;
282 | };
283 | 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
284 | isa = PBXContainerItemProxy;
285 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
286 | proxyType = 2;
287 | remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4;
288 | remoteInfo = "jschelpers-tvOS";
289 | };
290 | 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = {
291 | isa = PBXContainerItemProxy;
292 | containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
293 | proxyType = 2;
294 | remoteGlobalIDString = 134814201AA4EA6300B7C361;
295 | remoteInfo = RCTAnimation;
296 | };
297 | 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = {
298 | isa = PBXContainerItemProxy;
299 | containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
300 | proxyType = 2;
301 | remoteGlobalIDString = 2D2A28201D9B03D100D4039D;
302 | remoteInfo = "RCTAnimation-tvOS";
303 | };
304 | 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = {
305 | isa = PBXContainerItemProxy;
306 | containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;
307 | proxyType = 2;
308 | remoteGlobalIDString = 134814201AA4EA6300B7C361;
309 | remoteInfo = RCTLinking;
310 | };
311 | 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = {
312 | isa = PBXContainerItemProxy;
313 | containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */;
314 | proxyType = 2;
315 | remoteGlobalIDString = 58B5119B1A9E6C1200147676;
316 | remoteInfo = RCTText;
317 | };
318 | ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */ = {
319 | isa = PBXContainerItemProxy;
320 | containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
321 | proxyType = 2;
322 | remoteGlobalIDString = 358F4ED71D1E81A9004DF814;
323 | remoteInfo = RCTBlob;
324 | };
325 | /* End PBXContainerItemProxy section */
326 |
327 | /* Begin PBXFileReference section */
328 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; };
329 | 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; };
330 | 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; };
331 | 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; };
332 | 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; };
333 | 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; };
334 | 00E356EE1AD99517003FC87E /* CognitoRNTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CognitoRNTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
335 | 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
336 | 00E356F21AD99517003FC87E /* CognitoRNTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CognitoRNTests.m; sourceTree = ""; };
337 | 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; };
338 | 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; };
339 | 13B07F961A680F5B00A75B9A /* CognitoRN.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CognitoRN.app; sourceTree = BUILT_PRODUCTS_DIR; };
340 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = CognitoRN/AppDelegate.h; sourceTree = ""; };
341 | 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = CognitoRN/AppDelegate.m; sourceTree = ""; };
342 | 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; };
343 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = CognitoRN/Images.xcassets; sourceTree = ""; };
344 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = CognitoRN/Info.plist; sourceTree = ""; };
345 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = CognitoRN/main.m; sourceTree = ""; };
346 | 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; };
347 | 2D02E47B1E0B4A5D006451C7 /* CognitoRN-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "CognitoRN-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
348 | 2D02E4901E0B4A5D006451C7 /* CognitoRN-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "CognitoRN-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
349 | 2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; };
350 | 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = ""; };
351 | 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; };
352 | 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; };
353 | ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = ""; };
354 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
355 | ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
356 | 5390D1485C4F4B7CA1478532 /* Roboto_medium.ttf */ = {isa = PBXFileReference; name = "Roboto_medium.ttf"; path = "../node_modules/native-base/Fonts/Roboto_medium.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
357 | ACDD7E4754854122A8BEC7B4 /* Roboto.ttf */ = {isa = PBXFileReference; name = "Roboto.ttf"; path = "../node_modules/native-base/Fonts/Roboto.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
358 | 6424CD731B7D4E8A91FD0328 /* rubicon-icon-font.ttf */ = {isa = PBXFileReference; name = "rubicon-icon-font.ttf"; path = "../node_modules/native-base/Fonts/rubicon-icon-font.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
359 | D29E9CFEE7B647798B5A7051 /* AntDesign.ttf */ = {isa = PBXFileReference; name = "AntDesign.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
360 | 37AD44F60024414889C94E9C /* Entypo.ttf */ = {isa = PBXFileReference; name = "Entypo.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
361 | 29CDEEACD98C42A78FE7F24E /* EvilIcons.ttf */ = {isa = PBXFileReference; name = "EvilIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
362 | 843B833001F84958AD5FB201 /* Feather.ttf */ = {isa = PBXFileReference; name = "Feather.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Feather.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
363 | EF2B77A42B0F4912A896C539 /* FontAwesome.ttf */ = {isa = PBXFileReference; name = "FontAwesome.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
364 | 1834AB96800A42F190B9BF38 /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Brands.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
365 | 4458D436DC584C8C9787CBB1 /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Regular.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
366 | 23854A8D68C04C928F5CA9E9 /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Solid.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
367 | 2B10CC093A034B77BA215873 /* Foundation.ttf */ = {isa = PBXFileReference; name = "Foundation.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
368 | 7C8B63234E4F41EC8931FED4 /* Ionicons.ttf */ = {isa = PBXFileReference; name = "Ionicons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
369 | BCA677EAC6F64A7FBEAD48DB /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; name = "MaterialCommunityIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
370 | C44494A9C5A54A0DB1562D97 /* MaterialIcons.ttf */ = {isa = PBXFileReference; name = "MaterialIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
371 | 616EFE541EAF43F38A9B2C13 /* Octicons.ttf */ = {isa = PBXFileReference; name = "Octicons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
372 | 2AD2724BA7944CA0B0B23D95 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; name = "SimpleLineIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
373 | 1CD93AA0CD144B2EAAEFC126 /* Zocial.ttf */ = {isa = PBXFileReference; name = "Zocial.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
374 | EB4BED84C78240BF97CC2A4A /* RNAWSCognito.xcodeproj */ = {isa = PBXFileReference; name = "RNAWSCognito.xcodeproj"; path = "../node_modules/amazon-cognito-identity-js/ios/RNAWSCognito.xcodeproj"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
375 | C3340A13103F49DFBA49A4C9 /* libRNAWSCognito.a */ = {isa = PBXFileReference; name = "libRNAWSCognito.a"; path = "libRNAWSCognito.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
376 | 0A28A216C92B4FA593157764 /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; name = "RNVectorIcons.xcodeproj"; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
377 | 6612A50F1BBA46D9BA37CFAB /* libRNVectorIcons.a */ = {isa = PBXFileReference; name = "libRNVectorIcons.a"; path = "libRNVectorIcons.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
378 | 68C76BCEFF354B72B3E3BC2A /* libRNVectorIcons-tvOS.a */ = {isa = PBXFileReference; name = "libRNVectorIcons-tvOS.a"; path = "libRNVectorIcons-tvOS.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
379 | 5DE6B8FC9ACF4457AF441FC5 /* RNGestureHandler.xcodeproj */ = {isa = PBXFileReference; name = "RNGestureHandler.xcodeproj"; path = "../node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
380 | BC370C0A069D432CA3C0698B /* libRNGestureHandler.a */ = {isa = PBXFileReference; name = "libRNGestureHandler.a"; path = "libRNGestureHandler.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
381 | /* End PBXFileReference section */
382 |
383 | /* Begin PBXFrameworksBuildPhase section */
384 | 00E356EB1AD99517003FC87E /* Frameworks */ = {
385 | isa = PBXFrameworksBuildPhase;
386 | buildActionMask = 2147483647;
387 | files = (
388 | 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */,
389 | );
390 | runOnlyForDeploymentPostprocessing = 0;
391 | };
392 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
393 | isa = PBXFrameworksBuildPhase;
394 | buildActionMask = 2147483647;
395 | files = (
396 | ED297163215061F000B7C4FE /* JavaScriptCore.framework in Frameworks */,
397 | ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */,
398 | 11D1A2F320CAFA9E000508D9 /* libRCTAnimation.a in Frameworks */,
399 | 146834051AC3E58100842450 /* libReact.a in Frameworks */,
400 | 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
401 | 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */,
402 | 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */,
403 | 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */,
404 | 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */,
405 | 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */,
406 | 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
407 | 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
408 | 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
409 | 2F6397F627CF4BAE9E85C071 /* libRNAWSCognito.a in Frameworks */,
410 | 0D30C931B63746F081FC49B4 /* libRNVectorIcons.a in Frameworks */,
411 | 9C75EE7587074114B73A825F /* libRNGestureHandler.a in Frameworks */,
412 | );
413 | runOnlyForDeploymentPostprocessing = 0;
414 | };
415 | 2D02E4781E0B4A5D006451C7 /* Frameworks */ = {
416 | isa = PBXFrameworksBuildPhase;
417 | buildActionMask = 2147483647;
418 | files = (
419 | ED2971652150620600B7C4FE /* JavaScriptCore.framework in Frameworks */,
420 | 2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */,
421 | 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */,
422 | 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */,
423 | 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */,
424 | 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */,
425 | 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */,
426 | 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */,
427 | 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */,
428 | 2BD3BD8C76644E71A26C9588 /* libRNVectorIcons-tvOS.a in Frameworks */,
429 | E115B32574354AFCB78D7D16 /* libRNVectorIcons-tvOS.a in Frameworks */,
430 | );
431 | runOnlyForDeploymentPostprocessing = 0;
432 | };
433 | 2D02E48D1E0B4A5D006451C7 /* Frameworks */ = {
434 | isa = PBXFrameworksBuildPhase;
435 | buildActionMask = 2147483647;
436 | files = (
437 | 2DF0FFEE2056DD460020B375 /* libReact.a in Frameworks */,
438 | );
439 | runOnlyForDeploymentPostprocessing = 0;
440 | };
441 | /* End PBXFrameworksBuildPhase section */
442 |
443 | /* Begin PBXGroup section */
444 | 00C302A81ABCB8CE00DB3ED1 /* Products */ = {
445 | isa = PBXGroup;
446 | children = (
447 | 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */,
448 | );
449 | name = Products;
450 | sourceTree = "";
451 | };
452 | 00C302B61ABCB90400DB3ED1 /* Products */ = {
453 | isa = PBXGroup;
454 | children = (
455 | 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */,
456 | );
457 | name = Products;
458 | sourceTree = "";
459 | };
460 | 00C302BC1ABCB91800DB3ED1 /* Products */ = {
461 | isa = PBXGroup;
462 | children = (
463 | 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */,
464 | 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */,
465 | );
466 | name = Products;
467 | sourceTree = "";
468 | };
469 | 00C302D41ABCB9D200DB3ED1 /* Products */ = {
470 | isa = PBXGroup;
471 | children = (
472 | 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */,
473 | 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */,
474 | );
475 | name = Products;
476 | sourceTree = "";
477 | };
478 | 00C302E01ABCB9EE00DB3ED1 /* Products */ = {
479 | isa = PBXGroup;
480 | children = (
481 | 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */,
482 | );
483 | name = Products;
484 | sourceTree = "";
485 | };
486 | 00E356EF1AD99517003FC87E /* CognitoRNTests */ = {
487 | isa = PBXGroup;
488 | children = (
489 | 00E356F21AD99517003FC87E /* CognitoRNTests.m */,
490 | 00E356F01AD99517003FC87E /* Supporting Files */,
491 | );
492 | path = CognitoRNTests;
493 | sourceTree = "";
494 | };
495 | 00E356F01AD99517003FC87E /* Supporting Files */ = {
496 | isa = PBXGroup;
497 | children = (
498 | 00E356F11AD99517003FC87E /* Info.plist */,
499 | );
500 | name = "Supporting Files";
501 | sourceTree = "";
502 | };
503 | 139105B71AF99BAD00B5F7CC /* Products */ = {
504 | isa = PBXGroup;
505 | children = (
506 | 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */,
507 | 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */,
508 | );
509 | name = Products;
510 | sourceTree = "";
511 | };
512 | 139FDEE71B06529A00C62182 /* Products */ = {
513 | isa = PBXGroup;
514 | children = (
515 | 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */,
516 | 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */,
517 | 2D16E6841FA4F8DC00B85C8A /* libfishhook.a */,
518 | 2D16E6861FA4F8DC00B85C8A /* libfishhook-tvOS.a */,
519 | );
520 | name = Products;
521 | sourceTree = "";
522 | };
523 | 13B07FAE1A68108700A75B9A /* CognitoRN */ = {
524 | isa = PBXGroup;
525 | children = (
526 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */,
527 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
528 | 13B07FB01A68108700A75B9A /* AppDelegate.m */,
529 | 13B07FB51A68108700A75B9A /* Images.xcassets */,
530 | 13B07FB61A68108700A75B9A /* Info.plist */,
531 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */,
532 | 13B07FB71A68108700A75B9A /* main.m */,
533 | );
534 | name = CognitoRN;
535 | sourceTree = "";
536 | };
537 | 146834001AC3E56700842450 /* Products */ = {
538 | isa = PBXGroup;
539 | children = (
540 | 146834041AC3E56700842450 /* libReact.a */,
541 | 3DAD3EA31DF850E9000B6D8A /* libReact.a */,
542 | 3DAD3EA51DF850E9000B6D8A /* libyoga.a */,
543 | 3DAD3EA71DF850E9000B6D8A /* libyoga.a */,
544 | 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */,
545 | 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */,
546 | 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */,
547 | 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */,
548 | 2DF0FFDF2056DD460020B375 /* libjsinspector.a */,
549 | 2DF0FFE12056DD460020B375 /* libjsinspector-tvOS.a */,
550 | 2DF0FFE32056DD460020B375 /* libthird-party.a */,
551 | 2DF0FFE52056DD460020B375 /* libthird-party.a */,
552 | 2DF0FFE72056DD460020B375 /* libdouble-conversion.a */,
553 | 2DF0FFE92056DD460020B375 /* libdouble-conversion.a */,
554 | 2DF0FFEB2056DD460020B375 /* libprivatedata.a */,
555 | 2DF0FFED2056DD460020B375 /* libprivatedata-tvOS.a */,
556 | );
557 | name = Products;
558 | sourceTree = "";
559 | };
560 | 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
561 | isa = PBXGroup;
562 | children = (
563 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
564 | ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
565 | 2D16E6891FA4F8E400B85C8A /* libReact.a */,
566 | );
567 | name = Frameworks;
568 | sourceTree = "";
569 | };
570 | 5E91572E1DD0AC6500FF2AA8 /* Products */ = {
571 | isa = PBXGroup;
572 | children = (
573 | 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */,
574 | 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */,
575 | );
576 | name = Products;
577 | sourceTree = "";
578 | };
579 | 78C398B11ACF4ADC00677621 /* Products */ = {
580 | isa = PBXGroup;
581 | children = (
582 | 78C398B91ACF4ADC00677621 /* libRCTLinking.a */,
583 | 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */,
584 | );
585 | name = Products;
586 | sourceTree = "";
587 | };
588 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
589 | isa = PBXGroup;
590 | children = (
591 | 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */,
592 | 146833FF1AC3E56700842450 /* React.xcodeproj */,
593 | 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,
594 | ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */,
595 | 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */,
596 | 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */,
597 | 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */,
598 | 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */,
599 | 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */,
600 | 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */,
601 | 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */,
602 | 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */,
603 | EB4BED84C78240BF97CC2A4A /* RNAWSCognito.xcodeproj */,
604 | 0A28A216C92B4FA593157764 /* RNVectorIcons.xcodeproj */,
605 | 5DE6B8FC9ACF4457AF441FC5 /* RNGestureHandler.xcodeproj */,
606 | );
607 | name = Libraries;
608 | sourceTree = "";
609 | };
610 | 832341B11AAA6A8300B99B32 /* Products */ = {
611 | isa = PBXGroup;
612 | children = (
613 | 832341B51AAA6A8300B99B32 /* libRCTText.a */,
614 | 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */,
615 | );
616 | name = Products;
617 | sourceTree = "";
618 | };
619 | 83CBB9F61A601CBA00E9B192 = {
620 | isa = PBXGroup;
621 | children = (
622 | 13B07FAE1A68108700A75B9A /* CognitoRN */,
623 | 832341AE1AAA6A7D00B99B32 /* Libraries */,
624 | 00E356EF1AD99517003FC87E /* CognitoRNTests */,
625 | 83CBBA001A601CBA00E9B192 /* Products */,
626 | 2D16E6871FA4F8E400B85C8A /* Frameworks */,
627 | 43D937410BD0480582D70C3B /* Resources */,
628 | );
629 | indentWidth = 2;
630 | sourceTree = "";
631 | tabWidth = 2;
632 | usesTabs = 0;
633 | };
634 | 83CBBA001A601CBA00E9B192 /* Products */ = {
635 | isa = PBXGroup;
636 | children = (
637 | 13B07F961A680F5B00A75B9A /* CognitoRN.app */,
638 | 00E356EE1AD99517003FC87E /* CognitoRNTests.xctest */,
639 | 2D02E47B1E0B4A5D006451C7 /* CognitoRN-tvOS.app */,
640 | 2D02E4901E0B4A5D006451C7 /* CognitoRN-tvOSTests.xctest */,
641 | );
642 | name = Products;
643 | sourceTree = "";
644 | };
645 | ADBDB9201DFEBF0600ED6528 /* Products */ = {
646 | isa = PBXGroup;
647 | children = (
648 | ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */,
649 | 2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */,
650 | );
651 | name = Products;
652 | sourceTree = "";
653 | };
654 | 43D937410BD0480582D70C3B /* Resources */ = {
655 | isa = "PBXGroup";
656 | children = (
657 | 5390D1485C4F4B7CA1478532 /* Roboto_medium.ttf */,
658 | ACDD7E4754854122A8BEC7B4 /* Roboto.ttf */,
659 | 6424CD731B7D4E8A91FD0328 /* rubicon-icon-font.ttf */,
660 | D29E9CFEE7B647798B5A7051 /* AntDesign.ttf */,
661 | 37AD44F60024414889C94E9C /* Entypo.ttf */,
662 | 29CDEEACD98C42A78FE7F24E /* EvilIcons.ttf */,
663 | 843B833001F84958AD5FB201 /* Feather.ttf */,
664 | EF2B77A42B0F4912A896C539 /* FontAwesome.ttf */,
665 | 1834AB96800A42F190B9BF38 /* FontAwesome5_Brands.ttf */,
666 | 4458D436DC584C8C9787CBB1 /* FontAwesome5_Regular.ttf */,
667 | 23854A8D68C04C928F5CA9E9 /* FontAwesome5_Solid.ttf */,
668 | 2B10CC093A034B77BA215873 /* Foundation.ttf */,
669 | 7C8B63234E4F41EC8931FED4 /* Ionicons.ttf */,
670 | BCA677EAC6F64A7FBEAD48DB /* MaterialCommunityIcons.ttf */,
671 | C44494A9C5A54A0DB1562D97 /* MaterialIcons.ttf */,
672 | 616EFE541EAF43F38A9B2C13 /* Octicons.ttf */,
673 | 2AD2724BA7944CA0B0B23D95 /* SimpleLineIcons.ttf */,
674 | 1CD93AA0CD144B2EAAEFC126 /* Zocial.ttf */,
675 | );
676 | name = Resources;
677 | sourceTree = "";
678 | path = "";
679 | };
680 | /* End PBXGroup section */
681 |
682 | /* Begin PBXNativeTarget section */
683 | 00E356ED1AD99517003FC87E /* CognitoRNTests */ = {
684 | isa = PBXNativeTarget;
685 | buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "CognitoRNTests" */;
686 | buildPhases = (
687 | 00E356EA1AD99517003FC87E /* Sources */,
688 | 00E356EB1AD99517003FC87E /* Frameworks */,
689 | 00E356EC1AD99517003FC87E /* Resources */,
690 | );
691 | buildRules = (
692 | );
693 | dependencies = (
694 | 00E356F51AD99517003FC87E /* PBXTargetDependency */,
695 | );
696 | name = CognitoRNTests;
697 | productName = CognitoRNTests;
698 | productReference = 00E356EE1AD99517003FC87E /* CognitoRNTests.xctest */;
699 | productType = "com.apple.product-type.bundle.unit-test";
700 | };
701 | 13B07F861A680F5B00A75B9A /* CognitoRN */ = {
702 | isa = PBXNativeTarget;
703 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "CognitoRN" */;
704 | buildPhases = (
705 | 13B07F871A680F5B00A75B9A /* Sources */,
706 | 13B07F8C1A680F5B00A75B9A /* Frameworks */,
707 | 13B07F8E1A680F5B00A75B9A /* Resources */,
708 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
709 | );
710 | buildRules = (
711 | );
712 | dependencies = (
713 | );
714 | name = CognitoRN;
715 | productName = "Hello World";
716 | productReference = 13B07F961A680F5B00A75B9A /* CognitoRN.app */;
717 | productType = "com.apple.product-type.application";
718 | };
719 | 2D02E47A1E0B4A5D006451C7 /* CognitoRN-tvOS */ = {
720 | isa = PBXNativeTarget;
721 | buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "CognitoRN-tvOS" */;
722 | buildPhases = (
723 | 2D02E4771E0B4A5D006451C7 /* Sources */,
724 | 2D02E4781E0B4A5D006451C7 /* Frameworks */,
725 | 2D02E4791E0B4A5D006451C7 /* Resources */,
726 | 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */,
727 | );
728 | buildRules = (
729 | );
730 | dependencies = (
731 | );
732 | name = "CognitoRN-tvOS";
733 | productName = "CognitoRN-tvOS";
734 | productReference = 2D02E47B1E0B4A5D006451C7 /* CognitoRN-tvOS.app */;
735 | productType = "com.apple.product-type.application";
736 | };
737 | 2D02E48F1E0B4A5D006451C7 /* CognitoRN-tvOSTests */ = {
738 | isa = PBXNativeTarget;
739 | buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "CognitoRN-tvOSTests" */;
740 | buildPhases = (
741 | 2D02E48C1E0B4A5D006451C7 /* Sources */,
742 | 2D02E48D1E0B4A5D006451C7 /* Frameworks */,
743 | 2D02E48E1E0B4A5D006451C7 /* Resources */,
744 | );
745 | buildRules = (
746 | );
747 | dependencies = (
748 | 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */,
749 | );
750 | name = "CognitoRN-tvOSTests";
751 | productName = "CognitoRN-tvOSTests";
752 | productReference = 2D02E4901E0B4A5D006451C7 /* CognitoRN-tvOSTests.xctest */;
753 | productType = "com.apple.product-type.bundle.unit-test";
754 | };
755 | /* End PBXNativeTarget section */
756 |
757 | /* Begin PBXProject section */
758 | 83CBB9F71A601CBA00E9B192 /* Project object */ = {
759 | isa = PBXProject;
760 | attributes = {
761 | LastUpgradeCheck = 940;
762 | ORGANIZATIONNAME = Facebook;
763 | TargetAttributes = {
764 | 00E356ED1AD99517003FC87E = {
765 | CreatedOnToolsVersion = 6.2;
766 | TestTargetID = 13B07F861A680F5B00A75B9A;
767 | };
768 | 2D02E47A1E0B4A5D006451C7 = {
769 | CreatedOnToolsVersion = 8.2.1;
770 | ProvisioningStyle = Automatic;
771 | };
772 | 2D02E48F1E0B4A5D006451C7 = {
773 | CreatedOnToolsVersion = 8.2.1;
774 | ProvisioningStyle = Automatic;
775 | TestTargetID = 2D02E47A1E0B4A5D006451C7;
776 | };
777 | };
778 | };
779 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "CognitoRN" */;
780 | compatibilityVersion = "Xcode 3.2";
781 | developmentRegion = English;
782 | hasScannedForEncodings = 0;
783 | knownRegions = (
784 | en,
785 | Base,
786 | );
787 | mainGroup = 83CBB9F61A601CBA00E9B192;
788 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
789 | projectDirPath = "";
790 | projectReferences = (
791 | {
792 | ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */;
793 | ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */;
794 | },
795 | {
796 | ProductGroup = 5E91572E1DD0AC6500FF2AA8 /* Products */;
797 | ProjectRef = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
798 | },
799 | {
800 | ProductGroup = ADBDB9201DFEBF0600ED6528 /* Products */;
801 | ProjectRef = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
802 | },
803 | {
804 | ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */;
805 | ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;
806 | },
807 | {
808 | ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */;
809 | ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
810 | },
811 | {
812 | ProductGroup = 78C398B11ACF4ADC00677621 /* Products */;
813 | ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;
814 | },
815 | {
816 | ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */;
817 | ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;
818 | },
819 | {
820 | ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */;
821 | ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */;
822 | },
823 | {
824 | ProductGroup = 832341B11AAA6A8300B99B32 /* Products */;
825 | ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */;
826 | },
827 | {
828 | ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */;
829 | ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */;
830 | },
831 | {
832 | ProductGroup = 139FDEE71B06529A00C62182 /* Products */;
833 | ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
834 | },
835 | {
836 | ProductGroup = 146834001AC3E56700842450 /* Products */;
837 | ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */;
838 | },
839 | );
840 | projectRoot = "";
841 | targets = (
842 | 13B07F861A680F5B00A75B9A /* CognitoRN */,
843 | 00E356ED1AD99517003FC87E /* CognitoRNTests */,
844 | 2D02E47A1E0B4A5D006451C7 /* CognitoRN-tvOS */,
845 | 2D02E48F1E0B4A5D006451C7 /* CognitoRN-tvOSTests */,
846 | );
847 | };
848 | /* End PBXProject section */
849 |
850 | /* Begin PBXReferenceProxy section */
851 | 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = {
852 | isa = PBXReferenceProxy;
853 | fileType = archive.ar;
854 | path = libRCTActionSheet.a;
855 | remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */;
856 | sourceTree = BUILT_PRODUCTS_DIR;
857 | };
858 | 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = {
859 | isa = PBXReferenceProxy;
860 | fileType = archive.ar;
861 | path = libRCTGeolocation.a;
862 | remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */;
863 | sourceTree = BUILT_PRODUCTS_DIR;
864 | };
865 | 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = {
866 | isa = PBXReferenceProxy;
867 | fileType = archive.ar;
868 | path = libRCTImage.a;
869 | remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */;
870 | sourceTree = BUILT_PRODUCTS_DIR;
871 | };
872 | 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = {
873 | isa = PBXReferenceProxy;
874 | fileType = archive.ar;
875 | path = libRCTNetwork.a;
876 | remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */;
877 | sourceTree = BUILT_PRODUCTS_DIR;
878 | };
879 | 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = {
880 | isa = PBXReferenceProxy;
881 | fileType = archive.ar;
882 | path = libRCTVibration.a;
883 | remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */;
884 | sourceTree = BUILT_PRODUCTS_DIR;
885 | };
886 | 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = {
887 | isa = PBXReferenceProxy;
888 | fileType = archive.ar;
889 | path = libRCTSettings.a;
890 | remoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */;
891 | sourceTree = BUILT_PRODUCTS_DIR;
892 | };
893 | 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = {
894 | isa = PBXReferenceProxy;
895 | fileType = archive.ar;
896 | path = libRCTWebSocket.a;
897 | remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */;
898 | sourceTree = BUILT_PRODUCTS_DIR;
899 | };
900 | 146834041AC3E56700842450 /* libReact.a */ = {
901 | isa = PBXReferenceProxy;
902 | fileType = archive.ar;
903 | path = libReact.a;
904 | remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */;
905 | sourceTree = BUILT_PRODUCTS_DIR;
906 | };
907 | 2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */ = {
908 | isa = PBXReferenceProxy;
909 | fileType = archive.ar;
910 | path = "libRCTBlob-tvOS.a";
911 | remoteRef = 2D16E6711FA4F8DC00B85C8A /* PBXContainerItemProxy */;
912 | sourceTree = BUILT_PRODUCTS_DIR;
913 | };
914 | 2D16E6841FA4F8DC00B85C8A /* libfishhook.a */ = {
915 | isa = PBXReferenceProxy;
916 | fileType = archive.ar;
917 | path = libfishhook.a;
918 | remoteRef = 2D16E6831FA4F8DC00B85C8A /* PBXContainerItemProxy */;
919 | sourceTree = BUILT_PRODUCTS_DIR;
920 | };
921 | 2D16E6861FA4F8DC00B85C8A /* libfishhook-tvOS.a */ = {
922 | isa = PBXReferenceProxy;
923 | fileType = archive.ar;
924 | path = "libfishhook-tvOS.a";
925 | remoteRef = 2D16E6851FA4F8DC00B85C8A /* PBXContainerItemProxy */;
926 | sourceTree = BUILT_PRODUCTS_DIR;
927 | };
928 | 2DF0FFDF2056DD460020B375 /* libjsinspector.a */ = {
929 | isa = PBXReferenceProxy;
930 | fileType = archive.ar;
931 | path = libjsinspector.a;
932 | remoteRef = 2DF0FFDE2056DD460020B375 /* PBXContainerItemProxy */;
933 | sourceTree = BUILT_PRODUCTS_DIR;
934 | };
935 | 2DF0FFE12056DD460020B375 /* libjsinspector-tvOS.a */ = {
936 | isa = PBXReferenceProxy;
937 | fileType = archive.ar;
938 | path = "libjsinspector-tvOS.a";
939 | remoteRef = 2DF0FFE02056DD460020B375 /* PBXContainerItemProxy */;
940 | sourceTree = BUILT_PRODUCTS_DIR;
941 | };
942 | 2DF0FFE32056DD460020B375 /* libthird-party.a */ = {
943 | isa = PBXReferenceProxy;
944 | fileType = archive.ar;
945 | path = "libthird-party.a";
946 | remoteRef = 2DF0FFE22056DD460020B375 /* PBXContainerItemProxy */;
947 | sourceTree = BUILT_PRODUCTS_DIR;
948 | };
949 | 2DF0FFE52056DD460020B375 /* libthird-party.a */ = {
950 | isa = PBXReferenceProxy;
951 | fileType = archive.ar;
952 | path = "libthird-party.a";
953 | remoteRef = 2DF0FFE42056DD460020B375 /* PBXContainerItemProxy */;
954 | sourceTree = BUILT_PRODUCTS_DIR;
955 | };
956 | 2DF0FFE72056DD460020B375 /* libdouble-conversion.a */ = {
957 | isa = PBXReferenceProxy;
958 | fileType = archive.ar;
959 | path = "libdouble-conversion.a";
960 | remoteRef = 2DF0FFE62056DD460020B375 /* PBXContainerItemProxy */;
961 | sourceTree = BUILT_PRODUCTS_DIR;
962 | };
963 | 2DF0FFE92056DD460020B375 /* libdouble-conversion.a */ = {
964 | isa = PBXReferenceProxy;
965 | fileType = archive.ar;
966 | path = "libdouble-conversion.a";
967 | remoteRef = 2DF0FFE82056DD460020B375 /* PBXContainerItemProxy */;
968 | sourceTree = BUILT_PRODUCTS_DIR;
969 | };
970 | 2DF0FFEB2056DD460020B375 /* libprivatedata.a */ = {
971 | isa = PBXReferenceProxy;
972 | fileType = archive.ar;
973 | path = libprivatedata.a;
974 | remoteRef = 2DF0FFEA2056DD460020B375 /* PBXContainerItemProxy */;
975 | sourceTree = BUILT_PRODUCTS_DIR;
976 | };
977 | 2DF0FFED2056DD460020B375 /* libprivatedata-tvOS.a */ = {
978 | isa = PBXReferenceProxy;
979 | fileType = archive.ar;
980 | path = "libprivatedata-tvOS.a";
981 | remoteRef = 2DF0FFEC2056DD460020B375 /* PBXContainerItemProxy */;
982 | sourceTree = BUILT_PRODUCTS_DIR;
983 | };
984 | 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = {
985 | isa = PBXReferenceProxy;
986 | fileType = archive.ar;
987 | path = "libRCTImage-tvOS.a";
988 | remoteRef = 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */;
989 | sourceTree = BUILT_PRODUCTS_DIR;
990 | };
991 | 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */ = {
992 | isa = PBXReferenceProxy;
993 | fileType = archive.ar;
994 | path = "libRCTLinking-tvOS.a";
995 | remoteRef = 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */;
996 | sourceTree = BUILT_PRODUCTS_DIR;
997 | };
998 | 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */ = {
999 | isa = PBXReferenceProxy;
1000 | fileType = archive.ar;
1001 | path = "libRCTNetwork-tvOS.a";
1002 | remoteRef = 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */;
1003 | sourceTree = BUILT_PRODUCTS_DIR;
1004 | };
1005 | 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */ = {
1006 | isa = PBXReferenceProxy;
1007 | fileType = archive.ar;
1008 | path = "libRCTSettings-tvOS.a";
1009 | remoteRef = 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */;
1010 | sourceTree = BUILT_PRODUCTS_DIR;
1011 | };
1012 | 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */ = {
1013 | isa = PBXReferenceProxy;
1014 | fileType = archive.ar;
1015 | path = "libRCTText-tvOS.a";
1016 | remoteRef = 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */;
1017 | sourceTree = BUILT_PRODUCTS_DIR;
1018 | };
1019 | 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */ = {
1020 | isa = PBXReferenceProxy;
1021 | fileType = archive.ar;
1022 | path = "libRCTWebSocket-tvOS.a";
1023 | remoteRef = 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */;
1024 | sourceTree = BUILT_PRODUCTS_DIR;
1025 | };
1026 | 3DAD3EA31DF850E9000B6D8A /* libReact.a */ = {
1027 | isa = PBXReferenceProxy;
1028 | fileType = archive.ar;
1029 | path = libReact.a;
1030 | remoteRef = 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */;
1031 | sourceTree = BUILT_PRODUCTS_DIR;
1032 | };
1033 | 3DAD3EA51DF850E9000B6D8A /* libyoga.a */ = {
1034 | isa = PBXReferenceProxy;
1035 | fileType = archive.ar;
1036 | path = libyoga.a;
1037 | remoteRef = 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */;
1038 | sourceTree = BUILT_PRODUCTS_DIR;
1039 | };
1040 | 3DAD3EA71DF850E9000B6D8A /* libyoga.a */ = {
1041 | isa = PBXReferenceProxy;
1042 | fileType = archive.ar;
1043 | path = libyoga.a;
1044 | remoteRef = 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */;
1045 | sourceTree = BUILT_PRODUCTS_DIR;
1046 | };
1047 | 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */ = {
1048 | isa = PBXReferenceProxy;
1049 | fileType = archive.ar;
1050 | path = libcxxreact.a;
1051 | remoteRef = 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */;
1052 | sourceTree = BUILT_PRODUCTS_DIR;
1053 | };
1054 | 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */ = {
1055 | isa = PBXReferenceProxy;
1056 | fileType = archive.ar;
1057 | path = libcxxreact.a;
1058 | remoteRef = 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */;
1059 | sourceTree = BUILT_PRODUCTS_DIR;
1060 | };
1061 | 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */ = {
1062 | isa = PBXReferenceProxy;
1063 | fileType = archive.ar;
1064 | path = libjschelpers.a;
1065 | remoteRef = 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */;
1066 | sourceTree = BUILT_PRODUCTS_DIR;
1067 | };
1068 | 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */ = {
1069 | isa = PBXReferenceProxy;
1070 | fileType = archive.ar;
1071 | path = libjschelpers.a;
1072 | remoteRef = 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */;
1073 | sourceTree = BUILT_PRODUCTS_DIR;
1074 | };
1075 | 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = {
1076 | isa = PBXReferenceProxy;
1077 | fileType = archive.ar;
1078 | path = libRCTAnimation.a;
1079 | remoteRef = 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */;
1080 | sourceTree = BUILT_PRODUCTS_DIR;
1081 | };
1082 | 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */ = {
1083 | isa = PBXReferenceProxy;
1084 | fileType = archive.ar;
1085 | path = libRCTAnimation.a;
1086 | remoteRef = 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */;
1087 | sourceTree = BUILT_PRODUCTS_DIR;
1088 | };
1089 | 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = {
1090 | isa = PBXReferenceProxy;
1091 | fileType = archive.ar;
1092 | path = libRCTLinking.a;
1093 | remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */;
1094 | sourceTree = BUILT_PRODUCTS_DIR;
1095 | };
1096 | 832341B51AAA6A8300B99B32 /* libRCTText.a */ = {
1097 | isa = PBXReferenceProxy;
1098 | fileType = archive.ar;
1099 | path = libRCTText.a;
1100 | remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */;
1101 | sourceTree = BUILT_PRODUCTS_DIR;
1102 | };
1103 | ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */ = {
1104 | isa = PBXReferenceProxy;
1105 | fileType = archive.ar;
1106 | path = libRCTBlob.a;
1107 | remoteRef = ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */;
1108 | sourceTree = BUILT_PRODUCTS_DIR;
1109 | };
1110 | /* End PBXReferenceProxy section */
1111 |
1112 | /* Begin PBXResourcesBuildPhase section */
1113 | 00E356EC1AD99517003FC87E /* Resources */ = {
1114 | isa = PBXResourcesBuildPhase;
1115 | buildActionMask = 2147483647;
1116 | files = (
1117 | );
1118 | runOnlyForDeploymentPostprocessing = 0;
1119 | };
1120 | 13B07F8E1A680F5B00A75B9A /* Resources */ = {
1121 | isa = PBXResourcesBuildPhase;
1122 | buildActionMask = 2147483647;
1123 | files = (
1124 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
1125 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
1126 | AFC4962DED094AB7A38ABDB2 /* Roboto_medium.ttf in Resources */,
1127 | 64DCE2B8730C444FBD1685FE /* Roboto.ttf in Resources */,
1128 | A2B097B91125415C9F89DDD3 /* rubicon-icon-font.ttf in Resources */,
1129 | 880709C9C01F4BED9488E07F /* AntDesign.ttf in Resources */,
1130 | 7803DC58F10C4C44B51E26A3 /* Entypo.ttf in Resources */,
1131 | FAD3D817E17D431DBDBEB32F /* EvilIcons.ttf in Resources */,
1132 | A3617AFD9BD940C89D626A8E /* Feather.ttf in Resources */,
1133 | E2FC633AFABE42A4BC3D541C /* FontAwesome.ttf in Resources */,
1134 | 0A78D37F8ED1443FBA35266A /* FontAwesome5_Brands.ttf in Resources */,
1135 | 98B9AF7A93494D0D94E7C9A0 /* FontAwesome5_Regular.ttf in Resources */,
1136 | 102EB11619C749AA86A791CC /* FontAwesome5_Solid.ttf in Resources */,
1137 | 39DD2AD4BF634E0BBABF4D29 /* Foundation.ttf in Resources */,
1138 | 0680F214FF1A42D489C3E703 /* Ionicons.ttf in Resources */,
1139 | 692810743F024B50A1B2EBE5 /* MaterialCommunityIcons.ttf in Resources */,
1140 | 4EE4A90169354B50AC82717A /* MaterialIcons.ttf in Resources */,
1141 | 463225779A5F4F81A39B12AB /* Octicons.ttf in Resources */,
1142 | 33247FE66F494168AAE97124 /* SimpleLineIcons.ttf in Resources */,
1143 | D83D91BAB04343A6A76288A8 /* Zocial.ttf in Resources */,
1144 | );
1145 | runOnlyForDeploymentPostprocessing = 0;
1146 | };
1147 | 2D02E4791E0B4A5D006451C7 /* Resources */ = {
1148 | isa = PBXResourcesBuildPhase;
1149 | buildActionMask = 2147483647;
1150 | files = (
1151 | 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */,
1152 | );
1153 | runOnlyForDeploymentPostprocessing = 0;
1154 | };
1155 | 2D02E48E1E0B4A5D006451C7 /* Resources */ = {
1156 | isa = PBXResourcesBuildPhase;
1157 | buildActionMask = 2147483647;
1158 | files = (
1159 | );
1160 | runOnlyForDeploymentPostprocessing = 0;
1161 | };
1162 | /* End PBXResourcesBuildPhase section */
1163 |
1164 | /* Begin PBXShellScriptBuildPhase section */
1165 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
1166 | isa = PBXShellScriptBuildPhase;
1167 | buildActionMask = 2147483647;
1168 | files = (
1169 | );
1170 | inputPaths = (
1171 | );
1172 | name = "Bundle React Native code and images";
1173 | outputPaths = (
1174 | );
1175 | runOnlyForDeploymentPostprocessing = 0;
1176 | shellPath = /bin/sh;
1177 | shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
1178 | };
1179 | 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = {
1180 | isa = PBXShellScriptBuildPhase;
1181 | buildActionMask = 2147483647;
1182 | files = (
1183 | );
1184 | inputPaths = (
1185 | );
1186 | name = "Bundle React Native Code And Images";
1187 | outputPaths = (
1188 | );
1189 | runOnlyForDeploymentPostprocessing = 0;
1190 | shellPath = /bin/sh;
1191 | shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
1192 | };
1193 | /* End PBXShellScriptBuildPhase section */
1194 |
1195 | /* Begin PBXSourcesBuildPhase section */
1196 | 00E356EA1AD99517003FC87E /* Sources */ = {
1197 | isa = PBXSourcesBuildPhase;
1198 | buildActionMask = 2147483647;
1199 | files = (
1200 | 00E356F31AD99517003FC87E /* CognitoRNTests.m in Sources */,
1201 | );
1202 | runOnlyForDeploymentPostprocessing = 0;
1203 | };
1204 | 13B07F871A680F5B00A75B9A /* Sources */ = {
1205 | isa = PBXSourcesBuildPhase;
1206 | buildActionMask = 2147483647;
1207 | files = (
1208 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
1209 | 13B07FC11A68108700A75B9A /* main.m in Sources */,
1210 | );
1211 | runOnlyForDeploymentPostprocessing = 0;
1212 | };
1213 | 2D02E4771E0B4A5D006451C7 /* Sources */ = {
1214 | isa = PBXSourcesBuildPhase;
1215 | buildActionMask = 2147483647;
1216 | files = (
1217 | 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */,
1218 | 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */,
1219 | );
1220 | runOnlyForDeploymentPostprocessing = 0;
1221 | };
1222 | 2D02E48C1E0B4A5D006451C7 /* Sources */ = {
1223 | isa = PBXSourcesBuildPhase;
1224 | buildActionMask = 2147483647;
1225 | files = (
1226 | 2DCD954D1E0B4F2C00145EB5 /* CognitoRNTests.m in Sources */,
1227 | );
1228 | runOnlyForDeploymentPostprocessing = 0;
1229 | };
1230 | /* End PBXSourcesBuildPhase section */
1231 |
1232 | /* Begin PBXTargetDependency section */
1233 | 00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
1234 | isa = PBXTargetDependency;
1235 | target = 13B07F861A680F5B00A75B9A /* CognitoRN */;
1236 | targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
1237 | };
1238 | 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = {
1239 | isa = PBXTargetDependency;
1240 | target = 2D02E47A1E0B4A5D006451C7 /* CognitoRN-tvOS */;
1241 | targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */;
1242 | };
1243 | /* End PBXTargetDependency section */
1244 |
1245 | /* Begin PBXVariantGroup section */
1246 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = {
1247 | isa = PBXVariantGroup;
1248 | children = (
1249 | 13B07FB21A68108700A75B9A /* Base */,
1250 | );
1251 | name = LaunchScreen.xib;
1252 | path = CognitoRN;
1253 | sourceTree = "";
1254 | };
1255 | /* End PBXVariantGroup section */
1256 |
1257 | /* Begin XCBuildConfiguration section */
1258 | 00E356F61AD99517003FC87E /* Debug */ = {
1259 | isa = XCBuildConfiguration;
1260 | buildSettings = {
1261 | BUNDLE_LOADER = "$(TEST_HOST)";
1262 | GCC_PREPROCESSOR_DEFINITIONS = (
1263 | "DEBUG=1",
1264 | "$(inherited)",
1265 | );
1266 | INFOPLIST_FILE = CognitoRNTests/Info.plist;
1267 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
1268 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1269 | OTHER_LDFLAGS = (
1270 | "-ObjC",
1271 | "-lc++",
1272 | );
1273 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
1274 | PRODUCT_NAME = "$(TARGET_NAME)";
1275 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CognitoRN.app/CognitoRN";
1276 | LIBRARY_SEARCH_PATHS = (
1277 | "$(inherited)",
1278 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1279 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1280 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1281 | );
1282 | HEADER_SEARCH_PATHS = (
1283 | "$(inherited)",
1284 | "$(SRCROOT)/../node_modules/amazon-cognito-identity-js/ios/**",
1285 | "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
1286 | "$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
1287 | );
1288 | };
1289 | name = Debug;
1290 | };
1291 | 00E356F71AD99517003FC87E /* Release */ = {
1292 | isa = XCBuildConfiguration;
1293 | buildSettings = {
1294 | BUNDLE_LOADER = "$(TEST_HOST)";
1295 | COPY_PHASE_STRIP = NO;
1296 | INFOPLIST_FILE = CognitoRNTests/Info.plist;
1297 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
1298 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1299 | OTHER_LDFLAGS = (
1300 | "-ObjC",
1301 | "-lc++",
1302 | );
1303 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
1304 | PRODUCT_NAME = "$(TARGET_NAME)";
1305 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CognitoRN.app/CognitoRN";
1306 | LIBRARY_SEARCH_PATHS = (
1307 | "$(inherited)",
1308 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1309 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1310 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1311 | );
1312 | HEADER_SEARCH_PATHS = (
1313 | "$(inherited)",
1314 | "$(SRCROOT)/../node_modules/amazon-cognito-identity-js/ios/**",
1315 | "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
1316 | "$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
1317 | );
1318 | };
1319 | name = Release;
1320 | };
1321 | 13B07F941A680F5B00A75B9A /* Debug */ = {
1322 | isa = XCBuildConfiguration;
1323 | buildSettings = {
1324 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1325 | CURRENT_PROJECT_VERSION = 1;
1326 | DEAD_CODE_STRIPPING = NO;
1327 | INFOPLIST_FILE = CognitoRN/Info.plist;
1328 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1329 | OTHER_LDFLAGS = (
1330 | "$(inherited)",
1331 | "-ObjC",
1332 | "-lc++",
1333 | );
1334 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
1335 | PRODUCT_NAME = CognitoRN;
1336 | VERSIONING_SYSTEM = "apple-generic";
1337 | HEADER_SEARCH_PATHS = (
1338 | "$(inherited)",
1339 | "$(SRCROOT)/../node_modules/amazon-cognito-identity-js/ios/**",
1340 | "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
1341 | "$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
1342 | );
1343 | };
1344 | name = Debug;
1345 | };
1346 | 13B07F951A680F5B00A75B9A /* Release */ = {
1347 | isa = XCBuildConfiguration;
1348 | buildSettings = {
1349 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1350 | CURRENT_PROJECT_VERSION = 1;
1351 | INFOPLIST_FILE = CognitoRN/Info.plist;
1352 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1353 | OTHER_LDFLAGS = (
1354 | "$(inherited)",
1355 | "-ObjC",
1356 | "-lc++",
1357 | );
1358 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
1359 | PRODUCT_NAME = CognitoRN;
1360 | VERSIONING_SYSTEM = "apple-generic";
1361 | HEADER_SEARCH_PATHS = (
1362 | "$(inherited)",
1363 | "$(SRCROOT)/../node_modules/amazon-cognito-identity-js/ios/**",
1364 | "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
1365 | "$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
1366 | );
1367 | };
1368 | name = Release;
1369 | };
1370 | 2D02E4971E0B4A5E006451C7 /* Debug */ = {
1371 | isa = XCBuildConfiguration;
1372 | buildSettings = {
1373 | ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
1374 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
1375 | CLANG_ANALYZER_NONNULL = YES;
1376 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
1377 | CLANG_WARN_INFINITE_RECURSION = YES;
1378 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1379 | DEBUG_INFORMATION_FORMAT = dwarf;
1380 | ENABLE_TESTABILITY = YES;
1381 | GCC_NO_COMMON_BLOCKS = YES;
1382 | INFOPLIST_FILE = "CognitoRN-tvOS/Info.plist";
1383 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1384 | OTHER_LDFLAGS = (
1385 | "-ObjC",
1386 | "-lc++",
1387 | );
1388 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.CognitoRN-tvOS";
1389 | PRODUCT_NAME = "$(TARGET_NAME)";
1390 | SDKROOT = appletvos;
1391 | TARGETED_DEVICE_FAMILY = 3;
1392 | TVOS_DEPLOYMENT_TARGET = 9.2;
1393 | LIBRARY_SEARCH_PATHS = (
1394 | "$(inherited)",
1395 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1396 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1397 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1398 | );
1399 | HEADER_SEARCH_PATHS = (
1400 | "$(inherited)",
1401 | "$(SRCROOT)/../node_modules/amazon-cognito-identity-js/ios/**",
1402 | "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
1403 | "$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
1404 | );
1405 | };
1406 | name = Debug;
1407 | };
1408 | 2D02E4981E0B4A5E006451C7 /* Release */ = {
1409 | isa = XCBuildConfiguration;
1410 | buildSettings = {
1411 | ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
1412 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
1413 | CLANG_ANALYZER_NONNULL = YES;
1414 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
1415 | CLANG_WARN_INFINITE_RECURSION = YES;
1416 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1417 | COPY_PHASE_STRIP = NO;
1418 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
1419 | GCC_NO_COMMON_BLOCKS = YES;
1420 | INFOPLIST_FILE = "CognitoRN-tvOS/Info.plist";
1421 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1422 | OTHER_LDFLAGS = (
1423 | "-ObjC",
1424 | "-lc++",
1425 | );
1426 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.CognitoRN-tvOS";
1427 | PRODUCT_NAME = "$(TARGET_NAME)";
1428 | SDKROOT = appletvos;
1429 | TARGETED_DEVICE_FAMILY = 3;
1430 | TVOS_DEPLOYMENT_TARGET = 9.2;
1431 | LIBRARY_SEARCH_PATHS = (
1432 | "$(inherited)",
1433 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1434 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1435 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1436 | );
1437 | HEADER_SEARCH_PATHS = (
1438 | "$(inherited)",
1439 | "$(SRCROOT)/../node_modules/amazon-cognito-identity-js/ios/**",
1440 | "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
1441 | "$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
1442 | );
1443 | };
1444 | name = Release;
1445 | };
1446 | 2D02E4991E0B4A5E006451C7 /* Debug */ = {
1447 | isa = XCBuildConfiguration;
1448 | buildSettings = {
1449 | BUNDLE_LOADER = "$(TEST_HOST)";
1450 | CLANG_ANALYZER_NONNULL = YES;
1451 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
1452 | CLANG_WARN_INFINITE_RECURSION = YES;
1453 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1454 | DEBUG_INFORMATION_FORMAT = dwarf;
1455 | ENABLE_TESTABILITY = YES;
1456 | GCC_NO_COMMON_BLOCKS = YES;
1457 | INFOPLIST_FILE = "CognitoRN-tvOSTests/Info.plist";
1458 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1459 | OTHER_LDFLAGS = (
1460 | "-ObjC",
1461 | "-lc++",
1462 | );
1463 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.CognitoRN-tvOSTests";
1464 | PRODUCT_NAME = "$(TARGET_NAME)";
1465 | SDKROOT = appletvos;
1466 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CognitoRN-tvOS.app/CognitoRN-tvOS";
1467 | TVOS_DEPLOYMENT_TARGET = 10.1;
1468 | LIBRARY_SEARCH_PATHS = (
1469 | "$(inherited)",
1470 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1471 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1472 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1473 | );
1474 | HEADER_SEARCH_PATHS = (
1475 | "$(inherited)",
1476 | "$(SRCROOT)/../node_modules/amazon-cognito-identity-js/ios/**",
1477 | "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
1478 | "$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
1479 | );
1480 | };
1481 | name = Debug;
1482 | };
1483 | 2D02E49A1E0B4A5E006451C7 /* Release */ = {
1484 | isa = XCBuildConfiguration;
1485 | buildSettings = {
1486 | BUNDLE_LOADER = "$(TEST_HOST)";
1487 | CLANG_ANALYZER_NONNULL = YES;
1488 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
1489 | CLANG_WARN_INFINITE_RECURSION = YES;
1490 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1491 | COPY_PHASE_STRIP = NO;
1492 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
1493 | GCC_NO_COMMON_BLOCKS = YES;
1494 | INFOPLIST_FILE = "CognitoRN-tvOSTests/Info.plist";
1495 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1496 | OTHER_LDFLAGS = (
1497 | "-ObjC",
1498 | "-lc++",
1499 | );
1500 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.CognitoRN-tvOSTests";
1501 | PRODUCT_NAME = "$(TARGET_NAME)";
1502 | SDKROOT = appletvos;
1503 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CognitoRN-tvOS.app/CognitoRN-tvOS";
1504 | TVOS_DEPLOYMENT_TARGET = 10.1;
1505 | LIBRARY_SEARCH_PATHS = (
1506 | "$(inherited)",
1507 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1508 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1509 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1510 | );
1511 | HEADER_SEARCH_PATHS = (
1512 | "$(inherited)",
1513 | "$(SRCROOT)/../node_modules/amazon-cognito-identity-js/ios/**",
1514 | "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
1515 | "$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
1516 | );
1517 | };
1518 | name = Release;
1519 | };
1520 | 83CBBA201A601CBA00E9B192 /* Debug */ = {
1521 | isa = XCBuildConfiguration;
1522 | buildSettings = {
1523 | ALWAYS_SEARCH_USER_PATHS = NO;
1524 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
1525 | CLANG_CXX_LIBRARY = "libc++";
1526 | CLANG_ENABLE_MODULES = YES;
1527 | CLANG_ENABLE_OBJC_ARC = YES;
1528 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
1529 | CLANG_WARN_BOOL_CONVERSION = YES;
1530 | CLANG_WARN_COMMA = YES;
1531 | CLANG_WARN_CONSTANT_CONVERSION = YES;
1532 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
1533 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
1534 | CLANG_WARN_EMPTY_BODY = YES;
1535 | CLANG_WARN_ENUM_CONVERSION = YES;
1536 | CLANG_WARN_INFINITE_RECURSION = YES;
1537 | CLANG_WARN_INT_CONVERSION = YES;
1538 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
1539 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
1540 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
1541 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
1542 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
1543 | CLANG_WARN_STRICT_PROTOTYPES = YES;
1544 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1545 | CLANG_WARN_UNREACHABLE_CODE = YES;
1546 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
1547 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1548 | COPY_PHASE_STRIP = NO;
1549 | ENABLE_STRICT_OBJC_MSGSEND = YES;
1550 | ENABLE_TESTABILITY = YES;
1551 | GCC_C_LANGUAGE_STANDARD = gnu99;
1552 | GCC_DYNAMIC_NO_PIC = NO;
1553 | GCC_NO_COMMON_BLOCKS = YES;
1554 | GCC_OPTIMIZATION_LEVEL = 0;
1555 | GCC_PREPROCESSOR_DEFINITIONS = (
1556 | "DEBUG=1",
1557 | "$(inherited)",
1558 | );
1559 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
1560 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
1561 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
1562 | GCC_WARN_UNDECLARED_SELECTOR = YES;
1563 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
1564 | GCC_WARN_UNUSED_FUNCTION = YES;
1565 | GCC_WARN_UNUSED_VARIABLE = YES;
1566 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
1567 | MTL_ENABLE_DEBUG_INFO = YES;
1568 | ONLY_ACTIVE_ARCH = YES;
1569 | SDKROOT = iphoneos;
1570 | };
1571 | name = Debug;
1572 | };
1573 | 83CBBA211A601CBA00E9B192 /* Release */ = {
1574 | isa = XCBuildConfiguration;
1575 | buildSettings = {
1576 | ALWAYS_SEARCH_USER_PATHS = NO;
1577 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
1578 | CLANG_CXX_LIBRARY = "libc++";
1579 | CLANG_ENABLE_MODULES = YES;
1580 | CLANG_ENABLE_OBJC_ARC = YES;
1581 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
1582 | CLANG_WARN_BOOL_CONVERSION = YES;
1583 | CLANG_WARN_COMMA = YES;
1584 | CLANG_WARN_CONSTANT_CONVERSION = YES;
1585 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
1586 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
1587 | CLANG_WARN_EMPTY_BODY = YES;
1588 | CLANG_WARN_ENUM_CONVERSION = YES;
1589 | CLANG_WARN_INFINITE_RECURSION = YES;
1590 | CLANG_WARN_INT_CONVERSION = YES;
1591 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
1592 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
1593 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
1594 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
1595 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
1596 | CLANG_WARN_STRICT_PROTOTYPES = YES;
1597 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1598 | CLANG_WARN_UNREACHABLE_CODE = YES;
1599 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
1600 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1601 | COPY_PHASE_STRIP = YES;
1602 | ENABLE_NS_ASSERTIONS = NO;
1603 | ENABLE_STRICT_OBJC_MSGSEND = YES;
1604 | GCC_C_LANGUAGE_STANDARD = gnu99;
1605 | GCC_NO_COMMON_BLOCKS = YES;
1606 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
1607 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
1608 | GCC_WARN_UNDECLARED_SELECTOR = YES;
1609 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
1610 | GCC_WARN_UNUSED_FUNCTION = YES;
1611 | GCC_WARN_UNUSED_VARIABLE = YES;
1612 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
1613 | MTL_ENABLE_DEBUG_INFO = NO;
1614 | SDKROOT = iphoneos;
1615 | VALIDATE_PRODUCT = YES;
1616 | };
1617 | name = Release;
1618 | };
1619 | /* End XCBuildConfiguration section */
1620 |
1621 | /* Begin XCConfigurationList section */
1622 | 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "CognitoRNTests" */ = {
1623 | isa = XCConfigurationList;
1624 | buildConfigurations = (
1625 | 00E356F61AD99517003FC87E /* Debug */,
1626 | 00E356F71AD99517003FC87E /* Release */,
1627 | );
1628 | defaultConfigurationIsVisible = 0;
1629 | defaultConfigurationName = Release;
1630 | };
1631 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "CognitoRN" */ = {
1632 | isa = XCConfigurationList;
1633 | buildConfigurations = (
1634 | 13B07F941A680F5B00A75B9A /* Debug */,
1635 | 13B07F951A680F5B00A75B9A /* Release */,
1636 | );
1637 | defaultConfigurationIsVisible = 0;
1638 | defaultConfigurationName = Release;
1639 | };
1640 | 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "CognitoRN-tvOS" */ = {
1641 | isa = XCConfigurationList;
1642 | buildConfigurations = (
1643 | 2D02E4971E0B4A5E006451C7 /* Debug */,
1644 | 2D02E4981E0B4A5E006451C7 /* Release */,
1645 | );
1646 | defaultConfigurationIsVisible = 0;
1647 | defaultConfigurationName = Release;
1648 | };
1649 | 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "CognitoRN-tvOSTests" */ = {
1650 | isa = XCConfigurationList;
1651 | buildConfigurations = (
1652 | 2D02E4991E0B4A5E006451C7 /* Debug */,
1653 | 2D02E49A1E0B4A5E006451C7 /* Release */,
1654 | );
1655 | defaultConfigurationIsVisible = 0;
1656 | defaultConfigurationName = Release;
1657 | };
1658 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "CognitoRN" */ = {
1659 | isa = XCConfigurationList;
1660 | buildConfigurations = (
1661 | 83CBBA201A601CBA00E9B192 /* Debug */,
1662 | 83CBBA211A601CBA00E9B192 /* Release */,
1663 | );
1664 | defaultConfigurationIsVisible = 0;
1665 | defaultConfigurationName = Release;
1666 | };
1667 | /* End XCConfigurationList section */
1668 | };
1669 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
1670 | }
1671 |
--------------------------------------------------------------------------------
/ios/CognitoRN.xcodeproj/xcshareddata/xcschemes/CognitoRN-tvOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
43 |
49 |
50 |
51 |
52 |
53 |
58 |
59 |
61 |
67 |
68 |
69 |
70 |
71 |
77 |
78 |
79 |
80 |
81 |
82 |
92 |
94 |
100 |
101 |
102 |
103 |
104 |
105 |
111 |
113 |
119 |
120 |
121 |
122 |
124 |
125 |
128 |
129 |
130 |
--------------------------------------------------------------------------------
/ios/CognitoRN.xcodeproj/xcshareddata/xcschemes/CognitoRN.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
43 |
49 |
50 |
51 |
52 |
53 |
58 |
59 |
61 |
67 |
68 |
69 |
70 |
71 |
77 |
78 |
79 |
80 |
81 |
82 |
92 |
94 |
100 |
101 |
102 |
103 |
104 |
105 |
111 |
113 |
119 |
120 |
121 |
122 |
124 |
125 |
128 |
129 |
130 |
--------------------------------------------------------------------------------
/ios/CognitoRN/AppDelegate.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | *
4 | * This source code is licensed under the MIT license found in the
5 | * LICENSE file in the root directory of this source tree.
6 | */
7 |
8 | #import
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (nonatomic, strong) UIWindow *window;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/ios/CognitoRN/AppDelegate.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | *
4 | * This source code is licensed under the MIT license found in the
5 | * LICENSE file in the root directory of this source tree.
6 | */
7 |
8 | #import "AppDelegate.h"
9 |
10 | #import
11 | #import
12 | #import
13 |
14 | @implementation AppDelegate
15 |
16 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
17 | {
18 | RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
19 | RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
20 | moduleName:@"CognitoRN"
21 | initialProperties:nil];
22 |
23 | rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
24 |
25 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
26 | UIViewController *rootViewController = [UIViewController new];
27 | rootViewController.view = rootView;
28 | self.window.rootViewController = rootViewController;
29 | [self.window makeKeyAndVisible];
30 | return YES;
31 | }
32 |
33 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
34 | {
35 | #if DEBUG
36 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
37 | #else
38 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
39 | #endif
40 | }
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/ios/CognitoRN/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
21 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/ios/CognitoRN/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/ios/CognitoRN/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/ios/CognitoRN/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | CognitoRN
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1
25 | LSRequiresIPhoneOS
26 |
27 | NSLocationWhenInUseUsageDescription
28 |
29 | UILaunchStoryboardName
30 | LaunchScreen
31 | UIRequiredDeviceCapabilities
32 |
33 | armv7
34 |
35 | UISupportedInterfaceOrientations
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationLandscapeLeft
39 | UIInterfaceOrientationLandscapeRight
40 |
41 | UIViewControllerBasedStatusBarAppearance
42 |
43 | NSAppTransportSecurity
44 |
45 | NSAllowsArbitraryLoads
46 |
47 | NSExceptionDomains
48 |
49 | localhost
50 |
51 | NSExceptionAllowsInsecureHTTPLoads
52 |
53 |
54 |
55 |
56 | UIAppFonts
57 |
58 | Roboto_medium.ttf
59 | Roboto.ttf
60 | rubicon-icon-font.ttf
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/ios/CognitoRN/main.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | *
4 | * This source code is licensed under the MIT license found in the
5 | * LICENSE file in the root directory of this source tree.
6 | */
7 |
8 | #import
9 |
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ios/CognitoRNTests/CognitoRNTests.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | *
4 | * This source code is licensed under the MIT license found in the
5 | * LICENSE file in the root directory of this source tree.
6 | */
7 |
8 | #import
9 | #import
10 |
11 | #import
12 | #import
13 |
14 | #define TIMEOUT_SECONDS 600
15 | #define TEXT_TO_LOOK_FOR @"Welcome to React Native!"
16 |
17 | @interface CognitoRNTests : XCTestCase
18 |
19 | @end
20 |
21 | @implementation CognitoRNTests
22 |
23 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test
24 | {
25 | if (test(view)) {
26 | return YES;
27 | }
28 | for (UIView *subview in [view subviews]) {
29 | if ([self findSubviewInView:subview matching:test]) {
30 | return YES;
31 | }
32 | }
33 | return NO;
34 | }
35 |
36 | - (void)testRendersWelcomeScreen
37 | {
38 | UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];
39 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];
40 | BOOL foundElement = NO;
41 |
42 | __block NSString *redboxError = nil;
43 | RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
44 | if (level >= RCTLogLevelError) {
45 | redboxError = message;
46 | }
47 | });
48 |
49 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
50 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
51 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
52 |
53 | foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) {
54 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
55 | return YES;
56 | }
57 | return NO;
58 | }];
59 | }
60 |
61 | RCTSetLogFunction(RCTDefaultLogFunction);
62 |
63 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError);
64 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
65 | }
66 |
67 |
68 | @end
69 |
--------------------------------------------------------------------------------
/ios/CognitoRNTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/meta/images/landing-page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/meta/images/landing-page.png
--------------------------------------------------------------------------------
/meta/images/login-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/meta/images/login-screen.png
--------------------------------------------------------------------------------
/meta/images/secure-home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vbudilov/react-native-starter/f2d5b7564c9598573614a32e508ac40037476ba2/meta/images/secure-home.png
--------------------------------------------------------------------------------
/navigation/AppNavigator.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {createAppContainer, createSwitchNavigator} from 'react-navigation';
3 | // import MainTabNavigator from './MainTabNavigator';
4 | import LandingScreen from "../screens/auth/LandingScreen";
5 | import LoginScreen from "../screens/auth/LoginScreen";
6 | import RegisterUsernameScreen from "../screens/auth/RegisterUsernameScreen";
7 | import RegisterPasswordScreen from "../screens/auth/RegisterPasswordScreen";
8 | import RegisterFirstNameScreen from "../screens/auth/RegisterFirstNameScreen";
9 | import RegisterLastNameScreen from "../screens/auth/RegisterLastNameScreen";
10 | import RegisterDOBScreen from "../screens/auth/RegisterDOBScreen";
11 | import MainTabNavigator from "./MainTabNavigator";
12 | import RegisterConfirmScreen from "../screens/auth/RegisterConfirmScreen";
13 | import ForgotPasswordScreen from "../screens/auth/ForgotPasswordScreen";
14 |
15 | export default createAppContainer(createSwitchNavigator({
16 | // You could add another route here for authentication.
17 | // Read more at https://reactnavigation.org/docs/en/auth-flow.html
18 | Main: LandingScreen,
19 | Login: LoginScreen,
20 | ForgotPassword: ForgotPasswordScreen,
21 | Register: RegisterUsernameScreen,
22 | RegisterPassword: RegisterPasswordScreen,
23 | RegisterFN: RegisterFirstNameScreen,
24 | RegisterLN: RegisterLastNameScreen,
25 | RegisterDOB: RegisterDOBScreen,
26 | RegisterConfirm: RegisterConfirmScreen,
27 | // Tab Home Page once logged-in
28 | Secure: MainTabNavigator,
29 | },
30 | {
31 | navigationOptions: {
32 | header: null,
33 | },
34 | }));
35 |
--------------------------------------------------------------------------------
/navigation/MainTabNavigator.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {Platform} from 'react-native';
3 | import {createBottomTabNavigator, createStackNavigator} from 'react-navigation';
4 |
5 | import TabBarIcon from '../components/TabBarIcon';
6 | import HomeScreen from '../screens/secure/home/HomeScreen';
7 | import SettingsScreen from '../screens/secure/settings/SettingsScreen';
8 | import {ChatStackNavigator} from "../screens/secure/chat/ChatNavigation";
9 |
10 |
11 | // Home Tab
12 | const HomeStack = createStackNavigator({
13 | Home: HomeScreen,
14 | });
15 | HomeStack.navigationOptions = {
16 | tabBarLabel: 'Home',
17 | tabBarIcon: ({focused}) => (
18 |
26 | ),
27 | };
28 |
29 | // Chat Tab
30 | const ChatStack = createStackNavigator({
31 | Chat: ChatStackNavigator,
32 | },
33 | {
34 | headerMode: 'none'
35 | });
36 | ChatStack.navigationOptions = {
37 | tabBarLabel: 'Chat',
38 | tabBarIcon: ({focused}) => (
39 |
43 | ), header: null,
44 | };
45 |
46 |
47 | // Settings Tab
48 | const SettingsStack = createStackNavigator({
49 | Settings: SettingsScreen,
50 | });
51 | SettingsStack.navigationOptions = {
52 | tabBarLabel: 'Settings',
53 | tabBarIcon: ({focused}) => (
54 |
58 | ), header: null,
59 | };
60 |
61 | export default createBottomTabNavigator({
62 | HomeStack,
63 | SettingsStack,
64 | ChatStack,
65 | }, {
66 | tabBarOptions: {
67 | showLabel: false,
68 | header: null,
69 | }
70 | });
71 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "CognitoRN",
3 | "scripts": {
4 | "start": "react-native start",
5 | "android": "react-native run-android",
6 | "ios": "react-native run-ios",
7 | "test": "node ./node_modules/jest/bin/jest.js --watchAll"
8 | },
9 | "jest": {
10 | "preset": "react-native"
11 | },
12 | "dependencies": {
13 | "@aws-amplify/auth": "1.2.25",
14 | "@aws-amplify/core": "1.0.28",
15 | "@babel/runtime": "7.5.0",
16 | "aws-amplify-react-native": "2.1.13",
17 | "emoji-utils": "1.0.1",
18 | "moment": "2.24.0",
19 | "native-base": "2.12.1",
20 | "prop-types": "15.7.2",
21 | "react": "16.8.6",
22 | "react-native": "0.59.9",
23 | "react-native-dropdownalert": "4.1.0",
24 | "react-native-gesture-handler": "1.3.0",
25 | "react-native-gifted-chat": "0.9.11",
26 | "react-native-vector-icons": "6.6.0",
27 | "react-navigation": "3.11.0",
28 | "validator": "11.0.0"
29 | },
30 | "devDependencies": {
31 | "jest": "24.8.0",
32 | "jetifier": "1.6.1",
33 | "metro-react-native-babel-preset": "0.54.1"
34 | },
35 | "private": true
36 | }
37 |
--------------------------------------------------------------------------------
/screens/auth/ForgotPasswordScreen.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 | import {TextInput} from 'react-native';
3 | import {Button, Container, Content, Header, Icon, Item, Left, Right, Text} from 'native-base';
4 | import Auth from '@aws-amplify/auth';
5 | import {Logger} from '@aws-amplify/core';
6 | import {authStyle} from "./style";
7 | import DropdownAlert from 'react-native-dropdownalert';
8 | import validator from 'validator';
9 |
10 |
11 | export default class ForgotPasswordScreen extends Component {
12 |
13 | state = {
14 | username: "",
15 | password: "",
16 | code: "",
17 | passwordReset: false
18 | };
19 |
20 | logger = new Logger('LoginScreen');
21 |
22 | componentWillMount() {
23 | this.logger.info("In componentWillMount. ");
24 |
25 | Auth.currentAuthenticatedUser()
26 | .then(user => {
27 | this.logger.info("Redirecting to activities");
28 | this.props.navigation.navigate('Secure');
29 | })
30 | .catch(err => {
31 | this.logger.info("Not logged in");
32 | });
33 | }
34 |
35 | sendResetCode = async () => {
36 | if (validator.isEmpty(this.state.username) || !validator.isEmail(this.state.username)) {
37 | this.logger.info("Email validation error");
38 | this.dropdown.alertWithType('error', 'Error', "A valid email is required");
39 | return null;
40 | }
41 |
42 | Auth.forgotPassword(this.state.username)
43 | .then(data => console.log(data))
44 | .catch(err => console.log(err));
45 |
46 |
47 | this.setState({passwordReset: true})
48 | };
49 |
50 | resetPassword = async () => {
51 |
52 | if (validator.isEmpty(this.state.username) || !validator.isEmail(this.state.username)) {
53 | this.logger.info("Email validation error");
54 | this.dropdown.alertWithType('error', 'Error', "A valid email is required");
55 | return null;
56 | }
57 | if (validator.isEmpty(this.state.code)) {
58 | this.logger.info("Code validation error");
59 | this.dropdown.alertWithType('error', 'Error', "A valid code is required");
60 | return null;
61 | }
62 | if (validator.isEmpty(this.state.password) || this.state.password.length < 2) {
63 | this.logger.info("Password validation error");
64 | this.dropdown.alertWithType('error', 'Error', "A password is required");
65 | return null;
66 | }
67 |
68 | const {username, code, password} = this.state;
69 |
70 | // Collect confirmation code and new password, then
71 | Auth.forgotPasswordSubmit(username, code, password)
72 | .then(data => {
73 | Auth.signIn(username, password)
74 | .then(user => {
75 | this.setState({user});
76 |
77 | this.logger.info('successful sign in!');
78 | // this.logger.info('Auth: ', Auth);
79 |
80 | this.setState({
81 | loggingIn: false
82 | });
83 |
84 | this.props.navigation.navigate('Secure')
85 | })
86 | .catch(err => {
87 | this.logger.info('error signing in!: ', err);
88 | this.setState({
89 | loggingIn: false
90 | });
91 | if (err.code === "UserNotConfirmedException") {
92 | this.logger.info("The activity hasn't been confirmed yet. Sending over to the confirmation page");
93 |
94 | this.props.navigation.navigate('RegisterConfirm', {
95 | username: this.state.username,
96 | password: this.state.password,
97 | sendConfirmationCode: true
98 | });
99 | }
100 |
101 | this.dropdown.alertWithType('error', 'Error', err.message);
102 |
103 | })
104 | })
105 | .catch(err => {
106 | this.dropdown.alertWithType('error', 'Error', err.message);
107 | }
108 | );
109 | };
110 |
111 | render() {
112 | const {navigate} = this.props.navigation;
113 |
114 | return (
115 |
116 |
117 |
118 |
121 |
122 |
123 | {/**/}
126 |
127 |
128 |
129 |
130 |
131 | {!this.state.passwordReset &&
132 |
133 |
134 | Enter your email
135 | }
136 | {this.state.passwordReset &&
137 |
138 |
139 | Enter new password
140 | }
141 |
142 | -
143 | this.setState({username: text})}
145 | autoCapitalize="none"
146 | autoCorrect={false}
147 | underlineColorAndroid='transparent'
148 | keyboardType='email-address'
149 | returnKeyType="next"
150 | placeholder='email'
151 | value={this.state.username}
152 | />
153 |
154 |
155 | {this.state.passwordReset &&
156 |
157 | -
158 | this.setState({password: text})}
162 | ref={(input) => this.passwordInput = input}
163 | secureTextEntry
164 | value={this.state.password}
165 | />
166 |
}
167 |
168 | {this.state.passwordReset &&
169 |
170 | -
171 | this.setState({code: text})}
173 | autoCapitalize="none"
174 | autoCorrect={false}
175 | underlineColorAndroid='transparent'
176 | keyboardType='numeric'
177 | returnKeyType="next"
178 | placeholder='code'
179 | value={this.state.code}
180 | />
181 |
}
182 | {!this.state.passwordReset && }
186 |
187 | {this.state.passwordReset && }
191 |
192 |
193 | this.dropdown = ref}/>
194 |
195 |
196 | );
197 | }
198 | }
199 |
--------------------------------------------------------------------------------
/screens/auth/LandingScreen.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 | import {ImageBackground, View} from 'react-native';
3 | import {Button, Container, Content, Text} from 'native-base';
4 | import {authStyle} from "./style";
5 | import Auth from '@aws-amplify/auth';
6 | import {Logger} from '@aws-amplify/core';
7 |
8 | export default class LandingScreen extends Component {
9 |
10 | logger = new Logger('LandingScreen');
11 |
12 |
13 | componentDidMount() {
14 | Auth.currentAuthenticatedUser()
15 | .then(user => {
16 | this.logger.info("Redirecting to activities");
17 | this.props.navigation.navigate('Secure');
18 | })
19 | .catch(err => {
20 | this.logger.info("Not logged in");
21 | });
22 | }
23 |
24 | render() {
25 | const {navigate} = this.props.navigation;
26 |
27 | return (
28 |
29 |
31 |
32 |
33 | Welcome message goes here
34 |
35 |
36 |
37 |
38 |
42 |
46 |
47 |
48 | );
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/screens/auth/LoginScreen.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 | import {TextInput} from 'react-native';
3 | import {Button, Container, Content, Header, Icon, Item, Left, Right, Text} from 'native-base';
4 | import Auth from '@aws-amplify/auth';
5 | import {Logger} from '@aws-amplify/core';
6 | import {authStyle} from "./style";
7 | import DropdownAlert from 'react-native-dropdownalert';
8 | import validator from 'validator';
9 |
10 |
11 | export default class LoginScreen extends Component {
12 |
13 | state = {
14 | username: "",
15 | password: ""
16 | };
17 |
18 | logger = new Logger('LoginScreen');
19 |
20 | componentWillMount() {
21 | this.logger.info("In componentWillMount. ");
22 |
23 | Auth.currentAuthenticatedUser()
24 | .then(user => {
25 | this.logger.info("Redirecting to activities");
26 | this.props.navigation.navigate('Secure');
27 | })
28 | .catch(err => {
29 | this.logger.info("Not logged in");
30 | });
31 | }
32 |
33 | login = async () => {
34 |
35 | if (validator.isEmpty(this.state.username) || !validator.isEmail(this.state.username)) {
36 | this.logger.info("Email validation error");
37 | this.dropdown.alertWithType('error', 'Error', "A valid email is required");
38 | return null;
39 | }
40 | if (validator.isEmpty(this.state.password) || this.state.password.length < 2) {
41 | this.logger.info("Password validation error");
42 | this.dropdown.alertWithType('error', 'Error', "A password is required");
43 | return null;
44 | }
45 |
46 | const {username, password} = this.state;
47 |
48 | Auth.signIn(username, password)
49 | .then(user => {
50 | this.setState({user});
51 |
52 | this.logger.info('successful sign in!');
53 | // this.logger.info('Auth: ', Auth);
54 |
55 | this.setState({
56 | loggingIn: false
57 | });
58 |
59 | this.props.navigation.navigate('Secure')
60 | })
61 | .catch(err => {
62 | this.logger.info('error signing in!: ', err);
63 | this.setState({
64 | loggingIn: false
65 | });
66 | if (err.code === "UserNotConfirmedException") {
67 | this.logger.info("The activity hasn't been confirmed yet. Sending over to the confirmation page");
68 |
69 | this.props.navigation.navigate('RegisterConfirm', {
70 | username: this.state.username,
71 | password: this.state.password,
72 | sendConfirmationCode: true
73 | });
74 | }
75 |
76 | this.dropdown.alertWithType('error', 'Error', err.message);
77 |
78 | })
79 | };
80 |
81 | render() {
82 | const {navigate} = this.props.navigation;
83 |
84 |
85 | return (
86 |
87 |
88 |
89 |
90 |
91 |
94 |
95 |
96 | {/**/}
99 |
100 |
101 |
102 |
103 |
104 | Please login
105 |
106 | -
107 | this.setState({username: text})}
109 | autoCapitalize="none"
110 | onSubmitEditing={() => this.passwordInput.focus()}
111 | autoCorrect={false}
112 | underlineColorAndroid='transparent'
113 | keyboardType='email-address'
114 | returnKeyType="next"
115 | placeholder='email'
116 | value={this.state.username}
117 | />
118 |
119 | -
120 | this.setState({password: text})}
124 | ref={(input) => this.passwordInput = input}
125 | secureTextEntry
126 | value={this.state.password}
127 | />
128 |
129 |
132 |
136 |
137 | this.dropdown = ref}/>
138 |
139 |
140 |
141 | );
142 | }
143 | }
144 |
--------------------------------------------------------------------------------
/screens/auth/RegisterConfirmScreen.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 | import {TextInput} from 'react-native';
3 | import {Button, Container, Content, Header, Icon, Item, Left, Right, Text} from 'native-base';
4 | import Auth from '@aws-amplify/auth';
5 | import {Logger} from '@aws-amplify/core';
6 | import {authStyle} from "./style";
7 | import DropdownAlert from 'react-native-dropdownalert';
8 | import validator from 'validator';
9 |
10 |
11 | export default class RegisterConfirmScreen extends Component {
12 |
13 | state = {
14 | username: "",
15 | password: ""
16 | };
17 |
18 | logger = new Logger('LoginScreen');
19 |
20 | componentWillMount() {
21 | this.logger.info("In componentWillMount. ");
22 | let loggedIn = false;
23 |
24 | Auth.currentAuthenticatedUser()
25 | .then(user => {
26 | this.logger.info("Redirecting to activities");
27 | this.props.navigation.navigate('Secure');
28 | })
29 | .catch(err => {
30 | this.logger.info("Not logged in");
31 | });
32 | }
33 |
34 |
35 | confirmSignUp() {
36 | const {username, confirmationCode} = this.state;
37 | this.logger.info("Confirming sign-up: " + this.props.navigation.state.params.username);
38 |
39 | if (validator.isEmpty(this.state.username) || !validator.isEmail(this.state.username)) {
40 | this.logger.info("Username validation error");
41 | this.dropdown.alertWithType('error', 'Error', "A valid email is required");
42 | return null;
43 | }
44 |
45 |
46 | if (validator.isEmpty(confirmationCode)) {
47 | this.logger.info("Confirmation code validation error");
48 | this.dropdown.alertWithType('error', 'Error', "A valid code is required");
49 | return null;
50 | }
51 |
52 | Auth.confirmSignUp(username, confirmationCode)
53 | .then(() => {
54 | this.logger.info('successful confirm sign up! Redirecting to SignIn');
55 |
56 | this.props.navigation.navigate('Login', {
57 | username: username,
58 | password: this.state.password
59 | })
60 | })
61 | .catch(err => {
62 | this.logger.info('error confirming signing up!: ', err);
63 | this.dropdown.alertWithType('error', 'Error', err.message);
64 | })
65 | }
66 |
67 | render() {
68 | const {navigate} = this.props.navigation;
69 |
70 |
71 | return (
72 |
73 |
74 |
75 |
78 |
79 |
80 | {/**/}
83 |
84 |
85 |
86 |
87 |
88 |
89 | Confirm your registration (code was emailed)
90 |
91 | -
92 | this.setState({username: text})}
94 | autoCapitalize="none"
95 | onSubmitEditing={() => this.confirmationCode.focus()}
96 | autoCorrect={false}
97 | underlineColorAndroid='transparent'
98 | keyboardType='email-address'
99 | returnKeyType="next"
100 | placeholder='email'
101 | value={this.state.username}
102 | />
103 |
104 | -
105 | this.setState({confirmationCode: text})}
108 | underlineColorAndroid='transparent'
109 | keyboardType='numeric'
110 | ref={(input) => this.confirmationCode = input}
111 | value={this.state.confirmationCode}
112 | />
113 |
114 |
115 |
119 |
120 |
121 | this.dropdown = ref}/>
122 |
123 | );
124 | }
125 | }
126 |
--------------------------------------------------------------------------------
/screens/auth/RegisterDOBScreen.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {Button, Container, Content, Header, Icon, Item, Left, Right, Text} from 'native-base';
3 | import {TextInput} from "react-native";
4 | import {authStyle} from "./style";
5 | import DropdownAlert from "react-native-dropdownalert";
6 |
7 | export default class RegisterUsernameScreen extends React.Component {
8 |
9 | constructor(props) {
10 | super(props);
11 | }
12 |
13 | register = async () => {
14 |
15 | };
16 |
17 | render() {
18 | const {navigate} = this.props.navigation;
19 |
20 | return (
21 |
22 |
23 |
24 |
27 |
28 |
29 | {/**/}
32 |
33 |
34 |
35 |
36 |
37 |
38 | What's your date of birth?
39 |
40 | -
41 | this.setState({dob: text})}
44 | ref={(input) => this.dob = input}
45 | value={this.state.dob}/>
46 |
47 |
51 |
52 |
53 | this.dropdown = ref}/>
54 |
55 | );
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/screens/auth/RegisterFirstNameScreen.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {Button, Container, Content, Header, Icon, Item, Left, Right, Text} from 'native-base';
3 | import {TextInput} from "react-native";
4 | import {authStyle} from "./style";
5 | import DropdownAlert from "react-native-dropdownalert";
6 |
7 | export default class RegisterUsernameScreen extends React.Component {
8 |
9 | constructor(props) {
10 | super(props);
11 | }
12 |
13 | render() {
14 | const {navigate} = this.props.navigation;
15 |
16 | return (
17 |
18 |
19 |
20 |
23 |
24 |
25 | {/**/}
28 |
29 |
30 |
31 |
32 |
33 |
34 | What's your first name?
35 |
36 | -
37 | this.setState({firstName: text})}
40 | ref={(input) => this.firstName = input}
41 | value={this.state.firstName}/>
42 |
43 |
51 |
52 |
53 | this.dropdown = ref}/>
54 |
55 | );
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/screens/auth/RegisterLastNameScreen.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {TextInput} from 'react-native';
3 | import {Button, Container, Content, Header, Icon, Item, Left, Right, Text} from 'native-base';
4 | import {authStyle} from "./style";
5 | import DropdownAlert from "react-native-dropdownalert";
6 |
7 | export default class RegisterUsernameScreen extends React.Component {
8 |
9 | constructor(props) {
10 | super(props);
11 | }
12 |
13 | render() {
14 | const {navigate} = this.props.navigation;
15 |
16 | return (
17 |
18 |
19 |
20 |
23 |
24 |
25 | {/**/}
28 |
29 |
30 |
31 |
32 |
33 |
34 | What's your last name?
35 |
36 | -
37 | this.setState({lastName: text})}
40 | ref={(input) => this.lastName = input}
41 | value={this.state.lastName}/>
42 |
43 |
44 |
53 |
54 |
55 |
56 | this.dropdown = ref}/>
57 |
58 | );
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/screens/auth/RegisterPasswordScreen.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {Button, Container, Content, Header, Icon, Item, Left, Right, Text} from 'native-base';
3 | import {TextInput} from "react-native";
4 | import DropdownAlert from 'react-native-dropdownalert';
5 | import validator from "validator";
6 | import {authStyle} from "./style";
7 | import Auth from '@aws-amplify/auth';
8 | import {Logger} from '@aws-amplify/core';
9 |
10 | export default class RegisterUsernameScreen extends React.Component {
11 | logger = new Logger('RegisterUsernameScreen');
12 |
13 | constructor(props) {
14 | super(props);
15 | this.state = {username: "", password: ""}
16 |
17 | }
18 |
19 | componentDidMount() {
20 | this.setState({
21 | "username":
22 | this.props.navigation.getParam('username')
23 | }
24 | )
25 | }
26 |
27 | signUp = (registrationParams) => {
28 | const {username, password} = this.state;
29 |
30 | if (validator.isEmpty(username) || !validator.isEmail(username)) {
31 | this.logger.info("Email validation error");
32 | this.dropdown.alertWithType('error', 'Error', "A valid email is required");
33 | return null;
34 | }
35 |
36 | if (validator.isEmpty(password) || username.length < 2) {
37 | this.setState({passwordErrorMessage: "The password is required"});
38 | this.logger.info("Password validation error");
39 | this.dropdown.alertWithType('error', 'Error', "A password is required");
40 | return null;
41 | }
42 |
43 | this.setState({signingUp: true});
44 |
45 | Auth.signUp({
46 | username,
47 | password,
48 | attributes: {
49 | email: username
50 | }
51 | })
52 | .then(() => {
53 | this.logger.info('successful sign up!');
54 | this.setState({signingUp: false});
55 | this.props.navigation.navigate('RegisterConfirm', registrationParams)
56 | })
57 | .catch(err => {
58 | this.logger.info('error signing up!: ', err);
59 | this.dropdown.alertWithType('error', 'Error', err.message);
60 | this.setState({signingUp: false});
61 | })
62 | };
63 |
64 | render() {
65 | const {navigate} = this.props.navigation;
66 |
67 | return (
68 |
69 |
70 |
71 |
74 |
75 |
76 | {/**/}
79 |
80 |
81 |
82 |
83 |
84 |
85 | What's your password?
86 |
87 | -
88 | this.setState({password: text})}
92 | ref={(input) => this.passwordInput = input}
93 | secureTextEntry
94 | value={this.state.password}
95 | />
96 |
97 |
104 |
105 |
106 | this.dropdown = ref}/>
107 |
108 | );
109 | }
110 | }
111 |
--------------------------------------------------------------------------------
/screens/auth/RegisterUsernameScreen.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {Button, Container, Content, Header, Icon, Item, Left, Right, Text} from 'native-base';
3 | import {TextInput} from "react-native";
4 | import validator from 'validator';
5 | import DropdownAlert from 'react-native-dropdownalert';
6 | import {Logger} from '@aws-amplify/core';
7 | import {authStyle} from "./style";
8 |
9 | export default class RegisterUsernameScreen extends React.Component {
10 | logger = new Logger('RegisterUsernameScreen');
11 |
12 | constructor(props) {
13 | super(props);
14 |
15 | this.state = {username: ""}
16 | }
17 |
18 | next = (navParams) => {
19 | if (validator.isEmpty(this.state.username) || !validator.isEmail(this.state.username)) {
20 | this.logger.info("Email validation error");
21 | this.dropdown.alertWithType('error', 'Error', "A valid email is required");
22 | return null;
23 | }
24 |
25 | this.props.navigation.navigate('RegisterPassword', navParams);
26 | };
27 |
28 | render() {
29 | const {navigate} = this.props.navigation;
30 |
31 | return (
32 |
33 |
34 |
35 |
38 |
39 |
40 | {/**/}
43 |
44 |
45 |
46 |
47 |
48 |
49 | What's your email?
50 |
51 | -
52 | this.setState({username: text})}
55 | ref={(input) => this.username = input}
56 | value={this.state.username}/>
57 |
58 |
62 |
63 |
64 | this.dropdown = ref}/>
65 |
66 | );
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/screens/auth/style.js:
--------------------------------------------------------------------------------
1 | import {StyleSheet} from "react-native";
2 |
3 | export const authStyle = StyleSheet.create({
4 | textInput: {
5 | flex: .9, height: 50, minHeight: 50
6 | },
7 | landingPageLoginButton: {
8 | height: 80,
9 | backgroundColor: '#ff9604'
10 | },
11 | landingPageCreateAccountButton: {
12 | height: 80,
13 | backgroundColor: '#ffcc88'
14 | }
15 | });
16 |
--------------------------------------------------------------------------------
/screens/secure/chat/ChatHomeScreen.js:
--------------------------------------------------------------------------------
1 | import {Body, Button, Container, Content, Header, Icon, Left, Right, Text, Title} from "native-base";
2 |
3 | import React from 'react';
4 | import {Logger} from "@aws-amplify/core";
5 | // import {API, Auth, graphqlOperation, Logger} from "@aws-amplify/core";
6 | // import {SettingsService} from "../settings/services/settings-service";
7 |
8 | export class ChatHomeScreen extends React.Component {
9 |
10 | logger = new Logger('Chat');
11 |
12 | constructor(props) {
13 | super(props);
14 | }
15 |
16 | render() {
17 | this.logger.info("Enter render(). username: ", this.myself);
18 | const {navigate} = this.props.navigation;
19 | return (
20 |
21 |
22 |
23 |
24 |
25 |
26 | Conversation List
27 |
28 |
29 |
30 |
31 |
35 |
36 |
37 | )
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/screens/secure/chat/ChatNavigation.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {Platform} from 'react-native';
3 | import {createStackNavigator} from 'react-navigation';
4 |
5 | import {ChatRoomScreen} from "./ChatRoomScreen";
6 | import TabBarIcon from '../../../components/TabBarIcon';
7 | import {ChatHomeScreen} from "./ChatHomeScreen";
8 |
9 | export const ChatStackNavigator = createStackNavigator({
10 | ChatRoom: ChatRoomScreen,
11 | ChatHome: ChatHomeScreen,
12 | },
13 | {
14 | headerMode: 'none',
15 | initialRouteName: 'ChatHome',
16 | initialRouteKey: 'ChatHome'
17 | });
18 | ChatStackNavigator.navigationOptions = {
19 | tabBarIcon: ({focused}) => (
20 |
28 | ), header: null,
29 | };
30 |
31 |
--------------------------------------------------------------------------------
/screens/secure/chat/ChatRoomScreen.js:
--------------------------------------------------------------------------------
1 | import {GiftedChat} from 'react-native-gifted-chat'
2 | import {Body, Button, Container, Header, Left, Text, Right, Title} from "native-base";
3 |
4 | import React from 'react';
5 | import {Logger} from "@aws-amplify/core";
6 | // import {API, Auth, graphqlOperation, Logger} from "@aws-amplify/core";
7 | import ListEventMessages from './graphql/ListEventMessages';
8 | import SubscribeToEventComments from "./graphql/CreateEventMessageSubscription";
9 |
10 | // import {SettingsService} from "../settings/services/settings-service";
11 |
12 | export class ChatRoomScreen extends React.Component {
13 |
14 | logger = new Logger('Chat');
15 |
16 | myself = {userId: "ID", name: "Vova"};
17 |
18 | state = {
19 | messages: []
20 | };
21 |
22 | // settingsService = new SettingsService();
23 |
24 | constructor(props) {
25 | super(props);
26 |
27 | // const subscription = API.graphql(
28 | // graphqlOperation(SubscribeToEventComments, {eventId: "111"})
29 | // ).subscribe({
30 | // next: (eventData) => {
31 | // this.newCommentSubscriptionTrigger(eventData)
32 | // }
33 | // });
34 | //
35 | // // Set the eventId and subscription and load the comments
36 | // this.setState({
37 | // eventId: "111",
38 | // subscription: subscription
39 | // }, this.getComments)
40 |
41 | }
42 |
43 |
44 | async componentWillMount() {
45 | // this.getSub(this.setEventIdAndOther());
46 | // this.myself = await this.settingsService.getMyself();
47 | }
48 |
49 | /**
50 | * Subscribes to an event with the activityId.
51 | */
52 | setEventIdAndOther() {
53 |
54 | const subscription = API.graphql(
55 | graphqlOperation(SubscribeToEventComments, {eventId: this.props.navigation.state.params.activityId})
56 | ).subscribe({
57 | next: (eventData) => {
58 | this.newCommentSubscriptionTrigger(eventData)
59 | }
60 | });
61 |
62 | // Set the eventId and subscription and load the comments
63 | this.setState({
64 | eventId: this.props.navigation.state.params.activityId,
65 | subscription: subscription
66 | }, this.getComments)
67 | }
68 |
69 | /**
70 | * This method executes when a new comment is received through a subscription
71 | *
72 | * @param eventData
73 | * @returns {Promise}
74 | */
75 | async newCommentSubscriptionTrigger(eventData) {
76 | this.logger.debug("newCommentSubscriptionTrigger");
77 |
78 | if (this.state.userId === eventData.value.data.onCreateEventMessage.user.userId) {
79 | this.logger.info(this.state.username + " intercepted my own messages: " + eventData.value.data.onCreateEventMessage.text);
80 | return;
81 | }
82 | this.logger.debug("new message", eventData.value.data.onCreateEventMessage);
83 | let messages = this.state.messages;
84 | messages.unshift(this.transformOneEventMessageToGiftedChatFormat(eventData.value.data.onCreateEventMessage));
85 | // this.logger.info("messages after push", messages);
86 | this.setState({messages: [...this.state.messages]})
87 | }
88 |
89 | async getSub(callback) {
90 | let authUser = await Auth.currentAuthenticatedUser();
91 |
92 | this.setState({
93 | username: authUser.username,
94 | userId: authUser.signInUserSession.idToken.payload.sub
95 | }, callback);
96 | // this.logger.info("authUser", authUser);
97 |
98 | // return await Auth.currentSession().getIdToken().getJwtToken().sub()
99 | }
100 |
101 | componentWillUnmount() {
102 | this.logger.info("in componentWillUnmount");
103 | // Stop receiving data updates from the subscription
104 | // if (this.state.subscription != null)
105 | // this.state.subscription.unsubscribe();
106 | //todo: Figure this exception out -- WebSocketModule.clos got 1 arguments, expected 3
107 |
108 | }
109 |
110 | /**
111 | * Retrieve the comments from the DB using AppSync
112 | *
113 | * @returns {Promise}
114 | */
115 | async getComments() {
116 | console.log("Calling graphql for eventId of " + this.state.eventId);
117 |
118 | let results = await API.graphql(graphqlOperation(ListEventMessages, {
119 | eventId: this.state.eventId,
120 | first: 0,
121 | after: null
122 | }));
123 |
124 | // console.log("result", results);
125 |
126 | this.setState({
127 | messages: this.transformEventMessagesToGiftedChatFormat(results.data.listEventMessages.items),
128 | })
129 | }
130 |
131 | /**
132 | * Loop through the messages and reformat them into the GiftedChat-compatible format
133 | *
134 | * @param eventMessages
135 | * @returns {Array}
136 | */
137 | transformEventMessagesToGiftedChatFormat(eventMessages) {
138 | // console.log("Transforming messages", eventMessages);
139 |
140 | const messages = [];
141 |
142 | if (eventMessages == null)
143 | return [];
144 |
145 | eventMessages.map((item) => {
146 | let transformedMessage = this.transformOneEventMessageToGiftedChatFormat(item);
147 | this.logger.debug("Transformed message: ", transformedMessage);
148 | messages.push(transformedMessage);
149 | });
150 |
151 | return messages;
152 | }
153 |
154 | /**
155 | * Reformat one message retrieved from the DB into the GiftedChat format
156 | *
157 | * @param item
158 | * @returns {{_id: *, text: *, createdAt: *, user: {_id: string, name: string, avatar: string}}}
159 | */
160 | transformOneEventMessageToGiftedChatFormat(item) {
161 | this.logger.debug("Transforming message", item);
162 |
163 | return {
164 | _id: item.messageId,
165 | text: item.message,
166 | createdAt: item.createdDate,
167 | user: {
168 | _id: item.user.userId,
169 | name: (item.user.name) ? item.user.name : item.user.email,
170 | avatar: (item.user.profileImage) ? item.user.profileImage : "https://thumbs.dreamstime.com/b/" +
171 | "hipster-beard-avatar-glasses-isolated-white-vector-flat-design-illustration-51006103.jpg",
172 | }
173 | }
174 | }
175 |
176 | /**
177 | * Called when the user adds a comment. Send the comment to the backend using Appsync
178 | *
179 | * @param messages
180 | * @returns {Promise}
181 | */
182 | async onSend(messages = []) {
183 |
184 | // Append the message to the list for immediate feedback
185 | this.setState(previousState => ({
186 | messages: GiftedChat.append(previousState.messages, messages),
187 | }));
188 |
189 | // Save the message using AppSync
190 | // await API.graphql(graphqlOperation(CreateEventMessage, {
191 | // eventId: this.state.eventId,
192 | // message: messages[messages.length - 1].text
193 | // }));
194 | }
195 |
196 |
197 | render() {
198 | this.logger.info("Enter render(). username: ", this.myself);
199 |
200 | return (
201 |
202 |
203 |
204 |
205 |
206 |
207 | Chat
208 |
209 |
210 |
214 |
215 |
216 |
217 | this.onSend(messages)}
220 | user={{
221 | _id: this.myself.userId,
222 | name: this.myself.name,
223 | avatar: (this.myself.profileImage) ? this.myself.profileImage : "https://thumbs.dreamstime.com/b/" +
224 | "hipster-beard-avatar-glasses-isolated-white-vector-flat-design-illustration-51006103.jpg",
225 | }}
226 | />
227 |
228 |
229 | )
230 | }
231 | }
232 |
--------------------------------------------------------------------------------
/screens/secure/chat/graphql/CreateEventMessageMeta.vtl:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2017-02-28",
3 | "operation": "PutItem",
4 | "key": {
5 | "eventId": $util.dynamodb.toDynamoDBJson($ctx.args.input.eventId),
6 | "sortKey": $util.dynamodb.toDynamoDBJson("message_$util.time.nowISO8601()_$util.autoId()"),
7 | },
8 | "attributeValues": {
9 | "message": $util.dynamodb.toDynamoDBJson($ctx.args.input.message),
10 | "createdDate": $util.dynamodb.toDynamoDBJson($util.time.nowISO8601()),
11 | "userId": $util.dynamodb.toDynamoDBJson(${context.identity.sub})
12 | }
13 | }
14 |
15 | $util.toJson($context.result)
16 |
--------------------------------------------------------------------------------
/screens/secure/chat/graphql/CreateEventMessageMutation.js:
--------------------------------------------------------------------------------
1 | export default `
2 |
3 | mutation CreateEventMessage(
4 | $eventId: String!, $message: String!
5 | ){
6 | createEventMessage(input: {eventId: $eventId, message: $message}){
7 | __typename
8 | eventId
9 | messageId
10 | message
11 | createdDate
12 | user {
13 | userId
14 | email
15 | name
16 | }
17 | }
18 | }`;
19 |
--------------------------------------------------------------------------------
/screens/secure/chat/graphql/CreateEventMessageSubscription.js:
--------------------------------------------------------------------------------
1 | export default `subscription SubscribeToEventComments($eventId: String!) {
2 | onCreateEventMessage(eventId: $eventId) {
3 | eventId
4 | messageId
5 | message
6 | userId
7 | createdDate
8 | }
9 | }`;
--------------------------------------------------------------------------------
/screens/secure/chat/graphql/ListEventMessages.js:
--------------------------------------------------------------------------------
1 | export default `
2 | query ListEventMessages(
3 | $eventId: String!,
4 | $first: Int,
5 | $after: String
6 | ) {
7 | listEventMessages(
8 | eventId: $eventId,
9 | first: $first,
10 | after: $after
11 | ){
12 | items{
13 | __typename
14 | eventId
15 | messageId
16 | message
17 | createdDate
18 | user {
19 | userId
20 | email
21 | name
22 | profileImage
23 | }
24 | },
25 | nextToken
26 | }
27 | }`;
28 |
--------------------------------------------------------------------------------
/screens/secure/chat/graphql/ListEventMessages.vtl:
--------------------------------------------------------------------------------
1 | {
2 | "version" : "2017-02-28",
3 | "operation" : "Query",
4 | "scanIndexForward": false,
5 | "query" : {
6 | ## Provide a query expression. **
7 | "expression": "eventId = :id and sortKey begins_with(:messageId)",
8 | "expressionValues" : {
9 | ":id" : {
10 | "S" : "${ctx.args.eventId}"
11 | },
12 | ":messageId" : {
13 | "S" : "message_"
14 | }
15 | }
16 | },
17 | ## Add 'limit' and 'nextToken' arguments to this field in your schema to implement pagination. **
18 | "limit": $util.defaultIfNull(${ctx.args.limit}, 20),
19 | "nextToken": $util.toJson($util.defaultIfNullOrBlank($ctx.args.nextToken, null))
20 | }
21 |
22 |
23 | $util.toJson($context.result)
24 |
--------------------------------------------------------------------------------
/screens/secure/home/HomeScreen.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {Platform, StyleSheet, Text} from 'react-native';
3 | import {Container, Content, Left, Body, Title, Right , Button, Icon, Header} from "native-base";
4 | import {mainStyle} from "../../../common/style";
5 |
6 | export default class HomeScreen extends React.Component {
7 | static navigationOptions = {
8 | header: null,
9 | };
10 |
11 | state = {
12 | recommendations: [{
13 | name: "Basketball",
14 | organizer: "Friends",
15 | location: "Philadelphia, PA",
16 | time: "12:00PM",
17 | date: "Today"
18 | },
19 | {name: "Basketball", organizer: "Friends", location: "Philadelphia, PA", time: "12:00PM", date: "Today"},
20 | {name: "Basketball", organizer: "Friends", location: "Philadelphia, PA", time: "12:00PM", date: "Today"},
21 | {name: "Basketball", organizer: "Friends", location: "Philadelphia, PA", time: "12:00PM", date: "Today"}],
22 | highDemand: [],
23 | groupsYouIn: [],
24 | selectedPickerValue: "All Sports"
25 | };
26 |
27 | onValueChange(value) {
28 | this.setState({
29 | selectedPickerValue: value
30 | });
31 | }
32 |
33 |
34 | render() {
35 | return (
36 |
37 |
38 |
39 |
40 |
41 |
42 | Home
43 |
44 |
45 |
46 |
47 | );
48 | }
49 |
50 | }
51 |
52 | const styles = StyleSheet.create({
53 | container: {
54 | flex: 1,
55 | backgroundColor: '#fff',
56 | },
57 | developmentModeText: {
58 | marginBottom: 20,
59 | color: 'rgba(0,0,0,0.4)',
60 | fontSize: 14,
61 | lineHeight: 19,
62 | textAlign: 'center',
63 | },
64 | contentContainer: {
65 | paddingTop: 30,
66 | },
67 | welcomeContainer: {
68 | alignItems: 'center',
69 | marginTop: 10,
70 | marginBottom: 20,
71 | },
72 | welcomeImage: {
73 | width: 100,
74 | height: 80,
75 | resizeMode: 'contain',
76 | marginTop: 3,
77 | marginLeft: -10,
78 | },
79 | getStartedContainer: {
80 | alignItems: 'center',
81 | marginHorizontal: 50,
82 | },
83 | homeScreenFilename: {
84 | marginVertical: 7,
85 | },
86 | codeHighlightText: {
87 | color: 'rgba(96,100,109, 0.8)',
88 | },
89 | codeHighlightContainer: {
90 | backgroundColor: 'rgba(0,0,0,0.05)',
91 | borderRadius: 3,
92 | paddingHorizontal: 4,
93 | },
94 | getStartedText: {
95 | fontSize: 17,
96 | color: 'rgba(96,100,109, 1)',
97 | lineHeight: 24,
98 | textAlign: 'center',
99 | },
100 | tabBarInfoContainer: {
101 | position: 'absolute',
102 | bottom: 0,
103 | left: 0,
104 | right: 0,
105 | ...Platform.select({
106 | ios: {
107 | shadowColor: 'black',
108 | shadowOffset: {height: -3},
109 | shadowOpacity: 0.1,
110 | shadowRadius: 3,
111 | },
112 | android: {
113 | elevation: 20,
114 | },
115 | }),
116 | alignItems: 'center',
117 | backgroundColor: '#fbfbfb',
118 | paddingVertical: 20,
119 | },
120 | tabBarInfoText: {
121 | fontSize: 17,
122 | color: 'rgba(96,100,109, 1)',
123 | textAlign: 'center',
124 | },
125 | navigationFilename: {
126 | marginTop: 5,
127 | },
128 | helpContainer: {
129 | marginTop: 15,
130 | alignItems: 'center',
131 | },
132 | helpLink: {
133 | paddingVertical: 15,
134 | },
135 | helpLinkText: {
136 | fontSize: 14,
137 | color: '#2e78b7',
138 | },
139 | });
140 |
--------------------------------------------------------------------------------
/screens/secure/settings/SettingsScreen.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {KeyboardAvoidingView, StyleSheet, Text} from 'react-native';
3 | import {Body, Button, Container, Content, Header, Icon, Left, ListItem, Right, Title} from "native-base";
4 |
5 | import Auth from '@aws-amplify/auth';
6 | import {Logger} from '@aws-amplify/core';
7 |
8 | const styles = StyleSheet.create({
9 | scroll: {
10 | backgroundColor: 'white',
11 | },
12 | userRow: {
13 | alignItems: 'center',
14 | flexDirection: 'row',
15 | paddingBottom: 6,
16 | paddingLeft: 15,
17 | paddingRight: 15,
18 | paddingTop: 6,
19 | },
20 | userImage: {
21 | marginRight: 12,
22 | },
23 | listContainer: {
24 | marginBottom: 0,
25 | marginTop: 0,
26 | borderTopWidth: 0,
27 | },
28 | listItemContainer: {
29 | borderBottomColor: '#ECECEC',
30 | },
31 | });
32 |
33 | export default class SettingsScreen extends React.Component {
34 | static navigationOptions = {
35 | header: null,
36 | };
37 |
38 | state = {
39 | user: {
40 | pushNotifications: true,
41 | name: "Vladimir Budilov",
42 | email: "vladimir@budilov.com",
43 | location: "Philadelphia, PA"
44 | },
45 | notifications: false
46 | };
47 |
48 | logger = new Logger('Settings');
49 |
50 | onLogOut = () => {
51 | Auth.signOut()
52 | .then(data => {
53 | console.log("Logged out successfully. Redirecting to SignIn. ");
54 | this.props.navigation.navigate('Login');
55 | })
56 | .catch(err => console.log(err));
57 | };
58 |
59 |
60 | render() {
61 | // const { avatar, name, emails: [firstEmail] } = this.props
62 | return (
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 | Settings
72 |
73 |
74 |
75 |
76 |
77 | this.onLogOut()}>
78 |
79 |
83 |
84 |
85 | Logout
86 |
87 |
88 | On
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 | )
97 | }
98 | }
99 |
100 |
101 |
--------------------------------------------------------------------------------