├── .babelrc ├── .buckconfig ├── .eslintrc ├── .flowconfig ├── .gitattributes ├── .gitignore ├── .watchmanconfig ├── README.md ├── __mocks__ ├── react-native-i18n.js └── react-native.js ├── __tests__ ├── index.android.js └── index.ios.js ├── android ├── app │ ├── BUCK │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ └── fonts │ │ │ ├── Entypo.ttf │ │ │ ├── EvilIcons.ttf │ │ │ ├── FontAwesome.ttf │ │ │ ├── Foundation.ttf │ │ │ ├── Ionicons.ttf │ │ │ ├── MaterialCommunityIcons.ttf │ │ │ ├── MaterialIcons.ttf │ │ │ ├── Octicons.ttf │ │ │ ├── SimpleLineIcons.ttf │ │ │ ├── Zocial.ttf │ │ │ ├── customIcons.ttf │ │ │ └── notetaker.ttf │ │ ├── java │ │ └── com │ │ │ └── notetaker │ │ │ ├── MainActivity.java │ │ │ ├── MainApplication.java │ │ │ └── device │ │ │ ├── DeviceModule.java │ │ │ └── DevicePackage.java │ │ └── res │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.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 ├── app ├── App.container.js ├── assets │ ├── .gitkeep │ └── selection.json ├── components │ ├── About │ │ ├── AboutApp.component.js │ │ ├── AboutApp.styles.js │ │ ├── AboutDevs.component.js │ │ └── AboutDevs.styles.js │ ├── Home │ │ ├── Home.component.js │ │ └── Home.component.style.js │ ├── List │ │ ├── List.component.js │ │ ├── List.styles.js │ │ └── __tests__ │ │ │ ├── List.component.test.js │ │ │ └── __snapshots__ │ │ │ └── List.component.test.js.snap │ ├── Notes │ │ ├── Notes.component.js │ │ └── Notes.style.js │ └── TextArea │ │ ├── TextArea.component.android.js │ │ ├── TextArea.component.js │ │ └── TextArea.component.style.js ├── config │ ├── .gitkeep │ ├── env.config.js │ ├── environment │ │ └── production.env.js │ ├── language │ │ ├── en.js │ │ └── hi.js │ └── routes.config.js ├── index.js ├── pages │ └── Home.page.js ├── redux │ ├── actions │ │ └── index.actions.js │ ├── reducers │ │ ├── content.reducer.js │ │ ├── notes.reducer.js │ │ ├── root.reducer.js │ │ ├── test.reducer.js │ │ └── userPreferences.reducer.js │ ├── store.js │ └── thunks │ │ └── index.thunks.js ├── routes │ ├── .gitkeep │ ├── __mocks__ │ │ └── index.js │ ├── about.routes.js │ └── index.js ├── styles │ ├── .gitkeep │ ├── common.style.js │ └── theme.style.js └── utils │ ├── .gitkeep │ └── language.utils.js ├── final.png ├── index.android.js ├── index.ios.js ├── ios ├── NoteTaker-tvOS │ └── Info.plist ├── NoteTaker-tvOSTests │ └── Info.plist ├── NoteTaker.xcodeproj │ ├── project.pbxproj │ └── xcshareddata │ │ └── xcschemes │ │ ├── NoteTaker-tvOS.xcscheme │ │ └── NoteTaker.xcscheme ├── NoteTaker │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ └── LaunchScreen.xib │ ├── Device │ │ ├── Device.h │ │ └── Device.m │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Info.plist │ └── main.m ├── NoteTakerTests │ ├── Info.plist │ └── NoteTakerTests.m └── customIcons.ttf ├── package.json ├── resources └── fonts │ └── notetaker.ttf ├── scripts ├── android │ └── builder.sh └── ios │ ├── builder.sh │ └── keychain.sh └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react-native"] 3 | } 4 | -------------------------------------------------------------------------------- /.buckconfig: -------------------------------------------------------------------------------- 1 | 2 | [android] 3 | target = Google Inc.:Google APIs:23 4 | 5 | [maven_repositories] 6 | central = https://repo1.maven.org/maven2 7 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | # "off" or 0 - turn the rule off 2 | # "warn" or 1 - turn the rule on as a warning(doesn’ t affect exit code) 3 | # "error" or 2 - turn the rule on as an error(exit code is 1 when triggered) 4 | { 5 | "parser": "babel-eslint", 6 | "env": { 7 | "browser": true 8 | }, 9 | "plugins": [ 10 | "react", 11 | "react-native" 12 | ], 13 | "ecmaFeatures": { 14 | "jsx": true 15 | }, 16 | "extends": ["eslint:recommended", "plugin:react/recommended"], 17 | "rules": { 18 | "react-native/split-platform-components": 2, 19 | "react/no-did-mount-set-state": 2, 20 | "react/no-did-update-set-state": 2, 21 | "react/no-direct-mutation-state": 2, 22 | "react/jsx-uses-vars": 2, 23 | "no-unused-vars": ["error", { 24 | "varsIgnorePattern": "React" 25 | }], 26 | "comma-spacing": ["error", { 27 | "before": false, 28 | "after": true }], 29 | "no-undef": 2, 30 | "semi": 2, 31 | "react/prop-types": 2, 32 | "react/jsx-no-bind": 2, 33 | "react/jsx-no-duplicate-props": 2, 34 | "space-before-blocks": 2, 35 | "space-before-function-paren": 2, 36 | "space-in-parens": 2, 37 | "space-infix-ops": 2, 38 | "space-unary-ops": 2, 39 | "spaced-comment": 2, 40 | "rest-spread-spacing": 2, 41 | "semi-spacing": 2, 42 | "no-unneeded-ternary": 2, 43 | "eqeqeq": 2, 44 | "dot-location": 2, 45 | "no-extra-bind": 2, 46 | "keyword-spacing": 2, 47 | "key-spacing": 2, 48 | "indent": ["error", 2], 49 | "react/jsx-indent": [2, 2], 50 | "func-call-spacing": 2, 51 | "array-bracket-spacing": 2, 52 | "block-spacing": 2, 53 | "brace-style": 2, 54 | "arrow-body-style": 2, 55 | "arrow-parens": 2, 56 | "arrow-spacing": 2, 57 | "react/self-closing-comp": 2, 58 | "jsx-quotes": ["error", "prefer-single"], 59 | "object-curly-spacing": 2, 60 | "quotes": ["error", "single"], 61 | "no-console": 2 62 | }, 63 | "globals": { 64 | "GLOBAL": false, 65 | "global": false, 66 | "it": false, 67 | "xit": false, 68 | "expect": false, 69 | "describe": false, 70 | "jest": false, 71 | "require": false, 72 | "module": false, 73 | "Promise": false, 74 | "beforeAll": false, 75 | "beforeEach": true 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | ; We fork some components by platform 3 | .*/*[.]android.js 4 | 5 | ; Ignore "BUCK" generated dirs 6 | /\.buckd/ 7 | 8 | ; Ignore unexpected extra "@providesModule" 9 | .*/node_modules/.*/node_modules/fbjs/.* 10 | 11 | ; Ignore duplicate module providers 12 | ; For RN Apps installed via npm, "Libraries" folder is inside 13 | ; "node_modules/react-native" but in the source repo it is in the root 14 | .*/Libraries/react-native/React.js 15 | .*/Libraries/react-native/ReactNative.js 16 | 17 | [include] 18 | 19 | [libs] 20 | node_modules/react-native/Libraries/react-native/react-native-interface.js 21 | node_modules/react-native/flow 22 | flow/ 23 | 24 | [options] 25 | emoji=true 26 | 27 | module.system=haste 28 | 29 | munge_underscores=true 30 | 31 | module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub' 32 | 33 | suppress_type=$FlowIssue 34 | suppress_type=$FlowFixMe 35 | suppress_type=$FixMe 36 | 37 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(4[0-9]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) 38 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(4[0-9]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ 39 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy 40 | suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError 41 | 42 | unsafe.enable_getters_and_setters=true 43 | 44 | [version] 45 | ^0.49.1 46 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text 2 | -------------------------------------------------------------------------------- /.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://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md 50 | 51 | fastlane/report.xml 52 | fastlane/Preview.html 53 | fastlane/screenshots 54 | 55 | # jest 56 | cache 57 | coverage 58 | -------------------------------------------------------------------------------- /.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Note Taker App 2 | 3 | This repo contains the code for all the chapters of the book [React Made Native Easy](https://www.reactnative.guide). 4 | 5 | This is an example app creating using concepts learnt from the book. 6 | It is a simple note taking application that runs on both android and ios. 7 | 8 | 9 | ![Final App](./final.png) 10 | 11 | ## Running the application 12 | 13 | ### Make sure that you have 14 | 15 | - Latest android studio and SDK setup 16 | - Android simulator running in the background 17 | - XCode 9+ (If you have a mac) 18 | - Yarn 19 | - watchman 20 | - react-native-cli 21 | - Node V8+ 22 | - An IDE (preferrably Atom) 23 | 24 | To install all of the above, 25 | - Go to https://facebook.github.io/react-native/docs/getting-started.html 26 | - Click on **Building Projects with Native Code** 27 | - Follow the steps to install depencies 28 | 29 | After the setup is done, 30 | - `yarn`: To install node_modules 31 | - `yarn ios`: To start iOS app. 32 | - `yarn android`: To start Android app(Make sure that you have a device/emulator connected). 33 | -------------------------------------------------------------------------------- /__mocks__/react-native-i18n.js: -------------------------------------------------------------------------------- 1 | import i18n from 'i18n-js'; 2 | 3 | export default i18n; 4 | 5 | export const getLanguages = jest.mock(); 6 | -------------------------------------------------------------------------------- /__mocks__/react-native.js: -------------------------------------------------------------------------------- 1 | var rn = require('react-native'); 2 | rn.NativeModules.BlobModule = {BLOB_URI_SCHEME: ''}; 3 | global.window = global; 4 | rn.NativeModules.Device = { 5 | getDeviceName: () => {} 6 | }; 7 | module.exports = rn; 8 | -------------------------------------------------------------------------------- /__tests__/index.android.js: -------------------------------------------------------------------------------- 1 | import 'react-native'; 2 | import React from 'react'; 3 | import Index from '../index.android.js'; 4 | 5 | // Note: test renderer must be required after react-native. 6 | import renderer from 'react-test-renderer'; 7 | 8 | it('renders correctly', () => { 9 | renderer.create( 10 | 11 | ); 12 | }); 13 | -------------------------------------------------------------------------------- /__tests__/index.ios.js: -------------------------------------------------------------------------------- 1 | import 'react-native'; 2 | import React from 'react'; 3 | import Index from '../index.ios.js'; 4 | 5 | // Note: test renderer must be required after react-native. 6 | import renderer from 'react-test-renderer'; 7 | 8 | it('renders correctly', () => { 9 | renderer.create( 10 | 11 | ); 12 | }); 13 | -------------------------------------------------------------------------------- /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 | lib_deps = [] 12 | 13 | for jarfile in glob(['libs/*.jar']): 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 | 21 | for aarfile in glob(['libs/*.aar']): 22 | name = 'aars__' + aarfile[aarfile.rindex('/') + 1: aarfile.rindex('.aar')] 23 | lib_deps.append(':' + name) 24 | android_prebuilt_aar( 25 | name = name, 26 | aar = aarfile, 27 | ) 28 | 29 | android_library( 30 | name = "all-libs", 31 | exported_deps = lib_deps, 32 | ) 33 | 34 | android_library( 35 | name = "app-code", 36 | srcs = glob([ 37 | "src/main/java/**/*.java", 38 | ]), 39 | deps = [ 40 | ":all-libs", 41 | ":build_config", 42 | ":res", 43 | ], 44 | ) 45 | 46 | android_build_config( 47 | name = "build_config", 48 | package = "com.notetaker", 49 | ) 50 | 51 | android_resource( 52 | name = "res", 53 | package = "com.notetaker", 54 | res = "src/main/res", 55 | ) 56 | 57 | android_binary( 58 | name = "app", 59 | keystore = "//android/keystores:debug", 60 | manifest = "src/main/AndroidManifest.xml", 61 | package_type = "debug", 62 | deps = [ 63 | ":app-code", 64 | ], 65 | ) 66 | -------------------------------------------------------------------------------- /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 | apply from: "../../node_modules/react-native/react.gradle" 76 | 77 | /** 78 | * Set this to true to create two separate APKs instead of one: 79 | * - An APK that only works on ARM devices 80 | * - An APK that only works on x86 devices 81 | * The advantage is the size of the APK is reduced by about 4MB. 82 | * Upload all the APKs to the Play Store and people will download 83 | * the correct one based on the CPU architecture of their device. 84 | */ 85 | def enableSeparateBuildPerCPUArchitecture = false 86 | 87 | /** 88 | * Run Proguard to shrink the Java bytecode in release builds. 89 | */ 90 | def enableProguardInReleaseBuilds = false 91 | def appID = System.getenv("ANDROID_APP_ID") ?: "com.notetaker" 92 | def vCode = System.getenv("BUILD_NUMBER") ?: "0" 93 | def vName = System.getenv("BUILD_NAME") ?: "1.0.local" 94 | 95 | android { 96 | compileSdkVersion 23 97 | buildToolsVersion "23.0.1" 98 | 99 | defaultConfig { 100 | applicationId appID 101 | minSdkVersion 16 102 | targetSdkVersion 22 103 | versionCode Integer.parseInt(vCode) 104 | versionName vName 105 | ndk { 106 | abiFilters "armeabi-v7a", "x86" 107 | } 108 | } 109 | splits { 110 | abi { 111 | reset() 112 | enable enableSeparateBuildPerCPUArchitecture 113 | universalApk false // If true, also generate a universal APK 114 | include "armeabi-v7a", "x86" 115 | } 116 | } 117 | signingConfigs { 118 | release { 119 | if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) { 120 | storeFile file(MYAPP_RELEASE_STORE_FILE) 121 | storePassword MYAPP_RELEASE_STORE_PASSWORD 122 | keyAlias MYAPP_RELEASE_KEY_ALIAS 123 | keyPassword MYAPP_RELEASE_KEY_PASSWORD 124 | } 125 | } 126 | } 127 | buildTypes { 128 | release { 129 | minifyEnabled enableProguardInReleaseBuilds 130 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" 131 | signingConfig signingConfigs.release 132 | } 133 | } 134 | // applicationVariants are e.g. debug, release 135 | applicationVariants.all { variant -> 136 | variant.outputs.each { output -> 137 | // For each separate APK per architecture, set a unique version code as described here: 138 | // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits 139 | def versionCodes = ["armeabi-v7a":1, "x86":2] 140 | def abi = output.getFilter(OutputFile.ABI) 141 | if (abi != null) { // null for the universal-debug, universal-release variants 142 | output.versionCodeOverride = 143 | versionCodes.get(abi) * 1048576 + defaultConfig.versionCode 144 | } 145 | } 146 | } 147 | } 148 | 149 | dependencies { 150 | compile project(':react-native-i18n') 151 | compile project(':react-native-vector-icons') 152 | compile fileTree(dir: "libs", include: ["*.jar"]) 153 | compile "com.android.support:appcompat-v7:23.0.1" 154 | compile "com.facebook.react:react-native:+" // From node_modules 155 | } 156 | 157 | // Run this once to be able to run the application with BUCK 158 | // puts all compile dependencies into folder libs for BUCK to use 159 | task copyDownloadableDepsToLibs(type: Copy) { 160 | from configurations.compile 161 | into 'libs' 162 | } 163 | -------------------------------------------------------------------------------- /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 | 19 | # Disabling obfuscation is useful if you collect stack traces from production crashes 20 | # (unless you are using a system that supports de-obfuscate the stack traces). 21 | -dontobfuscate 22 | 23 | # React Native 24 | 25 | # Keep our interfaces so they can be used by other ProGuard rules. 26 | # See http://sourceforge.net/p/proguard/bugs/466/ 27 | -keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip 28 | -keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters 29 | -keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip 30 | 31 | # Do not strip any method/class that is annotated with @DoNotStrip 32 | -keep @com.facebook.proguard.annotations.DoNotStrip class * 33 | -keep @com.facebook.common.internal.DoNotStrip class * 34 | -keepclassmembers class * { 35 | @com.facebook.proguard.annotations.DoNotStrip *; 36 | @com.facebook.common.internal.DoNotStrip *; 37 | } 38 | 39 | -keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { 40 | void set*(***); 41 | *** get*(); 42 | } 43 | 44 | -keep class * extends com.facebook.react.bridge.JavaScriptModule { *; } 45 | -keep class * extends com.facebook.react.bridge.NativeModule { *; } 46 | -keepclassmembers,includedescriptorclasses class * { native ; } 47 | -keepclassmembers class * { @com.facebook.react.uimanager.UIProp ; } 48 | -keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp ; } 49 | -keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup ; } 50 | 51 | -dontwarn com.facebook.react.** 52 | 53 | # TextLayoutBuilder uses a non-public Android constructor within StaticLayout. 54 | # See libs/proxy/src/main/java/com/facebook/fbui/textlayoutbuilder/proxy for details. 55 | -dontwarn android.text.StaticLayout 56 | 57 | # okhttp 58 | 59 | -keepattributes Signature 60 | -keepattributes *Annotation* 61 | -keep class okhttp3.** { *; } 62 | -keep interface okhttp3.** { *; } 63 | -dontwarn okhttp3.** 64 | 65 | # okio 66 | 67 | -keep class sun.misc.Unsafe { *; } 68 | -dontwarn java.nio.file.* 69 | -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement 70 | -dontwarn okio.** 71 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Entypo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/assets/fonts/Entypo.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/EvilIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/assets/fonts/EvilIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/assets/fonts/FontAwesome.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Foundation.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/assets/fonts/Foundation.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/assets/fonts/Ionicons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/MaterialIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/assets/fonts/MaterialIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/assets/fonts/Octicons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SimpleLineIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/assets/fonts/SimpleLineIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Zocial.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/assets/fonts/Zocial.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/customIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/assets/fonts/customIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/notetaker.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/assets/fonts/notetaker.ttf -------------------------------------------------------------------------------- /android/app/src/main/java/com/notetaker/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.notetaker; 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 "NoteTaker"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/notetaker/MainApplication.java: -------------------------------------------------------------------------------- 1 | package com.notetaker; 2 | 3 | import android.app.Application; 4 | 5 | import com.facebook.react.ReactApplication; 6 | import com.AlexanderZaytsev.RNI18n.RNI18nPackage; 7 | import com.notetaker.device.DevicePackage; 8 | import com.oblador.vectoricons.VectorIconsPackage; 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 RNI18nPackage(), 30 | new VectorIconsPackage(), 31 | new DevicePackage() 32 | ); 33 | } 34 | }; 35 | 36 | @Override 37 | public ReactNativeHost getReactNativeHost() { 38 | return mReactNativeHost; 39 | } 40 | 41 | @Override 42 | public void onCreate() { 43 | super.onCreate(); 44 | SoLoader.init(this, /* native exopackage */ false); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/notetaker/device/DeviceModule.java: -------------------------------------------------------------------------------- 1 | package com.notetaker.device; 2 | 3 | import com.facebook.react.bridge.Callback; 4 | import com.facebook.react.bridge.ReactApplicationContext; 5 | import com.facebook.react.bridge.ReactContextBaseJavaModule; 6 | import com.facebook.react.bridge.ReactMethod; 7 | 8 | public class DeviceModule extends ReactContextBaseJavaModule { 9 | 10 | public DeviceModule(ReactApplicationContext reactContext) { 11 | super(reactContext); 12 | } 13 | 14 | @Override 15 | public String getName() { 16 | return "Device"; 17 | } 18 | @ReactMethod 19 | public void getDeviceName(Callback cb) { 20 | try{ 21 | cb.invoke(null, android.os.Build.MODEL); 22 | }catch (Exception e){ 23 | cb.invoke(e.toString(),null); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/notetaker/device/DevicePackage.java: -------------------------------------------------------------------------------- 1 | package com.notetaker.device; 2 | 3 | import com.facebook.react.ReactPackage; 4 | import com.facebook.react.bridge.JavaScriptModule; 5 | import com.facebook.react.bridge.NativeModule; 6 | import com.facebook.react.bridge.ReactApplicationContext; 7 | import com.facebook.react.uimanager.ViewManager; 8 | import java.util.ArrayList; 9 | import java.util.Collections; 10 | import java.util.List; 11 | 12 | /** 13 | * Created by atulr on 14/09/17. 14 | */ 15 | 16 | public class DevicePackage implements ReactPackage { 17 | 18 | @Override 19 | public List createViewManagers(ReactApplicationContext reactContext) { 20 | return Collections.emptyList(); 21 | } 22 | 23 | @Override 24 | public List createNativeModules( 25 | ReactApplicationContext reactContext) { 26 | List modules = new ArrayList<>(); 27 | 28 | modules.add(new DeviceModule(reactContext)); 29 | 30 | return modules; 31 | } 32 | 33 | // Backward compatibility 34 | public List> createJSModules() { 35 | return new ArrayList<>(); 36 | } 37 | } 38 | 39 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | NoteTaker 3 | 4 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:2.2.3' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | mavenLocal() 18 | jcenter() 19 | maven { 20 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 21 | url "$rootDir/../node_modules/react-native/android" 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /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 | 20 | android.useDeprecatedNdk=true 21 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip 6 | -------------------------------------------------------------------------------- /android/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # For Cygwin, ensure paths are in UNIX format before anything is touched. 46 | if $cygwin ; then 47 | [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` 48 | fi 49 | 50 | # Attempt to set APP_HOME 51 | # Resolve links: $0 may be a link 52 | PRG="$0" 53 | # Need this for relative symlinks. 54 | while [ -h "$PRG" ] ; do 55 | ls=`ls -ld "$PRG"` 56 | link=`expr "$ls" : '.*-> \(.*\)$'` 57 | if expr "$link" : '/.*' > /dev/null; then 58 | PRG="$link" 59 | else 60 | PRG=`dirname "$PRG"`"/$link" 61 | fi 62 | done 63 | SAVED="`pwd`" 64 | cd "`dirname \"$PRG\"`/" >&- 65 | APP_HOME="`pwd -P`" 66 | cd "$SAVED" >&- 67 | 68 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 69 | 70 | # Determine the Java command to use to start the JVM. 71 | if [ -n "$JAVA_HOME" ] ; then 72 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 73 | # IBM's JDK on AIX uses strange locations for the executables 74 | JAVACMD="$JAVA_HOME/jre/sh/java" 75 | else 76 | JAVACMD="$JAVA_HOME/bin/java" 77 | fi 78 | if [ ! -x "$JAVACMD" ] ; then 79 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 80 | 81 | Please set the JAVA_HOME variable in your environment to match the 82 | location of your Java installation." 83 | fi 84 | else 85 | JAVACMD="java" 86 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 87 | 88 | Please set the JAVA_HOME variable in your environment to match the 89 | location of your Java installation." 90 | fi 91 | 92 | # Increase the maximum file descriptors if we can. 93 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 94 | MAX_FD_LIMIT=`ulimit -H -n` 95 | if [ $? -eq 0 ] ; then 96 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 97 | MAX_FD="$MAX_FD_LIMIT" 98 | fi 99 | ulimit -n $MAX_FD 100 | if [ $? -ne 0 ] ; then 101 | warn "Could not set maximum file descriptor limit: $MAX_FD" 102 | fi 103 | else 104 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 105 | fi 106 | fi 107 | 108 | # For Darwin, add options to specify how the application appears in the dock 109 | if $darwin; then 110 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 111 | fi 112 | 113 | # For Cygwin, switch paths to Windows format before running java 114 | if $cygwin ; then 115 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 116 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 117 | 118 | # We build the pattern for arguments to be converted via cygpath 119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 120 | SEP="" 121 | for dir in $ROOTDIRSRAW ; do 122 | ROOTDIRS="$ROOTDIRS$SEP$dir" 123 | SEP="|" 124 | done 125 | OURCYGPATTERN="(^($ROOTDIRS))" 126 | # Add a user-defined pattern to the cygpath arguments 127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 129 | fi 130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 131 | i=0 132 | for arg in "$@" ; do 133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 135 | 136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 138 | else 139 | eval `echo args$i`="\"$arg\"" 140 | fi 141 | i=$((i+1)) 142 | done 143 | case $i in 144 | (0) set -- ;; 145 | (1) set -- "$args0" ;; 146 | (2) set -- "$args0" "$args1" ;; 147 | (3) set -- "$args0" "$args1" "$args2" ;; 148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 154 | esac 155 | fi 156 | 157 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 158 | function splitJvmOpts() { 159 | JVM_OPTS=("$@") 160 | } 161 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 162 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 163 | 164 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 165 | -------------------------------------------------------------------------------- /android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /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 = 'NoteTaker' 2 | include ':react-native-i18n' 3 | project(':react-native-i18n').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-i18n/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 | 7 | include ':app' 8 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NoteTaker", 3 | "displayName": "NoteTaker" 4 | } -------------------------------------------------------------------------------- /app/App.container.js: -------------------------------------------------------------------------------- 1 | import React, {Component} from 'react'; 2 | import Router from './routes'; 3 | import {connect} from 'react-redux'; 4 | import Proptypes from 'prop-types'; 5 | import {addNavigationHelpers} from 'react-navigation'; 6 | 7 | class App extends Component { 8 | render () { 9 | const {dispatch, nav, userPreferences} = this.props; 10 | return ( 11 | 12 | ); 13 | } 14 | } 15 | 16 | App.propTypes = { 17 | dispatch: Proptypes.func, 18 | nav: Proptypes.object, 19 | userPreferences: Proptypes.object 20 | }; 21 | 22 | const mapStateToProps = ({nav, userPreferences}) => ({ 23 | nav, 24 | userPreferences 25 | }); 26 | 27 | const mapDispatchToProps = (dispatch) => ({ 28 | dispatch 29 | }); 30 | 31 | export default connect(mapStateToProps, mapDispatchToProps)(App); 32 | -------------------------------------------------------------------------------- /app/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/app/assets/.gitkeep -------------------------------------------------------------------------------- /app/assets/selection.json: -------------------------------------------------------------------------------- 1 | { 2 | "IcoMoonType": "selection", 3 | "icons": [ 4 | { 5 | "icon": { 6 | "paths": [ 7 | "M264.533 290.133h221.867c9.438 0 17.067-7.629 17.067-17.067s-7.629-17.067-17.067-17.067h-221.867c-9.438 0-17.067 7.629-17.067 17.067s7.629 17.067 17.067 17.067z", 8 | "M264.533 819.2h221.867c9.438 0 17.067-7.629 17.067-17.067s-7.629-17.067-17.067-17.067h-221.867c-9.438 0-17.067 7.629-17.067 17.067s7.629 17.067 17.067 17.067z", 9 | "M264.533 392.533h494.933c9.438 0 17.067-7.629 17.067-17.067s-7.629-17.067-17.067-17.067h-494.933c-9.438 0-17.067 7.629-17.067 17.067s7.629 17.067 17.067 17.067z", 10 | "M264.533 597.333h494.933c9.438 0 17.067-7.629 17.067-17.067s-7.629-17.067-17.067-17.067h-494.933c-9.438 0-17.067 7.629-17.067 17.067s7.629 17.067 17.067 17.067z", 11 | "M264.533 716.8h494.933c9.438 0 17.067-7.629 17.067-17.067s-7.629-17.067-17.067-17.067h-494.933c-9.438 0-17.067 7.629-17.067 17.067s7.629 17.067 17.067 17.067z", 12 | "M264.533 494.933h238.933c9.438 0 17.067-7.629 17.067-17.067s-7.629-17.067-17.067-17.067h-238.933c-9.438 0-17.067 7.629-17.067 17.067s7.629 17.067 17.067 17.067z", 13 | "M759.467 460.8h-119.467c-9.438 0-17.067 7.629-17.067 17.067s7.629 17.067 17.067 17.067h119.467c9.438 0 17.067-7.629 17.067-17.067s-7.629-17.067-17.067-17.067z", 14 | "M559.616 465.749c-3.243 3.226-4.949 7.492-4.949 12.117 0 4.437 1.86 8.875 4.949 12.117 3.226 3.226 7.492 4.949 12.117 4.949 4.608 0 8.875-1.877 12.117-4.949 3.072-3.243 4.949-7.509 4.949-12.117 0-4.625-1.724-8.892-4.949-12.117-6.485-6.315-17.749-6.485-24.235 0z", 15 | "M708.267 34.133h-102.4v-17.067c0-9.438-7.629-17.067-17.067-17.067h-153.6c-9.438 0-17.067 7.629-17.067 17.067v17.067h-324.267v989.867h836.267v-989.867h-221.867zM571.733 34.133v51.2h-119.467v-51.2h119.467zM418.133 68.267v51.2h187.733v-51.2h85.333v68.267h-358.4v-68.267h85.333zM298.667 153.6v17.067h426.667v-51.2h119.467v819.2h-665.6v-819.2h119.467v34.133zM896 989.867h-768v-921.6h170.667v17.067h-153.6v887.467h733.867v-887.467h-153.6v-17.067h170.667v921.6z" 16 | ], 17 | "attrs": [ 18 | {}, 19 | {}, 20 | {}, 21 | {}, 22 | {}, 23 | {}, 24 | {}, 25 | {}, 26 | {} 27 | ], 28 | "isMulticolor": false, 29 | "isMulticolor2": false, 30 | "grid": 0, 31 | "tags": [ 32 | "notepad" 33 | ] 34 | }, 35 | "attrs": [ 36 | {}, 37 | {}, 38 | {}, 39 | {}, 40 | {}, 41 | {}, 42 | {}, 43 | {}, 44 | {} 45 | ], 46 | "properties": { 47 | "order": 2, 48 | "id": 0, 49 | "name": "notepad", 50 | "prevSize": 32, 51 | "code": 59648 52 | }, 53 | "setIdx": 0, 54 | "setId": 0, 55 | "iconIdx": 0 56 | } 57 | ], 58 | "height": 1024, 59 | "metadata": { 60 | "name": "notetaker" 61 | }, 62 | "preferences": { 63 | "showGlyphs": true, 64 | "showQuickUse": true, 65 | "showQuickUse2": true, 66 | "showSVGs": true, 67 | "fontPref": { 68 | "prefix": "icon-", 69 | "metadata": { 70 | "fontFamily": "notetaker", 71 | "majorVersion": 1, 72 | "minorVersion": 0 73 | }, 74 | "metrics": { 75 | "emSize": 1024, 76 | "baseline": 6.25, 77 | "whitespace": 50 78 | }, 79 | "embed": false, 80 | "showMetadata": true, 81 | "showVersion": true, 82 | "showMetrics": true, 83 | "showSelector": false 84 | }, 85 | "imagePref": { 86 | "prefix": "icon-", 87 | "png": true, 88 | "useClassSelector": true, 89 | "color": 0, 90 | "bgColor": 16777215, 91 | "classSelector": ".icon" 92 | }, 93 | "historySize": 50, 94 | "showCodes": true, 95 | "gridSize": 16, 96 | "showGrid": false 97 | } 98 | } -------------------------------------------------------------------------------- /app/components/About/AboutApp.component.js: -------------------------------------------------------------------------------- 1 | import React, {Component} from 'react'; 2 | import {View, Text} from 'react-native'; 3 | import styles from './AboutApp.styles.js'; 4 | import translate from '../../utils/language.utils'; 5 | 6 | class AboutApp extends Component { 7 | render () { 8 | return ( 9 | 10 | {translate('ABOUT_theAppDesc')} 11 | 12 | ); 13 | } 14 | } 15 | 16 | AboutApp.defaultProps = { 17 | }; 18 | AboutApp.propTypes = { 19 | }; 20 | 21 | export default AboutApp; 22 | -------------------------------------------------------------------------------- /app/components/About/AboutApp.styles.js: -------------------------------------------------------------------------------- 1 | import {StyleSheet} from 'react-native'; 2 | 3 | export default StyleSheet.create({ 4 | container: { 5 | flex: 1, 6 | justifyContent: 'center', 7 | alignItems: 'center' 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/components/About/AboutDevs.component.js: -------------------------------------------------------------------------------- 1 | import React, {Component} from 'react'; 2 | import {View, Text} from 'react-native'; 3 | import styles from './AboutDevs.styles.js'; 4 | import translate from '../../utils/language.utils'; 5 | 6 | class AboutDevs extends Component { 7 | render () { 8 | return ( 9 | 10 | {translate('ABOUT_theCreatorsDesc')} 11 | 12 | ); 13 | } 14 | } 15 | 16 | AboutDevs.defaultProps = { 17 | }; 18 | AboutDevs.propTypes = { 19 | }; 20 | 21 | export default AboutDevs; 22 | -------------------------------------------------------------------------------- /app/components/About/AboutDevs.styles.js: -------------------------------------------------------------------------------- 1 | import {StyleSheet} from 'react-native'; 2 | 3 | export default StyleSheet.create({ 4 | container: { 5 | flex: 1, 6 | justifyContent: 'center', 7 | alignItems: 'center' 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/components/Home/Home.component.js: -------------------------------------------------------------------------------- 1 | import React, {Component} from 'react'; 2 | import {View, Text, TextInput, KeyboardAvoidingView} from 'react-native'; 3 | import PropTypes from 'prop-types'; 4 | import styles from './Home.component.style'; 5 | import Notes from '../Notes/Notes.component'; 6 | import Touchable from 'react-native-platform-touchable'; 7 | import noop from 'lodash/noop'; 8 | import translate from '../../utils/language.utils'; 9 | 10 | // Icon Usage 11 | import {createIconSetFromIcoMoon} from 'react-native-vector-icons'; 12 | import icoMoonConfig from '../../assets/selection.json'; 13 | const Icon = createIconSetFromIcoMoon(icoMoonConfig); 14 | 15 | class Home extends Component { 16 | addNote = () => { 17 | const {saveNote, title, text} = this.props; 18 | saveNote({title, text}); 19 | } 20 | render () { 21 | const {setTitle, title, text, setText, notes, currentLanguage, toggleLanguage} = this.props; 22 | return ( 23 | 24 | {translate('HOME_noteTitle')} 25 | 26 | {currentLanguage} 27 | 28 | 30 | {translate('HOME_pleaseTypeYourNote')} 31 | 33 | 34 | 35 | {translate('HOME_save')} 36 | {text.length} {translate('HOME_characters')} 37 | 38 | 39 | 40 | 41 | {translate('ABOUT_us')} 42 | 43 | 44 | ); 45 | } 46 | } 47 | 48 | Home.defaultProps = { 49 | onAboutPress: noop 50 | }; 51 | 52 | Home.propTypes = { 53 | setTitle: PropTypes.func, 54 | onAboutPress: PropTypes.func, 55 | setText: PropTypes.func, 56 | toggleLanguage: PropTypes.func, 57 | title: PropTypes.string, 58 | saveNote: PropTypes.func, 59 | notes: PropTypes.array, 60 | currentLanguage: PropTypes.string, 61 | text: PropTypes.string 62 | }; 63 | 64 | export default Home; 65 | -------------------------------------------------------------------------------- /app/components/Home/Home.component.style.js: -------------------------------------------------------------------------------- 1 | import {StyleSheet} from 'react-native'; 2 | import theme from '../../styles/theme.style'; 3 | import {headingText, textInput} from '../../styles/common.style'; 4 | 5 | export default StyleSheet.create({ 6 | container: { 7 | flex: 1, 8 | paddingTop: theme.CONTAINER_PADDING, 9 | flexDirection: 'column', 10 | justifyContent: 'space-between' 11 | }, 12 | titleHeading: { 13 | ...headingText, 14 | }, 15 | changeLanguageText: { 16 | ...headingText, 17 | alignSelf: 'center', 18 | padding: 0, 19 | }, 20 | changeLanguage: { 21 | elevation: 2, 22 | position: 'absolute', 23 | backgroundColor: theme.BACKGROUND_COLOR_LIGHT, 24 | padding: 10, 25 | borderRadius: 5, 26 | top: 15, 27 | width: 40, 28 | right: 10, 29 | borderWidth: 1, 30 | borderColor: theme.BORDER_COLOR_LIGHT 31 | }, 32 | titleTextInput: { 33 | ...textInput 34 | }, 35 | textAreaTitle: { 36 | ...headingText, 37 | fontWeight: theme.FONT_WEIGHT_LIGHT, 38 | fontStyle: 'italic' 39 | }, 40 | textArea: { 41 | ...textInput, 42 | flex: 1, 43 | textAlignVertical: 'top', 44 | fontSize: theme.FONT_SIZE_MEDIUM, 45 | fontWeight: theme.FONT_WEIGHT_LIGHT 46 | }, 47 | bottomBar: { 48 | flexDirection: 'row', 49 | alignItems: 'center' 50 | }, 51 | bottomBarWrapper: { 52 | flexDirection: 'row', 53 | justifyContent: 'space-between', 54 | flex: 1 55 | }, 56 | saveBtn: { 57 | padding: 10, 58 | fontWeight: theme.FONT_WEIGHT_BOLD 59 | }, 60 | characterCount: { 61 | padding: 10, 62 | fontSize: theme.FONT_SIZE_SMALL 63 | }, 64 | aboutUsWrapper: { 65 | padding: 15, 66 | alignItems: 'center', 67 | backgroundColor: 'white' 68 | }, 69 | aboutUs: { 70 | fontWeight: theme.FONT_WEIGHT_BOLD 71 | } 72 | }); 73 | -------------------------------------------------------------------------------- /app/components/List/List.component.js: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types'; 2 | import React, {Component} from 'react'; 3 | import result from 'lodash/result'; 4 | import styles from './List.styles.js'; 5 | import {FlatList, TouchableOpacity} from 'react-native'; 6 | import {Text, View} from 'react-native'; 7 | 8 | class List extends Component { 9 | 10 | _listItem = ({item, index}) => { // index, separators are also passed 11 | const {onPress, headingKey, subHeadingKey} = this.props; 12 | const wrapperStyle = index % 2 === 0 ? [styles.listItemWrapper, styles.darkBackground] : // index % 2 is for alternating colors in the list 13 | [styles.listItemWrapper, styles.lightBackground]; 14 | const heading = result(item, headingKey); 15 | const subHeading = result(item, subHeadingKey); 16 | return ( 17 | 18 | 19 | 20 | {heading ? {heading} : null} 21 | {subHeading ? {subHeading} : null} 22 | 23 | 24 | 25 | ); 26 | } 27 | 28 | _keyExtractor = (item, index) => index 29 | 30 | render () { 31 | const {data} = this.props; 32 | return ( 33 | 34 | ); 35 | } 36 | } 37 | List.defaultProps = { 38 | data: [], 39 | headingKey: 'heading', 40 | subHeadingKey: 'subHeading' 41 | }; 42 | List.propTypes = { 43 | onPress: PropTypes.func, 44 | data: PropTypes.array, 45 | headingKey: PropTypes.string, 46 | subHeadingKey: PropTypes.string 47 | }; 48 | export default List; 49 | -------------------------------------------------------------------------------- /app/components/List/List.styles.js: -------------------------------------------------------------------------------- 1 | import theme from '../../styles/theme.style'; 2 | import {headingText} from '../../styles/common.style'; 3 | 4 | export default { 5 | listItemWrapper: { 6 | paddingHorizontal: 10, 7 | paddingVertical: 15, 8 | flexDirection: 'row', 9 | alignItems: 'center', 10 | justifyContent: 'space-between' 11 | }, 12 | lightBackground: { 13 | backgroundColor: 'white' 14 | }, 15 | darkBackground: { 16 | backgroundColor: theme.BACKGROUND_COLOR_LIGHT 17 | }, 18 | heading: { 19 | ...headingText, 20 | paddingHorizontal: 0 21 | }, 22 | subHeading: { 23 | 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /app/components/List/__tests__/List.component.test.js: -------------------------------------------------------------------------------- 1 | import List from '../List.component'; 2 | import React from 'react'; 3 | import renderer from 'react-test-renderer'; 4 | 5 | describe('List component', () => { 6 | it('should render correctly', () => { 7 | const progressBarTree = renderer.create().toJSON(); 8 | expect(progressBarTree).toMatchSnapshot(); 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /app/components/List/__tests__/__snapshots__/List.component.test.js.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`List component should render correctly 1`] = ` 4 | 28 | 29 | 30 | `; 31 | -------------------------------------------------------------------------------- /app/components/Notes/Notes.component.js: -------------------------------------------------------------------------------- 1 | /* Notes: */ 2 | 3 | import React, {Component} from 'react'; 4 | import PropTypes from 'prop-types'; 5 | import {View, Text} from 'react-native'; 6 | import styles from './Notes.style.js'; 7 | import translate from '../../utils/language.utils'; 8 | import List from '../List/List.component'; 9 | import Modal from 'react-native-modal-overlay'; 10 | 11 | 12 | class Notes extends Component { 13 | state = { 14 | visible: false, 15 | selectedData: {} 16 | } 17 | hideModal = () => this.setState({visible: false}) 18 | showModal = (selectedData) => () => this.setState({visible: true, selectedData}); 19 | 20 | render () { 21 | if (this.props.data.length === 0) { 22 | return null; 23 | } 24 | return ( 25 | 26 | {translate('NOTES_heading')}: 27 | 28 | 29 | {translate('NOTES_title')}: {this.state.selectedData.title} 30 | {translate('NOTES_content')}: {this.state.selectedData.text} 31 | 32 | ); 33 | } 34 | } 35 | Notes.defaultProps = { 36 | data: [] 37 | }; 38 | Notes.propTypes = { 39 | data: PropTypes.array 40 | }; 41 | export default Notes; 42 | -------------------------------------------------------------------------------- /app/components/Notes/Notes.style.js: -------------------------------------------------------------------------------- 1 | import {StyleSheet} from 'react-native'; 2 | import theme from '../../styles/theme.style'; 3 | import {headingText} from '../../styles/common.style'; 4 | 5 | export default StyleSheet.create({ 6 | heading: { 7 | ...headingText, 8 | shadowColor: theme.BACKGROUND_COLOR_LIGHT, 9 | shadowOffset: {width: 1, height: 1}, 10 | shadowOpacity: 0.9, 11 | shadowRadius: 2, 12 | elevation: 2, 13 | width: '100%' 14 | }, 15 | container: { 16 | maxHeight: '40%', 17 | borderTopWidth: 1, 18 | borderTopColor: theme.BACKGROUND_COLOR_LIGHT 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /app/components/TextArea/TextArea.component.android.js: -------------------------------------------------------------------------------- 1 | import React, {Component} from 'react'; 2 | import {TextInput} from 'react-native'; 3 | import styles from './TextArea.component.style'; 4 | 5 | class TextArea extends Component { 6 | state = { 7 | text: '' 8 | } 9 | setText = (text) => this.setState({text}) 10 | render () { 11 | const {...extraProps} = this.props; 12 | const alignTextTop = {textAlignVertical: 'top'}; 13 | return ( 14 | 22 | ); 23 | } 24 | } 25 | 26 | export default TextArea; 27 | -------------------------------------------------------------------------------- /app/components/TextArea/TextArea.component.js: -------------------------------------------------------------------------------- 1 | import React, {Component} from 'react'; 2 | import {TextInput} from 'react-native'; 3 | import PropTypes from 'prop-types'; 4 | import styles from './TextArea.component.style'; 5 | 6 | class TextArea extends Component { 7 | static propTypes = { 8 | text: PropTypes.string, 9 | onTextChange: PropTypes.func 10 | } 11 | render () { 12 | const {text, onTextChange, ...extraProps} = this.props; 13 | return ( 14 | 21 | ); 22 | } 23 | } 24 | export default TextArea; 25 | -------------------------------------------------------------------------------- /app/components/TextArea/TextArea.component.style.js: -------------------------------------------------------------------------------- 1 | import {StyleSheet} from 'react-native'; 2 | import theme from '../../styles/theme.style'; 3 | 4 | export default StyleSheet.create({ 5 | textArea: { 6 | fontSize: theme.FONT_SIZE_MEDIUM, 7 | fontWeight: theme.FONT_WEIGHT_LIGHT 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/config/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/app/config/.gitkeep -------------------------------------------------------------------------------- /app/config/env.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ENV: 'dev' 3 | }; 4 | -------------------------------------------------------------------------------- /app/config/environment/production.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ENV: 'prod' 3 | }; 4 | -------------------------------------------------------------------------------- /app/config/language/en.js: -------------------------------------------------------------------------------- 1 | export default { 2 | HOME_noteTitle: 'Note Title', 3 | HOME_pleaseTypeYourNote: 'Please type your note below', 4 | HOME_startTakingNotes: 'Start taking notes', 5 | HOME_save: 'Save', 6 | HOME_characters: 'chacters', 7 | ABOUT_us: 'About Us', 8 | ABOUT_theApp: 'About the app', 9 | ABOUT_theCreators: 'About the Creators', 10 | ABOUT_theAppDesc: 'About the app', 11 | ABOUT_theCreatorsDesc: 'About the Creators', 12 | NOTES_heading: 'Notes', 13 | NOTES_title: 'Title', 14 | NOTES_content: 'Content' 15 | }; 16 | -------------------------------------------------------------------------------- /app/config/language/hi.js: -------------------------------------------------------------------------------- 1 | export default { 2 | HOME_noteTitle: 'नोट शीर्षक', 3 | HOME_pleaseTypeYourNote: 'कृपया नीचे अपना नोट लिखें', 4 | HOME_startTakingNotes: 'नोट्स लेना शुरू करें', 5 | HOME_save: 'सहेजें', 6 | HOME_characters: 'वर्ण', 7 | ABOUT_us: 'अधिक जानकारी', 8 | ABOUT_theApp: 'एप के बारे में', 9 | ABOUT_theCreators: 'रचनाकारों के बारे में', 10 | ABOUT_theAppDesc: 'एप के बारे में', 11 | ABOUT_theCreatorsDesc: 'रचनाकारों के बारे में', 12 | NOTES_heading: 'नोट्स', 13 | NOTES_title: 'शीर्षक', 14 | NOTES_content: 'विस्तार' 15 | }; 16 | -------------------------------------------------------------------------------- /app/config/routes.config.js: -------------------------------------------------------------------------------- 1 | import theme from '../styles/theme.style.js'; 2 | 3 | export const aboutRoutesConfig = { 4 | tabBarOptions: { 5 | upperCaseLabel: false, 6 | showIcon: false, 7 | style: { 8 | backgroundColor: 'white' 9 | }, 10 | activeTintColor: theme.ACTIVE_TAB_COLOR, 11 | inactiveTintColor: theme.INACTIVE_TAB_COLOR, 12 | labelStyle: { 13 | fontSize: 14 14 | } 15 | }, 16 | swipeEnabled: true, 17 | animationEnabled: true, 18 | tabBarPosition: 'bottom' 19 | }; 20 | -------------------------------------------------------------------------------- /app/index.js: -------------------------------------------------------------------------------- 1 | import React, {Component} from 'react'; 2 | import {initStore} from './redux/store'; 3 | import {Provider} from 'react-redux'; 4 | import {NativeModules} from 'react-native'; 5 | 6 | import App from './App.container'; 7 | 8 | const store = initStore(); 9 | 10 | class NoteTaker extends Component { 11 | render () { 12 | NativeModules.Device.getDeviceName((err, name) => console.log(err, name)); //eslint-disable-line 13 | return ( 14 | 15 | 16 | 17 | ); 18 | } 19 | } 20 | 21 | export default NoteTaker; 22 | -------------------------------------------------------------------------------- /app/pages/Home.page.js: -------------------------------------------------------------------------------- 1 | import React, {Component} from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import {connect} from 'react-redux'; 4 | import {toggleLanguage} from '../redux/thunks/index.thunks'; 5 | import {setTitle, setText, addNote} from '../redux/actions/index.actions'; 6 | import Home from '../components/Home/Home.component'; 7 | import {NavigationActions} from 'react-navigation'; 8 | 9 | class HomePage extends Component { 10 | render () { 11 | const {setTitle, setText, title, text, saveNote, notes, currentLanguage, toggleLanguage} = this.props; 12 | return ( 13 | 14 | ); 15 | } 16 | } 17 | 18 | HomePage.propTypes = { 19 | setTitle: PropTypes.func, 20 | setText: PropTypes.func, 21 | title: PropTypes.string, 22 | text: PropTypes.string, 23 | navigation: PropTypes.object, 24 | currentLanguage: PropTypes.string, 25 | toggleLanguage: PropTypes.func, 26 | onAboutPress: PropTypes.func, 27 | saveNote: PropTypes.func, 28 | notes: PropTypes.array 29 | }; 30 | 31 | const mapStateToProps = (state) => ({ 32 | title: state.content.title, 33 | text: state.content.text, 34 | notes: state.notes, 35 | currentLanguage: state.userPreferences.language 36 | }); 37 | 38 | const mapDispatchToProps = (dispatch) => ({ 39 | setTitle: (title) => dispatch(setTitle(title)), 40 | setText: (text) => dispatch(setText(text)), 41 | saveNote: (note) => { 42 | dispatch(addNote(note)); 43 | dispatch(setTitle('')); 44 | dispatch(setText('')); 45 | }, 46 | toggleLanguage: () => dispatch(toggleLanguage()), 47 | onAboutPress: () => dispatch(NavigationActions.navigate({routeName: 'about', params: {navigatingFrom: 'Home'}})) 48 | }); 49 | 50 | export default connect(mapStateToProps, mapDispatchToProps)(HomePage); 51 | -------------------------------------------------------------------------------- /app/redux/actions/index.actions.js: -------------------------------------------------------------------------------- 1 | import {createAction} from 'redux-actions'; 2 | 3 | export const TEST_ACTION = 'TEST_ACTION'; 4 | export const SET_TEXT = 'SET_TEXT'; 5 | export const SET_TITLE = 'SET_TITLE'; 6 | export const CHANGE_LANGUAGE = 'CHANGE_LANGUAGE'; 7 | export const ADD_NOTE = 'ADD_NOTE'; 8 | 9 | 10 | export const setTitle = createAction(SET_TITLE); 11 | export const addNote = createAction(ADD_NOTE); 12 | /* This is equivalent to 13 | export const setTitle = (payload) => { 14 | return { 15 | type: SET_TITLE, 16 | payload: payload 17 | }; 18 | }; 19 | */ 20 | export const setText = createAction(SET_TEXT); 21 | export const changeLanguage = createAction(CHANGE_LANGUAGE); 22 | -------------------------------------------------------------------------------- /app/redux/reducers/content.reducer.js: -------------------------------------------------------------------------------- 1 | import {SET_TEXT, SET_TITLE} from '../actions/index.actions'; 2 | 3 | const defaultState = { 4 | text: '', 5 | title: '' 6 | }; 7 | 8 | const content = (state = defaultState, action) => { 9 | switch (action.type) { 10 | case SET_TEXT: { 11 | return {...state, text: action.payload}; 12 | } 13 | case SET_TITLE: { 14 | return {...state, title: action.payload}; 15 | } 16 | default: 17 | return state; 18 | } 19 | }; 20 | 21 | export default content; 22 | -------------------------------------------------------------------------------- /app/redux/reducers/notes.reducer.js: -------------------------------------------------------------------------------- 1 | import {ADD_NOTE} from '../actions/index.actions'; 2 | 3 | const notes = (state = [], action) => { 4 | switch (action.type) { 5 | case ADD_NOTE: { 6 | return [...state, action.payload]; 7 | } 8 | default: 9 | return state; 10 | } 11 | }; 12 | 13 | export default notes; 14 | -------------------------------------------------------------------------------- /app/redux/reducers/root.reducer.js: -------------------------------------------------------------------------------- 1 | import {combineReducers} from 'redux'; 2 | import test from './test.reducer'; 3 | import content from './content.reducer'; 4 | import notes from './notes.reducer'; 5 | import Router from '../../routes'; 6 | import userPreferences from './userPreferences.reducer'; 7 | 8 | const nav = (state, action) => ( 9 | Router.router.getStateForAction(action, state) || state 10 | ); 11 | 12 | export default combineReducers({ 13 | test, 14 | content, 15 | nav, 16 | notes, 17 | userPreferences 18 | }); 19 | -------------------------------------------------------------------------------- /app/redux/reducers/test.reducer.js: -------------------------------------------------------------------------------- 1 | import {TEST_ACTION} from '../actions/index.actions'; 2 | 3 | const test = (state = {}, action) => { 4 | switch (action.type) { 5 | case TEST_ACTION: { 6 | return action.payload; 7 | } 8 | default: 9 | return state; 10 | } 11 | }; 12 | 13 | export default test; 14 | -------------------------------------------------------------------------------- /app/redux/reducers/userPreferences.reducer.js: -------------------------------------------------------------------------------- 1 | import {CHANGE_LANGUAGE} from '../actions/index.actions'; 2 | import {getCurrentLocale} from '../../utils/language.utils'; 3 | 4 | const initialState = {language: getCurrentLocale()}; 5 | 6 | const userPreferences = (state = initialState, action) => { 7 | switch (action.type) { 8 | case CHANGE_LANGUAGE: { 9 | return {...state, language: action.payload}; 10 | } 11 | default: 12 | return state; 13 | } 14 | }; 15 | 16 | export default userPreferences; 17 | -------------------------------------------------------------------------------- /app/redux/store.js: -------------------------------------------------------------------------------- 1 | import {createStore, compose, applyMiddleware} from 'redux'; 2 | import thunk from 'redux-thunk'; 3 | // import someReduxMiddleware from 'some-redux-middleware'; 4 | // import someOtherReduxMiddleware from 'some-other-redux-middleware'; 5 | import rootReducer from './reducers/root.reducer'; 6 | 7 | const enhancerList = []; 8 | const devToolsExtension = window && window.__REDUX_DEVTOOLS_EXTENSION__; 9 | 10 | if (typeof devToolsExtension === 'function') { 11 | enhancerList.push(devToolsExtension()); 12 | } 13 | 14 | const composedEnhancer = compose(applyMiddleware(thunk), ...enhancerList); 15 | 16 | const initStore = () => createStore(rootReducer, {}, composedEnhancer); 17 | 18 | module.exports = { 19 | initStore 20 | }; 21 | -------------------------------------------------------------------------------- /app/redux/thunks/index.thunks.js: -------------------------------------------------------------------------------- 1 | import {changeLanguage} from '../actions/index.actions.js'; 2 | import {setLocale} from '../../utils/language.utils'; 3 | 4 | export const setCurrentLanguage = (lang) => (dispatch) => { 5 | setLocale(lang); 6 | dispatch(changeLanguage(lang)); 7 | }; 8 | 9 | export const toggleLanguage = () => (dispatch, getState) => { 10 | const currentLanguage = getState().userPreferences.language; 11 | if (currentLanguage === 'en') { 12 | dispatch(setCurrentLanguage('hi')); 13 | } else { 14 | dispatch(setCurrentLanguage('en')); 15 | } 16 | }; 17 | -------------------------------------------------------------------------------- /app/routes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/app/routes/.gitkeep -------------------------------------------------------------------------------- /app/routes/__mocks__/index.js: -------------------------------------------------------------------------------- 1 | import Router from '../index'; 2 | Router.router.getStateForAction = jest.fn(); 3 | 4 | module.exports = Router; 5 | -------------------------------------------------------------------------------- /app/routes/about.routes.js: -------------------------------------------------------------------------------- 1 | import {TabNavigator} from 'react-navigation'; 2 | import AboutApp from '../components/About/AboutApp.component'; 3 | import AboutDevs from '../components/About/AboutDevs.component'; 4 | import {aboutRoutesConfig} from '../config/routes.config'; 5 | import {translateHeaderText} from '../utils/language.utils'; 6 | 7 | export default TabNavigator({ 8 | aboutApp: { 9 | screen: AboutApp, 10 | navigationOptions: translateHeaderText('ABOUT_theApp') 11 | }, 12 | aboutDevs: { 13 | screen: AboutDevs, 14 | navigationOptions: translateHeaderText('ABOUT_theCreators') 15 | } 16 | }, aboutRoutesConfig); 17 | -------------------------------------------------------------------------------- /app/routes/index.js: -------------------------------------------------------------------------------- 1 | import {StackNavigator} from 'react-navigation'; 2 | import HomePage from '../pages/Home.page'; 3 | import AboutRoutes from './about.routes.js'; 4 | import {translateHeaderText} from '../utils/language.utils'; 5 | 6 | const Router = StackNavigator({ 7 | home: { 8 | screen: HomePage, 9 | navigationOptions: translateHeaderText('HOME_startTakingNotes') 10 | }, 11 | about: { 12 | screen: AboutRoutes 13 | } 14 | }); 15 | 16 | export default Router; 17 | -------------------------------------------------------------------------------- /app/styles/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/app/styles/.gitkeep -------------------------------------------------------------------------------- /app/styles/common.style.js: -------------------------------------------------------------------------------- 1 | import theme from './theme.style'; 2 | 3 | export const headingText = { 4 | fontSize: theme.FONT_SIZE_MEDIUM, 5 | alignSelf: 'flex-start', 6 | padding: 10, 7 | fontWeight: theme.FONT_WEIGHT_BOLD, 8 | }; 9 | 10 | export const textInput = { 11 | padding: theme.TEXT_INPUT_PADDING, 12 | backgroundColor: 'white', 13 | borderWidth: 1, 14 | margin: 10, 15 | borderColor: theme.BORDER_COLOR_LIGHT, 16 | borderRadius: 2, 17 | alignSelf: 'stretch' 18 | }; 19 | -------------------------------------------------------------------------------- /app/styles/theme.style.js: -------------------------------------------------------------------------------- 1 | export default { 2 | PRIMARY_COLOR: '#2aabb8', 3 | FONT_SIZE_SMALL: 12, 4 | FONT_SIZE_MEDIUM: 14, 5 | FONT_SIZE_LARGE: 16, 6 | FONT_WEIGHT_LIGHT: '200', 7 | FONT_WEIGHT_MEDIUM: '500', 8 | FONT_WEIGHT_BOLD: '700', 9 | BACKGROUND_COLOR_LIGHT: '#ebe9e9', 10 | BORDER_COLOR_LIGHT: '#ABACAB', 11 | CONTAINER_PADDING: 20, 12 | TEXT_INPUT_PADDING: 10, 13 | ACTIVE_TAB_COLOR: '#0071FF', 14 | INACTIVE_TAB_COLOR: 'grey' 15 | }; 16 | -------------------------------------------------------------------------------- /app/utils/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/app/utils/.gitkeep -------------------------------------------------------------------------------- /app/utils/language.utils.js: -------------------------------------------------------------------------------- 1 | import I18n from 'react-native-i18n'; // You can import i18n-js as well if you don't want the app to set default locale from the device locale. 2 | import en from '../config/language/en'; 3 | import hi from '../config/language/hi'; 4 | 5 | I18n.fallbacks = true; // If an english translation is not available in en.js, it will look inside hi.js 6 | I18n.missingBehaviour = 'guess'; // It will convert HOME_noteTitle to "HOME note title" if the value of HOME_noteTitle doesn't exist in any of the translation files. 7 | I18n.defaultLocale = 'en'; // If the current locale in device is not en or hi 8 | I18n.locale = 'en'; // If we do not want the framework to use the phone's locale by default 9 | 10 | I18n.translations = { 11 | hi, 12 | en 13 | }; 14 | 15 | export const setLocale = (locale) => { 16 | I18n.locale = locale; 17 | }; 18 | 19 | export const getCurrentLocale = () => I18n.locale; // It will be used to define intial language state in reducer. 20 | 21 | /* translateHeaderText: 22 | screenProps => coming from react-navigation(defined in app.container.js) 23 | langKey => will be passed from the routes file depending on the screen 24 | */ 25 | export const translateHeaderText = (langKey) => ({screenProps}) => { 26 | const title = I18n.translate(langKey, screenProps.language); 27 | return {title}; 28 | }; 29 | 30 | export default I18n.translate.bind(I18n); 31 | -------------------------------------------------------------------------------- /final.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/final.png -------------------------------------------------------------------------------- /index.android.js: -------------------------------------------------------------------------------- 1 | import {AppRegistry} from 'react-native'; 2 | import app from './app/index'; 3 | 4 | AppRegistry.registerComponent('NoteTaker', () => app); 5 | export default app; 6 | -------------------------------------------------------------------------------- /index.ios.js: -------------------------------------------------------------------------------- 1 | import {AppRegistry} from 'react-native'; 2 | import app from './app/index'; 3 | 4 | AppRegistry.registerComponent('NoteTaker', () => app); 5 | export default app; 6 | -------------------------------------------------------------------------------- /ios/NoteTaker-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/NoteTaker-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/NoteTaker.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; 11 | 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; 12 | 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; }; 13 | 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; 14 | 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; 15 | 00E356F31AD99517003FC87E /* NoteTakerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* NoteTakerTests.m */; }; 16 | 02C9450D85EE409C805DAC1B /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7733A1189F3E452CA3FEF3A4 /* Zocial.ttf */; }; 17 | 08EDC9C47FBF4E66BF46D3D4 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DE213A2CBB864CAC94F12902 /* Foundation.ttf */; }; 18 | 0A16BF78F72B4258BDAEDF82 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EC1454D0E2FF4C3386BD884C /* MaterialCommunityIcons.ttf */; }; 19 | 0FD9E767CE03470096B679C4 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CFCFF13E98804E1093D2EEC5 /* FontAwesome.ttf */; }; 20 | 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; 21 | 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; 22 | 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; 23 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 24 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 25 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 26 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 27 | 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 28 | 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 29 | 1754EA35BC424E039E4F67BE /* libRNI18n.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FBE4AB5CED9F4A2F9641FE8F /* libRNI18n.a */; }; 30 | 1C6BCB4A01844B88AE219FCF /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 26619238E3434BFDB85DA73B /* SimpleLineIcons.ttf */; }; 31 | 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 32 | 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 33 | 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 34 | 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */; }; 35 | 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */; }; 36 | 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */; }; 37 | 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */; }; 38 | 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */; }; 39 | 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */; }; 40 | 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */; }; 41 | 2D02E4C91E0B4AEC006451C7 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; }; 42 | 2DCD954D1E0B4F2C00145EB5 /* NoteTakerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* NoteTakerTests.m */; }; 43 | 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; }; 44 | 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; 45 | 9241FB3B338646C6869409FB /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1218583BF95A46BE918E699E /* Entypo.ttf */; }; 46 | A48A4F94E8A1482A87CF277C /* notetaker.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 845C0EF45C2846348E2E5A94 /* notetaker.ttf */; }; 47 | A6771D4D1F69B713008EF48D /* Device.m in Sources */ = {isa = PBXBuildFile; fileRef = A6771D4C1F69B713008EF48D /* Device.m */; }; 48 | A96EBA443E244A0D82A5AA7E /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F83FB54448184B7E8DB88A37 /* EvilIcons.ttf */; }; 49 | B85DA9B92D3040F080B932D6 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BFA74F1A82F5454091CB5F41 /* Octicons.ttf */; }; 50 | BCAD3753EDAE4C3EB2AF2FB7 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F0E528A6A4EA4042AD7F2C68 /* Ionicons.ttf */; }; 51 | D287C90B74594D3F962CC4FE /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5C8CDE30A4EC46FFAA08BF2D /* MaterialIcons.ttf */; }; 52 | FDE5150E69454FAEAFBA6520 /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A39C77059F443B287ACB3A0 /* libRNVectorIcons.a */; }; 53 | /* End PBXBuildFile section */ 54 | 55 | /* Begin PBXContainerItemProxy section */ 56 | 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = { 57 | isa = PBXContainerItemProxy; 58 | containerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; 59 | proxyType = 2; 60 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 61 | remoteInfo = RCTActionSheet; 62 | }; 63 | 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = { 64 | isa = PBXContainerItemProxy; 65 | containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; 66 | proxyType = 2; 67 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 68 | remoteInfo = RCTGeolocation; 69 | }; 70 | 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = { 71 | isa = PBXContainerItemProxy; 72 | containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; 73 | proxyType = 2; 74 | remoteGlobalIDString = 58B5115D1A9E6B3D00147676; 75 | remoteInfo = RCTImage; 76 | }; 77 | 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = { 78 | isa = PBXContainerItemProxy; 79 | containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; 80 | proxyType = 2; 81 | remoteGlobalIDString = 58B511DB1A9E6C8500147676; 82 | remoteInfo = RCTNetwork; 83 | }; 84 | 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = { 85 | isa = PBXContainerItemProxy; 86 | containerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; 87 | proxyType = 2; 88 | remoteGlobalIDString = 832C81801AAF6DEF007FA2F7; 89 | remoteInfo = RCTVibration; 90 | }; 91 | 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { 92 | isa = PBXContainerItemProxy; 93 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; 94 | proxyType = 1; 95 | remoteGlobalIDString = 13B07F861A680F5B00A75B9A; 96 | remoteInfo = NoteTaker; 97 | }; 98 | 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = { 99 | isa = PBXContainerItemProxy; 100 | containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; 101 | proxyType = 2; 102 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 103 | remoteInfo = RCTSettings; 104 | }; 105 | 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = { 106 | isa = PBXContainerItemProxy; 107 | containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; 108 | proxyType = 2; 109 | remoteGlobalIDString = 3C86DF461ADF2C930047B81A; 110 | remoteInfo = RCTWebSocket; 111 | }; 112 | 146834031AC3E56700842450 /* PBXContainerItemProxy */ = { 113 | isa = PBXContainerItemProxy; 114 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 115 | proxyType = 2; 116 | remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; 117 | remoteInfo = React; 118 | }; 119 | 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = { 120 | isa = PBXContainerItemProxy; 121 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; 122 | proxyType = 1; 123 | remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7; 124 | remoteInfo = "NoteTaker-tvOS"; 125 | }; 126 | 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = { 127 | isa = PBXContainerItemProxy; 128 | containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; 129 | proxyType = 2; 130 | remoteGlobalIDString = 2D2A283A1D9B042B00D4039D; 131 | remoteInfo = "RCTImage-tvOS"; 132 | }; 133 | 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */ = { 134 | isa = PBXContainerItemProxy; 135 | containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; 136 | proxyType = 2; 137 | remoteGlobalIDString = 2D2A28471D9B043800D4039D; 138 | remoteInfo = "RCTLinking-tvOS"; 139 | }; 140 | 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */ = { 141 | isa = PBXContainerItemProxy; 142 | containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; 143 | proxyType = 2; 144 | remoteGlobalIDString = 2D2A28541D9B044C00D4039D; 145 | remoteInfo = "RCTNetwork-tvOS"; 146 | }; 147 | 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */ = { 148 | isa = PBXContainerItemProxy; 149 | containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; 150 | proxyType = 2; 151 | remoteGlobalIDString = 2D2A28611D9B046600D4039D; 152 | remoteInfo = "RCTSettings-tvOS"; 153 | }; 154 | 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */ = { 155 | isa = PBXContainerItemProxy; 156 | containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; 157 | proxyType = 2; 158 | remoteGlobalIDString = 2D2A287B1D9B048500D4039D; 159 | remoteInfo = "RCTText-tvOS"; 160 | }; 161 | 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */ = { 162 | isa = PBXContainerItemProxy; 163 | containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; 164 | proxyType = 2; 165 | remoteGlobalIDString = 2D2A28881D9B049200D4039D; 166 | remoteInfo = "RCTWebSocket-tvOS"; 167 | }; 168 | 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */ = { 169 | isa = PBXContainerItemProxy; 170 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 171 | proxyType = 2; 172 | remoteGlobalIDString = 2D2A28131D9B038B00D4039D; 173 | remoteInfo = "React-tvOS"; 174 | }; 175 | 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */ = { 176 | isa = PBXContainerItemProxy; 177 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 178 | proxyType = 2; 179 | remoteGlobalIDString = 3D3C059A1DE3340900C268FA; 180 | remoteInfo = yoga; 181 | }; 182 | 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */ = { 183 | isa = PBXContainerItemProxy; 184 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 185 | proxyType = 2; 186 | remoteGlobalIDString = 3D3C06751DE3340C00C268FA; 187 | remoteInfo = "yoga-tvOS"; 188 | }; 189 | 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */ = { 190 | isa = PBXContainerItemProxy; 191 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 192 | proxyType = 2; 193 | remoteGlobalIDString = 3D3CD9251DE5FBEC00167DC4; 194 | remoteInfo = cxxreact; 195 | }; 196 | 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */ = { 197 | isa = PBXContainerItemProxy; 198 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 199 | proxyType = 2; 200 | remoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4; 201 | remoteInfo = "cxxreact-tvOS"; 202 | }; 203 | 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */ = { 204 | isa = PBXContainerItemProxy; 205 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 206 | proxyType = 2; 207 | remoteGlobalIDString = 3D3CD90B1DE5FBD600167DC4; 208 | remoteInfo = jschelpers; 209 | }; 210 | 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */ = { 211 | isa = PBXContainerItemProxy; 212 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 213 | proxyType = 2; 214 | remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4; 215 | remoteInfo = "jschelpers-tvOS"; 216 | }; 217 | 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = { 218 | isa = PBXContainerItemProxy; 219 | containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; 220 | proxyType = 2; 221 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 222 | remoteInfo = RCTAnimation; 223 | }; 224 | 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = { 225 | isa = PBXContainerItemProxy; 226 | containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; 227 | proxyType = 2; 228 | remoteGlobalIDString = 2D2A28201D9B03D100D4039D; 229 | remoteInfo = "RCTAnimation-tvOS"; 230 | }; 231 | 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { 232 | isa = PBXContainerItemProxy; 233 | containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; 234 | proxyType = 2; 235 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 236 | remoteInfo = RCTLinking; 237 | }; 238 | 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { 239 | isa = PBXContainerItemProxy; 240 | containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; 241 | proxyType = 2; 242 | remoteGlobalIDString = 58B5119B1A9E6C1200147676; 243 | remoteInfo = RCTText; 244 | }; 245 | A6771D461F69B31B008EF48D /* PBXContainerItemProxy */ = { 246 | isa = PBXContainerItemProxy; 247 | containerPortal = 446882F42A2F49F9B07C53F5 /* RNI18n.xcodeproj */; 248 | proxyType = 2; 249 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 250 | remoteInfo = RNI18n; 251 | }; 252 | A6771D481F69B31B008EF48D /* PBXContainerItemProxy */ = { 253 | isa = PBXContainerItemProxy; 254 | containerPortal = 446882F42A2F49F9B07C53F5 /* RNI18n.xcodeproj */; 255 | proxyType = 2; 256 | remoteGlobalIDString = 6476C4051EEAA69700B10F51; 257 | remoteInfo = "RNI18n-tvOS"; 258 | }; 259 | B301B3F91F291A8E00A9A4F5 /* PBXContainerItemProxy */ = { 260 | isa = PBXContainerItemProxy; 261 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 262 | proxyType = 2; 263 | remoteGlobalIDString = 139D7ECE1E25DB7D00323FB7; 264 | remoteInfo = "third-party"; 265 | }; 266 | B301B3FB1F291A8E00A9A4F5 /* PBXContainerItemProxy */ = { 267 | isa = PBXContainerItemProxy; 268 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 269 | proxyType = 2; 270 | remoteGlobalIDString = 3D383D3C1EBD27B6005632C8; 271 | remoteInfo = "third-party-tvOS"; 272 | }; 273 | B301B3FD1F291A8E00A9A4F5 /* PBXContainerItemProxy */ = { 274 | isa = PBXContainerItemProxy; 275 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 276 | proxyType = 2; 277 | remoteGlobalIDString = 139D7E881E25C6D100323FB7; 278 | remoteInfo = "double-conversion"; 279 | }; 280 | B301B3FF1F291A8E00A9A4F5 /* PBXContainerItemProxy */ = { 281 | isa = PBXContainerItemProxy; 282 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 283 | proxyType = 2; 284 | remoteGlobalIDString = 3D383D621EBD27B9005632C8; 285 | remoteInfo = "double-conversion-tvOS"; 286 | }; 287 | B301B4021F291A8E00A9A4F5 /* PBXContainerItemProxy */ = { 288 | isa = PBXContainerItemProxy; 289 | containerPortal = C27096888F594FDB936543BA /* RNVectorIcons.xcodeproj */; 290 | proxyType = 2; 291 | remoteGlobalIDString = 5DBEB1501B18CEA900B34395; 292 | remoteInfo = RNVectorIcons; 293 | }; 294 | /* End PBXContainerItemProxy section */ 295 | 296 | /* Begin PBXFileReference section */ 297 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; 298 | 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; }; 299 | 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; }; 300 | 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; }; 301 | 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; }; 302 | 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; }; 303 | 00E356EE1AD99517003FC87E /* NoteTakerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NoteTakerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 304 | 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 305 | 00E356F21AD99517003FC87E /* NoteTakerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NoteTakerTests.m; sourceTree = ""; }; 306 | 1218583BF95A46BE918E699E /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = ""; }; 307 | 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; 308 | 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; 309 | 13B07F961A680F5B00A75B9A /* NoteTaker.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NoteTaker.app; sourceTree = BUILT_PRODUCTS_DIR; }; 310 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = NoteTaker/AppDelegate.h; sourceTree = ""; }; 311 | 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = NoteTaker/AppDelegate.m; sourceTree = ""; }; 312 | 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 313 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = NoteTaker/Images.xcassets; sourceTree = ""; }; 314 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = NoteTaker/Info.plist; sourceTree = ""; }; 315 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = NoteTaker/main.m; sourceTree = ""; }; 316 | 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; 317 | 26619238E3434BFDB85DA73B /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = SimpleLineIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = ""; }; 318 | 2A39C77059F443B287ACB3A0 /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = ""; }; 319 | 2D02E47B1E0B4A5D006451C7 /* NoteTaker-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "NoteTaker-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 320 | 2D02E4901E0B4A5D006451C7 /* NoteTaker-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "NoteTaker-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 321 | 446882F42A2F49F9B07C53F5 /* RNI18n.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNI18n.xcodeproj; path = "../node_modules/react-native-i18n/ios/RNI18n.xcodeproj"; sourceTree = ""; }; 322 | 5C8CDE30A4EC46FFAA08BF2D /* MaterialIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = ""; }; 323 | 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = ""; }; 324 | 7733A1189F3E452CA3FEF3A4 /* Zocial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Zocial.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = ""; }; 325 | 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; 326 | 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; 327 | 845C0EF45C2846348E2E5A94 /* notetaker.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = notetaker.ttf; path = ../resources/fonts/notetaker.ttf; sourceTree = ""; }; 328 | A6771D4B1F69B3BE008EF48D /* Device.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Device.h; path = NoteTaker/device/Device.h; sourceTree = ""; }; 329 | A6771D4C1F69B713008EF48D /* Device.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Device.m; path = NoteTaker/Device/Device.m; sourceTree = ""; }; 330 | BFA74F1A82F5454091CB5F41 /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = ""; }; 331 | C27096888F594FDB936543BA /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; }; 332 | CFCFF13E98804E1093D2EEC5 /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = ""; }; 333 | DE213A2CBB864CAC94F12902 /* Foundation.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Foundation.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = ""; }; 334 | EC1454D0E2FF4C3386BD884C /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialCommunityIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = ""; }; 335 | F0E528A6A4EA4042AD7F2C68 /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = ""; }; 336 | F83FB54448184B7E8DB88A37 /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = ""; }; 337 | FBE4AB5CED9F4A2F9641FE8F /* libRNI18n.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNI18n.a; sourceTree = ""; }; 338 | /* End PBXFileReference section */ 339 | 340 | /* Begin PBXFrameworksBuildPhase section */ 341 | 00E356EB1AD99517003FC87E /* Frameworks */ = { 342 | isa = PBXFrameworksBuildPhase; 343 | buildActionMask = 2147483647; 344 | files = ( 345 | 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */, 346 | ); 347 | runOnlyForDeploymentPostprocessing = 0; 348 | }; 349 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { 350 | isa = PBXFrameworksBuildPhase; 351 | buildActionMask = 2147483647; 352 | files = ( 353 | 146834051AC3E58100842450 /* libReact.a in Frameworks */, 354 | 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */, 355 | 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, 356 | 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, 357 | 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, 358 | 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */, 359 | 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, 360 | 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, 361 | 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, 362 | 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, 363 | 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, 364 | FDE5150E69454FAEAFBA6520 /* libRNVectorIcons.a in Frameworks */, 365 | 1754EA35BC424E039E4F67BE /* libRNI18n.a in Frameworks */, 366 | ); 367 | runOnlyForDeploymentPostprocessing = 0; 368 | }; 369 | 2D02E4781E0B4A5D006451C7 /* Frameworks */ = { 370 | isa = PBXFrameworksBuildPhase; 371 | buildActionMask = 2147483647; 372 | files = ( 373 | 2D02E4C91E0B4AEC006451C7 /* libReact.a in Frameworks */, 374 | 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */, 375 | 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */, 376 | 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */, 377 | 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */, 378 | 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */, 379 | 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */, 380 | 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */, 381 | ); 382 | runOnlyForDeploymentPostprocessing = 0; 383 | }; 384 | 2D02E48D1E0B4A5D006451C7 /* Frameworks */ = { 385 | isa = PBXFrameworksBuildPhase; 386 | buildActionMask = 2147483647; 387 | files = ( 388 | ); 389 | runOnlyForDeploymentPostprocessing = 0; 390 | }; 391 | /* End PBXFrameworksBuildPhase section */ 392 | 393 | /* Begin PBXGroup section */ 394 | 00C302A81ABCB8CE00DB3ED1 /* Products */ = { 395 | isa = PBXGroup; 396 | children = ( 397 | 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */, 398 | ); 399 | name = Products; 400 | sourceTree = ""; 401 | }; 402 | 00C302B61ABCB90400DB3ED1 /* Products */ = { 403 | isa = PBXGroup; 404 | children = ( 405 | 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */, 406 | ); 407 | name = Products; 408 | sourceTree = ""; 409 | }; 410 | 00C302BC1ABCB91800DB3ED1 /* Products */ = { 411 | isa = PBXGroup; 412 | children = ( 413 | 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */, 414 | 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */, 415 | ); 416 | name = Products; 417 | sourceTree = ""; 418 | }; 419 | 00C302D41ABCB9D200DB3ED1 /* Products */ = { 420 | isa = PBXGroup; 421 | children = ( 422 | 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */, 423 | 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */, 424 | ); 425 | name = Products; 426 | sourceTree = ""; 427 | }; 428 | 00C302E01ABCB9EE00DB3ED1 /* Products */ = { 429 | isa = PBXGroup; 430 | children = ( 431 | 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */, 432 | ); 433 | name = Products; 434 | sourceTree = ""; 435 | }; 436 | 00E356EF1AD99517003FC87E /* NoteTakerTests */ = { 437 | isa = PBXGroup; 438 | children = ( 439 | 00E356F21AD99517003FC87E /* NoteTakerTests.m */, 440 | 00E356F01AD99517003FC87E /* Supporting Files */, 441 | ); 442 | path = NoteTakerTests; 443 | sourceTree = ""; 444 | }; 445 | 00E356F01AD99517003FC87E /* Supporting Files */ = { 446 | isa = PBXGroup; 447 | children = ( 448 | 00E356F11AD99517003FC87E /* Info.plist */, 449 | ); 450 | name = "Supporting Files"; 451 | sourceTree = ""; 452 | }; 453 | 101D1DF32C7941ACABAAB25E /* Resources */ = { 454 | isa = PBXGroup; 455 | children = ( 456 | 1218583BF95A46BE918E699E /* Entypo.ttf */, 457 | F83FB54448184B7E8DB88A37 /* EvilIcons.ttf */, 458 | CFCFF13E98804E1093D2EEC5 /* FontAwesome.ttf */, 459 | DE213A2CBB864CAC94F12902 /* Foundation.ttf */, 460 | F0E528A6A4EA4042AD7F2C68 /* Ionicons.ttf */, 461 | EC1454D0E2FF4C3386BD884C /* MaterialCommunityIcons.ttf */, 462 | 5C8CDE30A4EC46FFAA08BF2D /* MaterialIcons.ttf */, 463 | BFA74F1A82F5454091CB5F41 /* Octicons.ttf */, 464 | 26619238E3434BFDB85DA73B /* SimpleLineIcons.ttf */, 465 | 7733A1189F3E452CA3FEF3A4 /* Zocial.ttf */, 466 | 845C0EF45C2846348E2E5A94 /* notetaker.ttf */, 467 | ); 468 | name = Resources; 469 | sourceTree = ""; 470 | }; 471 | 139105B71AF99BAD00B5F7CC /* Products */ = { 472 | isa = PBXGroup; 473 | children = ( 474 | 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */, 475 | 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */, 476 | ); 477 | name = Products; 478 | sourceTree = ""; 479 | }; 480 | 139FDEE71B06529A00C62182 /* Products */ = { 481 | isa = PBXGroup; 482 | children = ( 483 | 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, 484 | 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */, 485 | ); 486 | name = Products; 487 | sourceTree = ""; 488 | }; 489 | 13B07FAE1A68108700A75B9A /* NoteTaker */ = { 490 | isa = PBXGroup; 491 | children = ( 492 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */, 493 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 494 | 13B07FB01A68108700A75B9A /* AppDelegate.m */, 495 | 13B07FB51A68108700A75B9A /* Images.xcassets */, 496 | 13B07FB61A68108700A75B9A /* Info.plist */, 497 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, 498 | 13B07FB71A68108700A75B9A /* main.m */, 499 | ); 500 | name = NoteTaker; 501 | sourceTree = ""; 502 | }; 503 | 146834001AC3E56700842450 /* Products */ = { 504 | isa = PBXGroup; 505 | children = ( 506 | 146834041AC3E56700842450 /* libReact.a */, 507 | 3DAD3EA31DF850E9000B6D8A /* libReact.a */, 508 | 3DAD3EA51DF850E9000B6D8A /* libyoga.a */, 509 | 3DAD3EA71DF850E9000B6D8A /* libyoga.a */, 510 | 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */, 511 | 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */, 512 | 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */, 513 | 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */, 514 | B301B3FA1F291A8E00A9A4F5 /* libthird-party.a */, 515 | B301B3FC1F291A8E00A9A4F5 /* libthird-party.a */, 516 | B301B3FE1F291A8E00A9A4F5 /* libdouble-conversion.a */, 517 | B301B4001F291A8E00A9A4F5 /* libdouble-conversion.a */, 518 | ); 519 | name = Products; 520 | sourceTree = ""; 521 | }; 522 | 5E91572E1DD0AC6500FF2AA8 /* Products */ = { 523 | isa = PBXGroup; 524 | children = ( 525 | 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */, 526 | 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */, 527 | ); 528 | name = Products; 529 | sourceTree = ""; 530 | }; 531 | 78C398B11ACF4ADC00677621 /* Products */ = { 532 | isa = PBXGroup; 533 | children = ( 534 | 78C398B91ACF4ADC00677621 /* libRCTLinking.a */, 535 | 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */, 536 | ); 537 | name = Products; 538 | sourceTree = ""; 539 | }; 540 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = { 541 | isa = PBXGroup; 542 | children = ( 543 | 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */, 544 | 146833FF1AC3E56700842450 /* React.xcodeproj */, 545 | 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, 546 | 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, 547 | 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */, 548 | 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */, 549 | 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */, 550 | 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */, 551 | 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, 552 | 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, 553 | 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, 554 | C27096888F594FDB936543BA /* RNVectorIcons.xcodeproj */, 555 | 446882F42A2F49F9B07C53F5 /* RNI18n.xcodeproj */, 556 | ); 557 | name = Libraries; 558 | sourceTree = ""; 559 | }; 560 | 832341B11AAA6A8300B99B32 /* Products */ = { 561 | isa = PBXGroup; 562 | children = ( 563 | 832341B51AAA6A8300B99B32 /* libRCTText.a */, 564 | 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */, 565 | ); 566 | name = Products; 567 | sourceTree = ""; 568 | }; 569 | 83CBB9F61A601CBA00E9B192 = { 570 | isa = PBXGroup; 571 | children = ( 572 | A6771D4B1F69B3BE008EF48D /* Device.h */, 573 | A6771D4C1F69B713008EF48D /* Device.m */, 574 | 13B07FAE1A68108700A75B9A /* NoteTaker */, 575 | 832341AE1AAA6A7D00B99B32 /* Libraries */, 576 | 00E356EF1AD99517003FC87E /* NoteTakerTests */, 577 | 83CBBA001A601CBA00E9B192 /* Products */, 578 | 101D1DF32C7941ACABAAB25E /* Resources */, 579 | ); 580 | indentWidth = 2; 581 | sourceTree = ""; 582 | tabWidth = 2; 583 | }; 584 | 83CBBA001A601CBA00E9B192 /* Products */ = { 585 | isa = PBXGroup; 586 | children = ( 587 | 13B07F961A680F5B00A75B9A /* NoteTaker.app */, 588 | 00E356EE1AD99517003FC87E /* NoteTakerTests.xctest */, 589 | 2D02E47B1E0B4A5D006451C7 /* NoteTaker-tvOS.app */, 590 | 2D02E4901E0B4A5D006451C7 /* NoteTaker-tvOSTests.xctest */, 591 | ); 592 | name = Products; 593 | sourceTree = ""; 594 | }; 595 | A6771D251F69B31B008EF48D /* Products */ = { 596 | isa = PBXGroup; 597 | children = ( 598 | A6771D471F69B31B008EF48D /* libRNI18n.a */, 599 | A6771D491F69B31B008EF48D /* libRNI18n-tvOS.a */, 600 | ); 601 | name = Products; 602 | sourceTree = ""; 603 | }; 604 | B301B3DA1F291A8D00A9A4F5 /* Products */ = { 605 | isa = PBXGroup; 606 | children = ( 607 | B301B4031F291A8E00A9A4F5 /* libRNVectorIcons.a */, 608 | ); 609 | name = Products; 610 | sourceTree = ""; 611 | }; 612 | /* End PBXGroup section */ 613 | 614 | /* Begin PBXNativeTarget section */ 615 | 00E356ED1AD99517003FC87E /* NoteTakerTests */ = { 616 | isa = PBXNativeTarget; 617 | buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "NoteTakerTests" */; 618 | buildPhases = ( 619 | 00E356EA1AD99517003FC87E /* Sources */, 620 | 00E356EB1AD99517003FC87E /* Frameworks */, 621 | 00E356EC1AD99517003FC87E /* Resources */, 622 | ); 623 | buildRules = ( 624 | ); 625 | dependencies = ( 626 | 00E356F51AD99517003FC87E /* PBXTargetDependency */, 627 | ); 628 | name = NoteTakerTests; 629 | productName = NoteTakerTests; 630 | productReference = 00E356EE1AD99517003FC87E /* NoteTakerTests.xctest */; 631 | productType = "com.apple.product-type.bundle.unit-test"; 632 | }; 633 | 13B07F861A680F5B00A75B9A /* NoteTaker */ = { 634 | isa = PBXNativeTarget; 635 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "NoteTaker" */; 636 | buildPhases = ( 637 | 13B07F871A680F5B00A75B9A /* Sources */, 638 | 13B07F8C1A680F5B00A75B9A /* Frameworks */, 639 | 13B07F8E1A680F5B00A75B9A /* Resources */, 640 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 641 | ); 642 | buildRules = ( 643 | ); 644 | dependencies = ( 645 | ); 646 | name = NoteTaker; 647 | productName = "Hello World"; 648 | productReference = 13B07F961A680F5B00A75B9A /* NoteTaker.app */; 649 | productType = "com.apple.product-type.application"; 650 | }; 651 | 2D02E47A1E0B4A5D006451C7 /* NoteTaker-tvOS */ = { 652 | isa = PBXNativeTarget; 653 | buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "NoteTaker-tvOS" */; 654 | buildPhases = ( 655 | 2D02E4771E0B4A5D006451C7 /* Sources */, 656 | 2D02E4781E0B4A5D006451C7 /* Frameworks */, 657 | 2D02E4791E0B4A5D006451C7 /* Resources */, 658 | 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */, 659 | ); 660 | buildRules = ( 661 | ); 662 | dependencies = ( 663 | ); 664 | name = "NoteTaker-tvOS"; 665 | productName = "NoteTaker-tvOS"; 666 | productReference = 2D02E47B1E0B4A5D006451C7 /* NoteTaker-tvOS.app */; 667 | productType = "com.apple.product-type.application"; 668 | }; 669 | 2D02E48F1E0B4A5D006451C7 /* NoteTaker-tvOSTests */ = { 670 | isa = PBXNativeTarget; 671 | buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "NoteTaker-tvOSTests" */; 672 | buildPhases = ( 673 | 2D02E48C1E0B4A5D006451C7 /* Sources */, 674 | 2D02E48D1E0B4A5D006451C7 /* Frameworks */, 675 | 2D02E48E1E0B4A5D006451C7 /* Resources */, 676 | ); 677 | buildRules = ( 678 | ); 679 | dependencies = ( 680 | 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */, 681 | ); 682 | name = "NoteTaker-tvOSTests"; 683 | productName = "NoteTaker-tvOSTests"; 684 | productReference = 2D02E4901E0B4A5D006451C7 /* NoteTaker-tvOSTests.xctest */; 685 | productType = "com.apple.product-type.bundle.unit-test"; 686 | }; 687 | /* End PBXNativeTarget section */ 688 | 689 | /* Begin PBXProject section */ 690 | 83CBB9F71A601CBA00E9B192 /* Project object */ = { 691 | isa = PBXProject; 692 | attributes = { 693 | LastUpgradeCheck = 610; 694 | ORGANIZATIONNAME = Facebook; 695 | TargetAttributes = { 696 | 00E356ED1AD99517003FC87E = { 697 | CreatedOnToolsVersion = 6.2; 698 | TestTargetID = 13B07F861A680F5B00A75B9A; 699 | }; 700 | 2D02E47A1E0B4A5D006451C7 = { 701 | CreatedOnToolsVersion = 8.2.1; 702 | ProvisioningStyle = Automatic; 703 | }; 704 | 2D02E48F1E0B4A5D006451C7 = { 705 | CreatedOnToolsVersion = 8.2.1; 706 | ProvisioningStyle = Automatic; 707 | TestTargetID = 2D02E47A1E0B4A5D006451C7; 708 | }; 709 | }; 710 | }; 711 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "NoteTaker" */; 712 | compatibilityVersion = "Xcode 3.2"; 713 | developmentRegion = English; 714 | hasScannedForEncodings = 0; 715 | knownRegions = ( 716 | en, 717 | Base, 718 | ); 719 | mainGroup = 83CBB9F61A601CBA00E9B192; 720 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; 721 | projectDirPath = ""; 722 | projectReferences = ( 723 | { 724 | ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */; 725 | ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; 726 | }, 727 | { 728 | ProductGroup = 5E91572E1DD0AC6500FF2AA8 /* Products */; 729 | ProjectRef = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; 730 | }, 731 | { 732 | ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; 733 | ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; 734 | }, 735 | { 736 | ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */; 737 | ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; 738 | }, 739 | { 740 | ProductGroup = 78C398B11ACF4ADC00677621 /* Products */; 741 | ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; 742 | }, 743 | { 744 | ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */; 745 | ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; 746 | }, 747 | { 748 | ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */; 749 | ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; 750 | }, 751 | { 752 | ProductGroup = 832341B11AAA6A8300B99B32 /* Products */; 753 | ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; 754 | }, 755 | { 756 | ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */; 757 | ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; 758 | }, 759 | { 760 | ProductGroup = 139FDEE71B06529A00C62182 /* Products */; 761 | ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; 762 | }, 763 | { 764 | ProductGroup = 146834001AC3E56700842450 /* Products */; 765 | ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; 766 | }, 767 | { 768 | ProductGroup = A6771D251F69B31B008EF48D /* Products */; 769 | ProjectRef = 446882F42A2F49F9B07C53F5 /* RNI18n.xcodeproj */; 770 | }, 771 | { 772 | ProductGroup = B301B3DA1F291A8D00A9A4F5 /* Products */; 773 | ProjectRef = C27096888F594FDB936543BA /* RNVectorIcons.xcodeproj */; 774 | }, 775 | ); 776 | projectRoot = ""; 777 | targets = ( 778 | 13B07F861A680F5B00A75B9A /* NoteTaker */, 779 | 00E356ED1AD99517003FC87E /* NoteTakerTests */, 780 | 2D02E47A1E0B4A5D006451C7 /* NoteTaker-tvOS */, 781 | 2D02E48F1E0B4A5D006451C7 /* NoteTaker-tvOSTests */, 782 | ); 783 | }; 784 | /* End PBXProject section */ 785 | 786 | /* Begin PBXReferenceProxy section */ 787 | 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = { 788 | isa = PBXReferenceProxy; 789 | fileType = archive.ar; 790 | path = libRCTActionSheet.a; 791 | remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */; 792 | sourceTree = BUILT_PRODUCTS_DIR; 793 | }; 794 | 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = { 795 | isa = PBXReferenceProxy; 796 | fileType = archive.ar; 797 | path = libRCTGeolocation.a; 798 | remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */; 799 | sourceTree = BUILT_PRODUCTS_DIR; 800 | }; 801 | 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = { 802 | isa = PBXReferenceProxy; 803 | fileType = archive.ar; 804 | path = libRCTImage.a; 805 | remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */; 806 | sourceTree = BUILT_PRODUCTS_DIR; 807 | }; 808 | 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = { 809 | isa = PBXReferenceProxy; 810 | fileType = archive.ar; 811 | path = libRCTNetwork.a; 812 | remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */; 813 | sourceTree = BUILT_PRODUCTS_DIR; 814 | }; 815 | 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = { 816 | isa = PBXReferenceProxy; 817 | fileType = archive.ar; 818 | path = libRCTVibration.a; 819 | remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */; 820 | sourceTree = BUILT_PRODUCTS_DIR; 821 | }; 822 | 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = { 823 | isa = PBXReferenceProxy; 824 | fileType = archive.ar; 825 | path = libRCTSettings.a; 826 | remoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */; 827 | sourceTree = BUILT_PRODUCTS_DIR; 828 | }; 829 | 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = { 830 | isa = PBXReferenceProxy; 831 | fileType = archive.ar; 832 | path = libRCTWebSocket.a; 833 | remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */; 834 | sourceTree = BUILT_PRODUCTS_DIR; 835 | }; 836 | 146834041AC3E56700842450 /* libReact.a */ = { 837 | isa = PBXReferenceProxy; 838 | fileType = archive.ar; 839 | path = libReact.a; 840 | remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; 841 | sourceTree = BUILT_PRODUCTS_DIR; 842 | }; 843 | 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = { 844 | isa = PBXReferenceProxy; 845 | fileType = archive.ar; 846 | path = "libRCTImage-tvOS.a"; 847 | remoteRef = 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */; 848 | sourceTree = BUILT_PRODUCTS_DIR; 849 | }; 850 | 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */ = { 851 | isa = PBXReferenceProxy; 852 | fileType = archive.ar; 853 | path = "libRCTLinking-tvOS.a"; 854 | remoteRef = 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */; 855 | sourceTree = BUILT_PRODUCTS_DIR; 856 | }; 857 | 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */ = { 858 | isa = PBXReferenceProxy; 859 | fileType = archive.ar; 860 | path = "libRCTNetwork-tvOS.a"; 861 | remoteRef = 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */; 862 | sourceTree = BUILT_PRODUCTS_DIR; 863 | }; 864 | 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */ = { 865 | isa = PBXReferenceProxy; 866 | fileType = archive.ar; 867 | path = "libRCTSettings-tvOS.a"; 868 | remoteRef = 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */; 869 | sourceTree = BUILT_PRODUCTS_DIR; 870 | }; 871 | 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */ = { 872 | isa = PBXReferenceProxy; 873 | fileType = archive.ar; 874 | path = "libRCTText-tvOS.a"; 875 | remoteRef = 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */; 876 | sourceTree = BUILT_PRODUCTS_DIR; 877 | }; 878 | 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */ = { 879 | isa = PBXReferenceProxy; 880 | fileType = archive.ar; 881 | path = "libRCTWebSocket-tvOS.a"; 882 | remoteRef = 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */; 883 | sourceTree = BUILT_PRODUCTS_DIR; 884 | }; 885 | 3DAD3EA31DF850E9000B6D8A /* libReact.a */ = { 886 | isa = PBXReferenceProxy; 887 | fileType = archive.ar; 888 | path = libReact.a; 889 | remoteRef = 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */; 890 | sourceTree = BUILT_PRODUCTS_DIR; 891 | }; 892 | 3DAD3EA51DF850E9000B6D8A /* libyoga.a */ = { 893 | isa = PBXReferenceProxy; 894 | fileType = archive.ar; 895 | path = libyoga.a; 896 | remoteRef = 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */; 897 | sourceTree = BUILT_PRODUCTS_DIR; 898 | }; 899 | 3DAD3EA71DF850E9000B6D8A /* libyoga.a */ = { 900 | isa = PBXReferenceProxy; 901 | fileType = archive.ar; 902 | path = libyoga.a; 903 | remoteRef = 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */; 904 | sourceTree = BUILT_PRODUCTS_DIR; 905 | }; 906 | 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */ = { 907 | isa = PBXReferenceProxy; 908 | fileType = archive.ar; 909 | path = libcxxreact.a; 910 | remoteRef = 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */; 911 | sourceTree = BUILT_PRODUCTS_DIR; 912 | }; 913 | 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */ = { 914 | isa = PBXReferenceProxy; 915 | fileType = archive.ar; 916 | path = libcxxreact.a; 917 | remoteRef = 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */; 918 | sourceTree = BUILT_PRODUCTS_DIR; 919 | }; 920 | 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */ = { 921 | isa = PBXReferenceProxy; 922 | fileType = archive.ar; 923 | path = libjschelpers.a; 924 | remoteRef = 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */; 925 | sourceTree = BUILT_PRODUCTS_DIR; 926 | }; 927 | 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */ = { 928 | isa = PBXReferenceProxy; 929 | fileType = archive.ar; 930 | path = libjschelpers.a; 931 | remoteRef = 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */; 932 | sourceTree = BUILT_PRODUCTS_DIR; 933 | }; 934 | 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = { 935 | isa = PBXReferenceProxy; 936 | fileType = archive.ar; 937 | path = libRCTAnimation.a; 938 | remoteRef = 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */; 939 | sourceTree = BUILT_PRODUCTS_DIR; 940 | }; 941 | 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */ = { 942 | isa = PBXReferenceProxy; 943 | fileType = archive.ar; 944 | path = libRCTAnimation.a; 945 | remoteRef = 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */; 946 | sourceTree = BUILT_PRODUCTS_DIR; 947 | }; 948 | 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { 949 | isa = PBXReferenceProxy; 950 | fileType = archive.ar; 951 | path = libRCTLinking.a; 952 | remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */; 953 | sourceTree = BUILT_PRODUCTS_DIR; 954 | }; 955 | 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { 956 | isa = PBXReferenceProxy; 957 | fileType = archive.ar; 958 | path = libRCTText.a; 959 | remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; 960 | sourceTree = BUILT_PRODUCTS_DIR; 961 | }; 962 | A6771D471F69B31B008EF48D /* libRNI18n.a */ = { 963 | isa = PBXReferenceProxy; 964 | fileType = archive.ar; 965 | path = libRNI18n.a; 966 | remoteRef = A6771D461F69B31B008EF48D /* PBXContainerItemProxy */; 967 | sourceTree = BUILT_PRODUCTS_DIR; 968 | }; 969 | A6771D491F69B31B008EF48D /* libRNI18n-tvOS.a */ = { 970 | isa = PBXReferenceProxy; 971 | fileType = archive.ar; 972 | path = "libRNI18n-tvOS.a"; 973 | remoteRef = A6771D481F69B31B008EF48D /* PBXContainerItemProxy */; 974 | sourceTree = BUILT_PRODUCTS_DIR; 975 | }; 976 | B301B3FA1F291A8E00A9A4F5 /* libthird-party.a */ = { 977 | isa = PBXReferenceProxy; 978 | fileType = archive.ar; 979 | path = "libthird-party.a"; 980 | remoteRef = B301B3F91F291A8E00A9A4F5 /* PBXContainerItemProxy */; 981 | sourceTree = BUILT_PRODUCTS_DIR; 982 | }; 983 | B301B3FC1F291A8E00A9A4F5 /* libthird-party.a */ = { 984 | isa = PBXReferenceProxy; 985 | fileType = archive.ar; 986 | path = "libthird-party.a"; 987 | remoteRef = B301B3FB1F291A8E00A9A4F5 /* PBXContainerItemProxy */; 988 | sourceTree = BUILT_PRODUCTS_DIR; 989 | }; 990 | B301B3FE1F291A8E00A9A4F5 /* libdouble-conversion.a */ = { 991 | isa = PBXReferenceProxy; 992 | fileType = archive.ar; 993 | path = "libdouble-conversion.a"; 994 | remoteRef = B301B3FD1F291A8E00A9A4F5 /* PBXContainerItemProxy */; 995 | sourceTree = BUILT_PRODUCTS_DIR; 996 | }; 997 | B301B4001F291A8E00A9A4F5 /* libdouble-conversion.a */ = { 998 | isa = PBXReferenceProxy; 999 | fileType = archive.ar; 1000 | path = "libdouble-conversion.a"; 1001 | remoteRef = B301B3FF1F291A8E00A9A4F5 /* PBXContainerItemProxy */; 1002 | sourceTree = BUILT_PRODUCTS_DIR; 1003 | }; 1004 | B301B4031F291A8E00A9A4F5 /* libRNVectorIcons.a */ = { 1005 | isa = PBXReferenceProxy; 1006 | fileType = archive.ar; 1007 | path = libRNVectorIcons.a; 1008 | remoteRef = B301B4021F291A8E00A9A4F5 /* PBXContainerItemProxy */; 1009 | sourceTree = BUILT_PRODUCTS_DIR; 1010 | }; 1011 | /* End PBXReferenceProxy section */ 1012 | 1013 | /* Begin PBXResourcesBuildPhase section */ 1014 | 00E356EC1AD99517003FC87E /* Resources */ = { 1015 | isa = PBXResourcesBuildPhase; 1016 | buildActionMask = 2147483647; 1017 | files = ( 1018 | ); 1019 | runOnlyForDeploymentPostprocessing = 0; 1020 | }; 1021 | 13B07F8E1A680F5B00A75B9A /* Resources */ = { 1022 | isa = PBXResourcesBuildPhase; 1023 | buildActionMask = 2147483647; 1024 | files = ( 1025 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 1026 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, 1027 | 9241FB3B338646C6869409FB /* Entypo.ttf in Resources */, 1028 | A96EBA443E244A0D82A5AA7E /* EvilIcons.ttf in Resources */, 1029 | 0FD9E767CE03470096B679C4 /* FontAwesome.ttf in Resources */, 1030 | 08EDC9C47FBF4E66BF46D3D4 /* Foundation.ttf in Resources */, 1031 | BCAD3753EDAE4C3EB2AF2FB7 /* Ionicons.ttf in Resources */, 1032 | 0A16BF78F72B4258BDAEDF82 /* MaterialCommunityIcons.ttf in Resources */, 1033 | D287C90B74594D3F962CC4FE /* MaterialIcons.ttf in Resources */, 1034 | B85DA9B92D3040F080B932D6 /* Octicons.ttf in Resources */, 1035 | 1C6BCB4A01844B88AE219FCF /* SimpleLineIcons.ttf in Resources */, 1036 | 02C9450D85EE409C805DAC1B /* Zocial.ttf in Resources */, 1037 | A48A4F94E8A1482A87CF277C /* notetaker.ttf in Resources */, 1038 | ); 1039 | runOnlyForDeploymentPostprocessing = 0; 1040 | }; 1041 | 2D02E4791E0B4A5D006451C7 /* Resources */ = { 1042 | isa = PBXResourcesBuildPhase; 1043 | buildActionMask = 2147483647; 1044 | files = ( 1045 | 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */, 1046 | ); 1047 | runOnlyForDeploymentPostprocessing = 0; 1048 | }; 1049 | 2D02E48E1E0B4A5D006451C7 /* Resources */ = { 1050 | isa = PBXResourcesBuildPhase; 1051 | buildActionMask = 2147483647; 1052 | files = ( 1053 | ); 1054 | runOnlyForDeploymentPostprocessing = 0; 1055 | }; 1056 | /* End PBXResourcesBuildPhase section */ 1057 | 1058 | /* Begin PBXShellScriptBuildPhase section */ 1059 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { 1060 | isa = PBXShellScriptBuildPhase; 1061 | buildActionMask = 2147483647; 1062 | files = ( 1063 | ); 1064 | inputPaths = ( 1065 | ); 1066 | name = "Bundle React Native code and images"; 1067 | outputPaths = ( 1068 | ); 1069 | runOnlyForDeploymentPostprocessing = 0; 1070 | shellPath = /bin/sh; 1071 | shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; 1072 | }; 1073 | 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { 1074 | isa = PBXShellScriptBuildPhase; 1075 | buildActionMask = 2147483647; 1076 | files = ( 1077 | ); 1078 | inputPaths = ( 1079 | ); 1080 | name = "Bundle React Native Code And Images"; 1081 | outputPaths = ( 1082 | ); 1083 | runOnlyForDeploymentPostprocessing = 0; 1084 | shellPath = /bin/sh; 1085 | shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; 1086 | }; 1087 | /* End PBXShellScriptBuildPhase section */ 1088 | 1089 | /* Begin PBXSourcesBuildPhase section */ 1090 | 00E356EA1AD99517003FC87E /* Sources */ = { 1091 | isa = PBXSourcesBuildPhase; 1092 | buildActionMask = 2147483647; 1093 | files = ( 1094 | 00E356F31AD99517003FC87E /* NoteTakerTests.m in Sources */, 1095 | ); 1096 | runOnlyForDeploymentPostprocessing = 0; 1097 | }; 1098 | 13B07F871A680F5B00A75B9A /* Sources */ = { 1099 | isa = PBXSourcesBuildPhase; 1100 | buildActionMask = 2147483647; 1101 | files = ( 1102 | A6771D4D1F69B713008EF48D /* Device.m in Sources */, 1103 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, 1104 | 13B07FC11A68108700A75B9A /* main.m in Sources */, 1105 | ); 1106 | runOnlyForDeploymentPostprocessing = 0; 1107 | }; 1108 | 2D02E4771E0B4A5D006451C7 /* Sources */ = { 1109 | isa = PBXSourcesBuildPhase; 1110 | buildActionMask = 2147483647; 1111 | files = ( 1112 | 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */, 1113 | 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */, 1114 | ); 1115 | runOnlyForDeploymentPostprocessing = 0; 1116 | }; 1117 | 2D02E48C1E0B4A5D006451C7 /* Sources */ = { 1118 | isa = PBXSourcesBuildPhase; 1119 | buildActionMask = 2147483647; 1120 | files = ( 1121 | 2DCD954D1E0B4F2C00145EB5 /* NoteTakerTests.m in Sources */, 1122 | ); 1123 | runOnlyForDeploymentPostprocessing = 0; 1124 | }; 1125 | /* End PBXSourcesBuildPhase section */ 1126 | 1127 | /* Begin PBXTargetDependency section */ 1128 | 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { 1129 | isa = PBXTargetDependency; 1130 | target = 13B07F861A680F5B00A75B9A /* NoteTaker */; 1131 | targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; 1132 | }; 1133 | 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = { 1134 | isa = PBXTargetDependency; 1135 | target = 2D02E47A1E0B4A5D006451C7 /* NoteTaker-tvOS */; 1136 | targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */; 1137 | }; 1138 | /* End PBXTargetDependency section */ 1139 | 1140 | /* Begin PBXVariantGroup section */ 1141 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { 1142 | isa = PBXVariantGroup; 1143 | children = ( 1144 | 13B07FB21A68108700A75B9A /* Base */, 1145 | ); 1146 | name = LaunchScreen.xib; 1147 | path = NoteTaker; 1148 | sourceTree = ""; 1149 | }; 1150 | /* End PBXVariantGroup section */ 1151 | 1152 | /* Begin XCBuildConfiguration section */ 1153 | 00E356F61AD99517003FC87E /* Debug */ = { 1154 | isa = XCBuildConfiguration; 1155 | buildSettings = { 1156 | BUNDLE_LOADER = "$(TEST_HOST)"; 1157 | GCC_PREPROCESSOR_DEFINITIONS = ( 1158 | "DEBUG=1", 1159 | "$(inherited)", 1160 | ); 1161 | HEADER_SEARCH_PATHS = ( 1162 | "$(inherited)", 1163 | "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", 1164 | "$(SRCROOT)/../node_modules/react-native-i18n/ios", 1165 | ); 1166 | INFOPLIST_FILE = NoteTakerTests/Info.plist; 1167 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 1168 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1169 | LIBRARY_SEARCH_PATHS = ( 1170 | "$(inherited)", 1171 | "\"$(SRCROOT)/$(TARGET_NAME)\"", 1172 | "\"$(SRCROOT)/$(TARGET_NAME)\"", 1173 | ); 1174 | OTHER_LDFLAGS = ( 1175 | "-ObjC", 1176 | "-lc++", 1177 | ); 1178 | PRODUCT_NAME = "$(TARGET_NAME)"; 1179 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NoteTaker.app/NoteTaker"; 1180 | }; 1181 | name = Debug; 1182 | }; 1183 | 00E356F71AD99517003FC87E /* Release */ = { 1184 | isa = XCBuildConfiguration; 1185 | buildSettings = { 1186 | BUNDLE_LOADER = "$(TEST_HOST)"; 1187 | COPY_PHASE_STRIP = NO; 1188 | HEADER_SEARCH_PATHS = ( 1189 | "$(inherited)", 1190 | "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", 1191 | "$(SRCROOT)/../node_modules/react-native-i18n/ios", 1192 | ); 1193 | INFOPLIST_FILE = NoteTakerTests/Info.plist; 1194 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 1195 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1196 | LIBRARY_SEARCH_PATHS = ( 1197 | "$(inherited)", 1198 | "\"$(SRCROOT)/$(TARGET_NAME)\"", 1199 | "\"$(SRCROOT)/$(TARGET_NAME)\"", 1200 | ); 1201 | OTHER_LDFLAGS = ( 1202 | "-ObjC", 1203 | "-lc++", 1204 | ); 1205 | PRODUCT_NAME = "$(TARGET_NAME)"; 1206 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NoteTaker.app/NoteTaker"; 1207 | }; 1208 | name = Release; 1209 | }; 1210 | 13B07F941A680F5B00A75B9A /* Debug */ = { 1211 | isa = XCBuildConfiguration; 1212 | buildSettings = { 1213 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 1214 | CURRENT_PROJECT_VERSION = 1; 1215 | DEAD_CODE_STRIPPING = NO; 1216 | HEADER_SEARCH_PATHS = ( 1217 | "$(inherited)", 1218 | "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", 1219 | "$(SRCROOT)/../node_modules/react-native-i18n/ios", 1220 | ); 1221 | INFOPLIST_FILE = NoteTaker/Info.plist; 1222 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1223 | OTHER_LDFLAGS = ( 1224 | "$(inherited)", 1225 | "-ObjC", 1226 | "-lc++", 1227 | ); 1228 | PRODUCT_NAME = NoteTaker; 1229 | VERSIONING_SYSTEM = "apple-generic"; 1230 | }; 1231 | name = Debug; 1232 | }; 1233 | 13B07F951A680F5B00A75B9A /* Release */ = { 1234 | isa = XCBuildConfiguration; 1235 | buildSettings = { 1236 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 1237 | CURRENT_PROJECT_VERSION = 1; 1238 | HEADER_SEARCH_PATHS = ( 1239 | "$(inherited)", 1240 | "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", 1241 | "$(SRCROOT)/../node_modules/react-native-i18n/ios", 1242 | ); 1243 | INFOPLIST_FILE = NoteTaker/Info.plist; 1244 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1245 | OTHER_LDFLAGS = ( 1246 | "$(inherited)", 1247 | "-ObjC", 1248 | "-lc++", 1249 | ); 1250 | PRODUCT_NAME = NoteTaker; 1251 | VERSIONING_SYSTEM = "apple-generic"; 1252 | }; 1253 | name = Release; 1254 | }; 1255 | 2D02E4971E0B4A5E006451C7 /* Debug */ = { 1256 | isa = XCBuildConfiguration; 1257 | buildSettings = { 1258 | ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; 1259 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 1260 | CLANG_ANALYZER_NONNULL = YES; 1261 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 1262 | CLANG_WARN_INFINITE_RECURSION = YES; 1263 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 1264 | DEBUG_INFORMATION_FORMAT = dwarf; 1265 | ENABLE_TESTABILITY = YES; 1266 | GCC_NO_COMMON_BLOCKS = YES; 1267 | HEADER_SEARCH_PATHS = ( 1268 | "$(inherited)", 1269 | "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", 1270 | "$(SRCROOT)/../node_modules/react-native-i18n/ios", 1271 | ); 1272 | INFOPLIST_FILE = "NoteTaker-tvOS/Info.plist"; 1273 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1274 | LIBRARY_SEARCH_PATHS = ( 1275 | "$(inherited)", 1276 | "\"$(SRCROOT)/$(TARGET_NAME)\"", 1277 | "\"$(SRCROOT)/$(TARGET_NAME)\"", 1278 | ); 1279 | OTHER_LDFLAGS = ( 1280 | "-ObjC", 1281 | "-lc++", 1282 | ); 1283 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.NoteTaker-tvOS"; 1284 | PRODUCT_NAME = "$(TARGET_NAME)"; 1285 | SDKROOT = appletvos; 1286 | TARGETED_DEVICE_FAMILY = 3; 1287 | TVOS_DEPLOYMENT_TARGET = 9.2; 1288 | }; 1289 | name = Debug; 1290 | }; 1291 | 2D02E4981E0B4A5E006451C7 /* Release */ = { 1292 | isa = XCBuildConfiguration; 1293 | buildSettings = { 1294 | ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; 1295 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 1296 | CLANG_ANALYZER_NONNULL = YES; 1297 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 1298 | CLANG_WARN_INFINITE_RECURSION = YES; 1299 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 1300 | COPY_PHASE_STRIP = NO; 1301 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 1302 | GCC_NO_COMMON_BLOCKS = YES; 1303 | HEADER_SEARCH_PATHS = ( 1304 | "$(inherited)", 1305 | "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", 1306 | "$(SRCROOT)/../node_modules/react-native-i18n/ios", 1307 | ); 1308 | INFOPLIST_FILE = "NoteTaker-tvOS/Info.plist"; 1309 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1310 | LIBRARY_SEARCH_PATHS = ( 1311 | "$(inherited)", 1312 | "\"$(SRCROOT)/$(TARGET_NAME)\"", 1313 | "\"$(SRCROOT)/$(TARGET_NAME)\"", 1314 | ); 1315 | OTHER_LDFLAGS = ( 1316 | "-ObjC", 1317 | "-lc++", 1318 | ); 1319 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.NoteTaker-tvOS"; 1320 | PRODUCT_NAME = "$(TARGET_NAME)"; 1321 | SDKROOT = appletvos; 1322 | TARGETED_DEVICE_FAMILY = 3; 1323 | TVOS_DEPLOYMENT_TARGET = 9.2; 1324 | }; 1325 | name = Release; 1326 | }; 1327 | 2D02E4991E0B4A5E006451C7 /* Debug */ = { 1328 | isa = XCBuildConfiguration; 1329 | buildSettings = { 1330 | BUNDLE_LOADER = "$(TEST_HOST)"; 1331 | CLANG_ANALYZER_NONNULL = YES; 1332 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 1333 | CLANG_WARN_INFINITE_RECURSION = YES; 1334 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 1335 | DEBUG_INFORMATION_FORMAT = dwarf; 1336 | ENABLE_TESTABILITY = YES; 1337 | GCC_NO_COMMON_BLOCKS = YES; 1338 | INFOPLIST_FILE = "NoteTaker-tvOSTests/Info.plist"; 1339 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1340 | LIBRARY_SEARCH_PATHS = ( 1341 | "$(inherited)", 1342 | "\"$(SRCROOT)/$(TARGET_NAME)\"", 1343 | "\"$(SRCROOT)/$(TARGET_NAME)\"", 1344 | ); 1345 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.NoteTaker-tvOSTests"; 1346 | PRODUCT_NAME = "$(TARGET_NAME)"; 1347 | SDKROOT = appletvos; 1348 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NoteTaker-tvOS.app/NoteTaker-tvOS"; 1349 | TVOS_DEPLOYMENT_TARGET = 10.1; 1350 | }; 1351 | name = Debug; 1352 | }; 1353 | 2D02E49A1E0B4A5E006451C7 /* Release */ = { 1354 | isa = XCBuildConfiguration; 1355 | buildSettings = { 1356 | BUNDLE_LOADER = "$(TEST_HOST)"; 1357 | CLANG_ANALYZER_NONNULL = YES; 1358 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 1359 | CLANG_WARN_INFINITE_RECURSION = YES; 1360 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 1361 | COPY_PHASE_STRIP = NO; 1362 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 1363 | GCC_NO_COMMON_BLOCKS = YES; 1364 | INFOPLIST_FILE = "NoteTaker-tvOSTests/Info.plist"; 1365 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1366 | LIBRARY_SEARCH_PATHS = ( 1367 | "$(inherited)", 1368 | "\"$(SRCROOT)/$(TARGET_NAME)\"", 1369 | "\"$(SRCROOT)/$(TARGET_NAME)\"", 1370 | ); 1371 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.NoteTaker-tvOSTests"; 1372 | PRODUCT_NAME = "$(TARGET_NAME)"; 1373 | SDKROOT = appletvos; 1374 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NoteTaker-tvOS.app/NoteTaker-tvOS"; 1375 | TVOS_DEPLOYMENT_TARGET = 10.1; 1376 | }; 1377 | name = Release; 1378 | }; 1379 | 83CBBA201A601CBA00E9B192 /* Debug */ = { 1380 | isa = XCBuildConfiguration; 1381 | buildSettings = { 1382 | ALWAYS_SEARCH_USER_PATHS = NO; 1383 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 1384 | CLANG_CXX_LIBRARY = "libc++"; 1385 | CLANG_ENABLE_MODULES = YES; 1386 | CLANG_ENABLE_OBJC_ARC = YES; 1387 | CLANG_WARN_BOOL_CONVERSION = YES; 1388 | CLANG_WARN_CONSTANT_CONVERSION = YES; 1389 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 1390 | CLANG_WARN_EMPTY_BODY = YES; 1391 | CLANG_WARN_ENUM_CONVERSION = YES; 1392 | CLANG_WARN_INT_CONVERSION = YES; 1393 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 1394 | CLANG_WARN_UNREACHABLE_CODE = YES; 1395 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 1396 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1397 | COPY_PHASE_STRIP = NO; 1398 | ENABLE_STRICT_OBJC_MSGSEND = YES; 1399 | GCC_C_LANGUAGE_STANDARD = gnu99; 1400 | GCC_DYNAMIC_NO_PIC = NO; 1401 | GCC_OPTIMIZATION_LEVEL = 0; 1402 | GCC_PREPROCESSOR_DEFINITIONS = ( 1403 | "DEBUG=1", 1404 | "$(inherited)", 1405 | ); 1406 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 1407 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 1408 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 1409 | GCC_WARN_UNDECLARED_SELECTOR = YES; 1410 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 1411 | GCC_WARN_UNUSED_FUNCTION = YES; 1412 | GCC_WARN_UNUSED_VARIABLE = YES; 1413 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 1414 | MTL_ENABLE_DEBUG_INFO = YES; 1415 | ONLY_ACTIVE_ARCH = YES; 1416 | SDKROOT = iphoneos; 1417 | }; 1418 | name = Debug; 1419 | }; 1420 | 83CBBA211A601CBA00E9B192 /* Release */ = { 1421 | isa = XCBuildConfiguration; 1422 | buildSettings = { 1423 | ALWAYS_SEARCH_USER_PATHS = NO; 1424 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 1425 | CLANG_CXX_LIBRARY = "libc++"; 1426 | CLANG_ENABLE_MODULES = YES; 1427 | CLANG_ENABLE_OBJC_ARC = YES; 1428 | CLANG_WARN_BOOL_CONVERSION = YES; 1429 | CLANG_WARN_CONSTANT_CONVERSION = YES; 1430 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 1431 | CLANG_WARN_EMPTY_BODY = YES; 1432 | CLANG_WARN_ENUM_CONVERSION = YES; 1433 | CLANG_WARN_INT_CONVERSION = YES; 1434 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 1435 | CLANG_WARN_UNREACHABLE_CODE = YES; 1436 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 1437 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1438 | COPY_PHASE_STRIP = YES; 1439 | ENABLE_NS_ASSERTIONS = NO; 1440 | ENABLE_STRICT_OBJC_MSGSEND = YES; 1441 | GCC_C_LANGUAGE_STANDARD = gnu99; 1442 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 1443 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 1444 | GCC_WARN_UNDECLARED_SELECTOR = YES; 1445 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 1446 | GCC_WARN_UNUSED_FUNCTION = YES; 1447 | GCC_WARN_UNUSED_VARIABLE = YES; 1448 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 1449 | MTL_ENABLE_DEBUG_INFO = NO; 1450 | SDKROOT = iphoneos; 1451 | VALIDATE_PRODUCT = YES; 1452 | }; 1453 | name = Release; 1454 | }; 1455 | /* End XCBuildConfiguration section */ 1456 | 1457 | /* Begin XCConfigurationList section */ 1458 | 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "NoteTakerTests" */ = { 1459 | isa = XCConfigurationList; 1460 | buildConfigurations = ( 1461 | 00E356F61AD99517003FC87E /* Debug */, 1462 | 00E356F71AD99517003FC87E /* Release */, 1463 | ); 1464 | defaultConfigurationIsVisible = 0; 1465 | defaultConfigurationName = Release; 1466 | }; 1467 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "NoteTaker" */ = { 1468 | isa = XCConfigurationList; 1469 | buildConfigurations = ( 1470 | 13B07F941A680F5B00A75B9A /* Debug */, 1471 | 13B07F951A680F5B00A75B9A /* Release */, 1472 | ); 1473 | defaultConfigurationIsVisible = 0; 1474 | defaultConfigurationName = Release; 1475 | }; 1476 | 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "NoteTaker-tvOS" */ = { 1477 | isa = XCConfigurationList; 1478 | buildConfigurations = ( 1479 | 2D02E4971E0B4A5E006451C7 /* Debug */, 1480 | 2D02E4981E0B4A5E006451C7 /* Release */, 1481 | ); 1482 | defaultConfigurationIsVisible = 0; 1483 | defaultConfigurationName = Release; 1484 | }; 1485 | 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "NoteTaker-tvOSTests" */ = { 1486 | isa = XCConfigurationList; 1487 | buildConfigurations = ( 1488 | 2D02E4991E0B4A5E006451C7 /* Debug */, 1489 | 2D02E49A1E0B4A5E006451C7 /* Release */, 1490 | ); 1491 | defaultConfigurationIsVisible = 0; 1492 | defaultConfigurationName = Release; 1493 | }; 1494 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "NoteTaker" */ = { 1495 | isa = XCConfigurationList; 1496 | buildConfigurations = ( 1497 | 83CBBA201A601CBA00E9B192 /* Debug */, 1498 | 83CBBA211A601CBA00E9B192 /* Release */, 1499 | ); 1500 | defaultConfigurationIsVisible = 0; 1501 | defaultConfigurationName = Release; 1502 | }; 1503 | /* End XCConfigurationList section */ 1504 | }; 1505 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; 1506 | } 1507 | -------------------------------------------------------------------------------- /ios/NoteTaker.xcodeproj/xcshareddata/xcschemes/NoteTaker-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/NoteTaker.xcodeproj/xcshareddata/xcschemes/NoteTaker.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/NoteTaker/AppDelegate.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | @interface AppDelegate : UIResponder 13 | 14 | @property (nonatomic, strong) UIWindow *window; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /ios/NoteTaker/AppDelegate.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import "AppDelegate.h" 11 | 12 | #import 13 | #import 14 | 15 | @implementation AppDelegate 16 | 17 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 18 | { 19 | NSURL *jsCodeLocation; 20 | 21 | jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil]; 22 | 23 | RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation 24 | moduleName:@"NoteTaker" 25 | initialProperties:nil 26 | launchOptions:launchOptions]; 27 | rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; 28 | 29 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 30 | UIViewController *rootViewController = [UIViewController new]; 31 | rootViewController.view = rootView; 32 | self.window.rootViewController = rootViewController; 33 | [self.window makeKeyAndVisible]; 34 | return YES; 35 | } 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /ios/NoteTaker/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/NoteTaker/Device/Device.h: -------------------------------------------------------------------------------- 1 | // 2 | // Device.h 3 | // NoteTaker 4 | // 5 | // Created by Atul R on 14/09/17. 6 | // Copyright © 2017 Facebook. All rights reserved. 7 | // 8 | #import 9 | 10 | @interface Device : NSObject 11 | @end 12 | -------------------------------------------------------------------------------- /ios/NoteTaker/Device/Device.m: -------------------------------------------------------------------------------- 1 | // 2 | // Device.m 3 | // NoteTaker 4 | // 5 | // Created by Atul R on 14/09/17. 6 | // Copyright © 2017 Facebook. All rights reserved. 7 | // 8 | 9 | #import "Device.h" 10 | #import 11 | 12 | @implementation Device 13 | 14 | RCT_EXPORT_MODULE(); 15 | 16 | RCT_EXPORT_METHOD(getDeviceName:(RCTResponseSenderBlock)callback){ 17 | @try{ 18 | NSString *deviceName = [[UIDevice currentDevice] name]; 19 | callback(@[[NSNull null], deviceName]); 20 | } 21 | @catch(NSException *exception){ 22 | callback(@[exception.reason, [NSNull null]]); 23 | } 24 | } 25 | 26 | @end 27 | 28 | -------------------------------------------------------------------------------- /ios/NoteTaker/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/NoteTaker/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | NoteTaker 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) 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 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UIViewControllerBasedStatusBarAppearance 40 | 41 | NSLocationWhenInUseUsageDescription 42 | 43 | NSAppTransportSecurity 44 | 45 | NSExceptionDomains 46 | 47 | localhost 48 | 49 | NSExceptionAllowsInsecureHTTPLoads 50 | 51 | 52 | 53 | 54 | UIAppFonts 55 | 56 | Entypo.ttf 57 | EvilIcons.ttf 58 | FontAwesome.ttf 59 | Foundation.ttf 60 | Ionicons.ttf 61 | MaterialCommunityIcons.ttf 62 | MaterialIcons.ttf 63 | Octicons.ttf 64 | SimpleLineIcons.ttf 65 | Zocial.ttf 66 | customIcons.ttf 67 | notetaker.ttf 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /ios/NoteTaker/main.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | #import "AppDelegate.h" 13 | 14 | int main(int argc, char * argv[]) { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ios/NoteTakerTests/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/NoteTakerTests/NoteTakerTests.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | #import 12 | 13 | #import 14 | #import 15 | 16 | #define TIMEOUT_SECONDS 600 17 | #define TEXT_TO_LOOK_FOR @"Welcome to React Native!" 18 | 19 | @interface NoteTakerTests : XCTestCase 20 | 21 | @end 22 | 23 | @implementation NoteTakerTests 24 | 25 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test 26 | { 27 | if (test(view)) { 28 | return YES; 29 | } 30 | for (UIView *subview in [view subviews]) { 31 | if ([self findSubviewInView:subview matching:test]) { 32 | return YES; 33 | } 34 | } 35 | return NO; 36 | } 37 | 38 | - (void)testRendersWelcomeScreen 39 | { 40 | UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; 41 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; 42 | BOOL foundElement = NO; 43 | 44 | __block NSString *redboxError = nil; 45 | RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { 46 | if (level >= RCTLogLevelError) { 47 | redboxError = message; 48 | } 49 | }); 50 | 51 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { 52 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 53 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 54 | 55 | foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { 56 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { 57 | return YES; 58 | } 59 | return NO; 60 | }]; 61 | } 62 | 63 | RCTSetLogFunction(RCTDefaultLogFunction); 64 | 65 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); 66 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); 67 | } 68 | 69 | 70 | @end 71 | -------------------------------------------------------------------------------- /ios/customIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/ios/customIcons.ttf -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NoteTaker", 3 | "version": "0.0.1", 4 | "private": true, 5 | "rnpm": { 6 | "assets": [ 7 | "resources/fonts" 8 | ] 9 | }, 10 | "scripts": { 11 | "start": "node node_modules/react-native/local-cli/cli.js start", 12 | "ios": "react-native run-ios", 13 | "android": "cd android && ./gradlew clean && cd .. && react-native run-android", 14 | "lint": "eslint app/", 15 | "lint:fix": "eslint app/ --fix", 16 | "prepush": "npm run lint && npm run test", 17 | "postinstall": "rm -rf .git/hooks/pre-push && node node_modules/husky/bin/install.js && rm -rf .git/hooks/pre-commit", 18 | "test": "jest --verbose --coverage", 19 | "test:update": "jest --verbose --coverage --updateSnapshot", 20 | "test:watch": "jest --verbose --watch", 21 | "coverage": "jest --verbose --coverage && open ./coverage/lcov-report/index.html" 22 | }, 23 | "dependencies": { 24 | "react": "16.0.0-alpha.12", 25 | "react-native": "0.48.2", 26 | "react-native-i18n": "^2.0.6", 27 | "react-native-modal-overlay": "^1.0.2", 28 | "react-native-platform-touchable": "^1.1.1", 29 | "react-native-vector-icons": "^4.2.0", 30 | "react-navigation": "^1.0.0-beta.11", 31 | "react-redux": "^5.0.6", 32 | "redux": "^3.7.2", 33 | "redux-actions": "^2.2.1", 34 | "redux-thunk": "^2.2.0" 35 | }, 36 | "devDependencies": { 37 | "babel-eslint": "^7.2.3", 38 | "babel-jest": "20.0.3", 39 | "babel-preset-react-native": "2.1.0", 40 | "eslint": "^3.14.1", 41 | "eslint-plugin-react": "^7.1.0", 42 | "eslint-plugin-react-native": "^2.3.2", 43 | "husky": "^0.14.3", 44 | "jest": "20.0.4", 45 | "react-test-renderer": "16.0.0-alpha.12" 46 | }, 47 | "jest": { 48 | "preset": "react-native", 49 | "cacheDirectory": "./cache", 50 | "coveragePathIgnorePatterns": [ 51 | "./app/utils/vendor" 52 | ], 53 | "coverageThreshold": { 54 | "global": { 55 | "statements": 0 56 | } 57 | }, 58 | "transformIgnorePatterns": [ 59 | "/node_modules/(?!react-native|react-clone-referenced-element|react-navigation)" 60 | ] 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /resources/fonts/notetaker.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-made-native-easy/note-taker/e01f76571a72857c31ee0011253184cd0e856816/resources/fonts/notetaker.ttf -------------------------------------------------------------------------------- /scripts/android/builder.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | cur_dir=`dirname $0` 5 | 6 | echo "BUILDING ANDROID"; 7 | cd $cur_dir/../../android && 8 | ./gradlew clean assembleRelease -PBUILD_NAME=$BUILD_NAME -PBUILD_NUMBER=$BUILD_NUMBER -PANDROID_APP_ID=$ANDROID_APP_ID -PMYAPP_RELEASE_STORE_FILE=$ANDROID_KEYSTORE_FILE -PMYAPP_RELEASE_KEY_ALIAS=$ANDROID_KEY_ALIAS -PMYAPP_RELEASE_STORE_PASSWORD=$ANDROID_KEYSTORE_PASSWORD -PMYAPP_RELEASE_KEY_PASSWORD=$ANDROID_KEY_PASSWORD && cd .. 9 | 10 | echo "APK will be present at android/app/build/outputs/apk/app-release.apk" 11 | -------------------------------------------------------------------------------- /scripts/ios/builder.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | cur_dir=`dirname $0` 5 | 6 | WORKING_DIR=`pwd`; 7 | cd $cur_dir/../../ios 8 | echo "Setting version to ${BUILD_NUMBER}, ${BUILD_NAME}" 9 | xcrun agvtool new-version -all ${BUILD_NUMBER} 10 | xcrun agvtool new-marketing-version ${BUILD_NAME} 11 | cd $WORKING_DIR 12 | 13 | echo "Archiving the project" 14 | xcodebuild archive -project $cur_dir/../../ios/${PROJECT_NAME}.xcodeproj -scheme $IOS_SCHEME -configuration $IOS_CONFIGURATION -derivedDataPath $cur_dir/../../ios/build -archivePath $cur_dir/../../ios/build/Products/${PROJECT_NAME}.xcarchive 15 | 16 | # or if you are not using xcodeproj and are using xcworkspace to build.. use the below code: 17 | 18 | # echo "Archiving the project" 19 | # xcodebuild clean archive PRODUCT_BUNDLE_IDENTIFIER=${IOS_APP_ID} -workspace $cur_dir/../../ios/${PROJECT_NAME}.xcworkspace -scheme $IOS_SCHEME -configuration $IOS_CONFIGURATION -derivedDataPath $cur_dir/../../ios/build -archivePath $cur_dir/../../ios/build/Products/${PROJECT_NAME}.xcarchive 20 | 21 | #SIGN 22 | # Issue : "No applicable devices found." 23 | # Fix: https://stackoverflow.com/questions/39634404/xcodebuild-exportarchive-no-applicable-devices-found 24 | unset GEM_HOME 25 | unset GEM_PATH 26 | 27 | echo "Export archive to create IPA file using $IOS_EXPORT_OPTIONS_PLIST" 28 | xcodebuild -exportArchive -archivePath $cur_dir/../../ios/build/Products/${PROJECT_NAME}.xcarchive -exportOptionsPlist $cur_dir/../../scripts/ios/exportOptions/$IOS_EXPORT_OPTIONS_PLIST -exportPath $cur_dir/../../ios/build/Products/IPA 29 | 30 | echo "IPA will be found at $cur_dir/../../ios/build/Products/IPA/$IOS_SCHEME.ipa" 31 | 32 | echo "REMOVING SENSITIVE FILES" 33 | #Making the login keychain as the default-keychain 34 | security default-keychain -s login.keychain 35 | security delete-keychain ios-build.keychain 36 | rm ~/Library/MobileDevice/Provisioning\ Profiles/$IOS_PROVISION_PROFILE 37 | -------------------------------------------------------------------------------- /scripts/ios/keychain.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | cur_dir=`dirname $0` 5 | 6 | #Check if ios-build keychain exists 7 | export keychainCount=`security list-keychains | grep -E 'ios-build' -c` 8 | 9 | if [ $keychainCount == 0 ] ; then 10 | echo "Create ios-build keychain" 11 | # Create a custom keychain 12 | security create-keychain -p "ios-build-password" ios-build.keychain 13 | fi 14 | # Add it to the list 15 | security list-keychains -d user -s ios-build.keychain 16 | 17 | echo "Making the ios-build keychain default ,so xcodebuild will use it for signing" 18 | security default-keychain -s ios-build.keychain 19 | 20 | echo "Unlocking the ios-build keychain" 21 | security unlock-keychain -p "ios-build-password" ios-build.keychain 22 | 23 | # Set keychain timeout to 1 hour for long builds 24 | # see http://www.egeek.me/2013/02/23/jenkins-and-xcode-user-interaction-is-not-allowed/ 25 | security set-keychain-settings -t 3600 -l ~/Library/Keychains/ios-build.keychain 26 | 27 | echo "Importing $IOS_CERTIFICATE to keychain" 28 | security import $cur_dir/certs/$IOS_CERTIFICATE -k ~/Library/Keychains/ios-build.keychain -P $IOS_CERTIFICATE_KEY -T "/usr/bin/codesign" -A 29 | 30 | #Mac OS Sierra https://stackoverflow.com/questions/39868578/security-codesign-in-sierra-keychain-ignores-access-control-settings-and-ui-p 31 | security set-key-partition-list -S apple-tool:,apple: -s -k "ios-build-password" ios-build.keychain 32 | 33 | # Put the provisioning profile in place 34 | echo "Coping $IOS_PROVISION_PROFILE in place" 35 | mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles 36 | cp "$cur_dir/profile/$IOS_PROVISION_PROFILE" ~/Library/MobileDevice/Provisioning\ Profiles/ 37 | --------------------------------------------------------------------------------