From 1f90ca25758116fa75b12f032cab536eead02312 Mon Sep 17 00:00:00 2001 From: Ryan McGrath Date: Thu, 5 Apr 2018 15:17:53 -0400 Subject: [PATCH] Initial commit. --- .babelrc | 12 + .flowconfig | 75 + .gitignore | 17 + .watchmanconfig | 1 + android/app/BUCK | 65 + android/app/build.gradle | 150 ++ android/app/proguard-rules.pro | 70 + android/app/src/main/AndroidManifest.xml | 32 + .../main/java/com/memelee/MainActivity.java | 15 + .../java/com/memelee/MainApplication.java | 45 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3418 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2206 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4842 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7718 bytes android/app/src/main/res/values/strings.xml | 3 + android/app/src/main/res/values/styles.xml | 8 + android/build.gradle | 24 + android/gradle.properties | 20 + android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 52266 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + android/gradlew | 164 +++ android/gradlew.bat | 90 ++ android/keystores/BUCK | 8 + android/keystores/debug.keystore.properties | 4 + android/settings.gradle | 3 + controllers/BookmarksViewController.js | 24 + controllers/BracketViewController.js | 61 + controllers/EventInfoViewController.js | 81 ++ controllers/MemeleeViewController.js | 15 + controllers/TournamentInfoViewController.js | 73 + controllers/TournamentsListViewController.js | 63 + controllers/components/TournamentRow.js | 51 + controllers/settings/index.js | 27 + images/placeholder1.png | Bin 0 -> 21167 bytes images/placeholder2.png | Bin 0 -> 25617 bytes images/placeholder3.png | Bin 0 -> 27879 bytes index.js | 53 + ios/memelee-tvOS/Info.plist | 54 + ios/memelee-tvOSTests/Info.plist | 24 + ios/memelee.xcodeproj/project.pbxproj | 1265 +++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 48408 bytes .../xcschemes/memelee-tvOS.xcscheme | 129 ++ .../xcshareddata/xcschemes/memelee.xcscheme | 129 ++ .../xcschemes/xcschememanagement.plist | 19 + ios/memelee/AppDelegate.h | 16 + ios/memelee/AppDelegate.m | 43 + ios/memelee/Base.lproj/LaunchScreen.xib | 42 + .../AppIcon.appiconset/Contents.json | 38 + ios/memelee/Images.xcassets/Contents.json | 6 + ios/memelee/Info.plist | 71 + ios/memelee/main.m | 18 + ios/memeleeTests/Info.plist | 24 + ios/memeleeTests/memeleeTests.m | 70 + package.json | 41 + stores/BookmarksStore.js | 20 + stores/SettingsStore.js | 20 + stores/TournamentEventStore.js | 171 +++ stores/TournamentsListingStore.js | 140 ++ stores/index.js | 33 + styles/index.js | 364 +++++ utils/MobxRnnProvider.js | 48 + 63 files changed, 4059 insertions(+) create mode 100644 .babelrc create mode 100644 .flowconfig create mode 100644 .gitignore create mode 100644 .watchmanconfig create mode 100644 android/app/BUCK create mode 100644 android/app/build.gradle create mode 100644 android/app/proguard-rules.pro create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/java/com/memelee/MainActivity.java create mode 100644 android/app/src/main/java/com/memelee/MainApplication.java create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/values/strings.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.jar create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100755 android/gradlew create mode 100644 android/gradlew.bat create mode 100644 android/keystores/BUCK create mode 100644 android/keystores/debug.keystore.properties create mode 100644 android/settings.gradle create mode 100644 controllers/BookmarksViewController.js create mode 100644 controllers/BracketViewController.js create mode 100644 controllers/EventInfoViewController.js create mode 100644 controllers/MemeleeViewController.js create mode 100644 controllers/TournamentInfoViewController.js create mode 100644 controllers/TournamentsListViewController.js create mode 100644 controllers/components/TournamentRow.js create mode 100644 controllers/settings/index.js create mode 100644 images/placeholder1.png create mode 100644 images/placeholder2.png create mode 100644 images/placeholder3.png create mode 100644 index.js create mode 100644 ios/memelee-tvOS/Info.plist create mode 100644 ios/memelee-tvOSTests/Info.plist create mode 100644 ios/memelee.xcodeproj/project.pbxproj create mode 100644 ios/memelee.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/memelee.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/memelee.xcodeproj/project.xcworkspace/xcuserdata/laika.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 ios/memelee.xcodeproj/xcshareddata/xcschemes/memelee-tvOS.xcscheme create mode 100644 ios/memelee.xcodeproj/xcshareddata/xcschemes/memelee.xcscheme create mode 100644 ios/memelee.xcodeproj/xcuserdata/laika.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 ios/memelee/AppDelegate.h create mode 100644 ios/memelee/AppDelegate.m create mode 100644 ios/memelee/Base.lproj/LaunchScreen.xib create mode 100644 ios/memelee/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/memelee/Images.xcassets/Contents.json create mode 100644 ios/memelee/Info.plist create mode 100644 ios/memelee/main.m create mode 100644 ios/memeleeTests/Info.plist create mode 100644 ios/memeleeTests/memeleeTests.m create mode 100644 package.json create mode 100644 stores/BookmarksStore.js create mode 100644 stores/SettingsStore.js create mode 100644 stores/TournamentEventStore.js create mode 100644 stores/TournamentsListingStore.js create mode 100644 stores/index.js create mode 100644 styles/index.js create mode 100644 utils/MobxRnnProvider.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..0f0c07d --- /dev/null +++ b/.babelrc @@ -0,0 +1,12 @@ +{ + "presets": [ + "babel-preset-react-native-stage-0/decorator-support" + ], + "env": { + "development": { + "plugins": [ + "transform-react-jsx-source" + ] + } + } +} \ No newline at end of file diff --git a/.flowconfig b/.flowconfig new file mode 100644 index 0000000..5b1b233 --- /dev/null +++ b/.flowconfig @@ -0,0 +1,75 @@ +[ignore] +; We fork some components by platform +.*/*[.]android.js + +; Ignore templates for 'react-native init' +/node_modules/react-native/local-cli/templates/.* + +; Ignore RN jest +/node_modules/react-native/jest/.* + +; Ignore RNTester +/node_modules/react-native/RNTester/.* + +; Ignore the website subdir +/node_modules/react-native/website/.* + +; Ignore the Dangerfile +/node_modules/react-native/danger/dangerfile.js + +; Ignore Fbemitter +/node_modules/fbemitter/.* + +; Ignore "BUCK" generated dirs +/node_modules/react-native/\.buckd/ + +; Ignore unexpected extra "@providesModule" +.*/node_modules/.*/node_modules/fbjs/.* + +; Ignore polyfills +/node_modules/react-native/Libraries/polyfills/.* + +; Ignore various node_modules +/node_modules/react-native-gesture-handler/.* +/node_modules/expo/.* +/node_modules/react-navigation/.* +/node_modules/xdl/.* +/node_modules/reqwest/.* +/node_modules/metro-bundler/.* + +[include] + +[libs] +node_modules/react-native/Libraries/react-native/react-native-interface.js +node_modules/react-native/flow/ +node_modules/expo/flow/ + +[options] +emoji=true + +module.system=haste + +module.file_ext=.js +module.file_ext=.jsx +module.file_ext=.json +module.file_ext=.ios.js + +munge_underscores=true + +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' + +suppress_type=$FlowIssue +suppress_type=$FlowFixMe +suppress_type=$FlowFixMeProps +suppress_type=$FlowFixMeState +suppress_type=$FixMe + +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(5[0-6]\\|[1-4][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native_oss[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(5[0-6]\\|[1-4][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native_oss[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy +suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError + +unsafe.enable_getters_and_setters=true + +[version] +^0.56.0 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..14a1171 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# expo +.expo/ + +# dependencies +/node_modules + +# misc +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/.watchmanconfig b/.watchmanconfig new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/.watchmanconfig @@ -0,0 +1 @@ +{} diff --git a/android/app/BUCK b/android/app/BUCK new file mode 100644 index 0000000..adec48f --- /dev/null +++ b/android/app/BUCK @@ -0,0 +1,65 @@ +# To learn about Buck see [Docs](https://buckbuild.com/). +# To run your application with Buck: +# - install Buck +# - `npm start` - to start the packager +# - `cd android` +# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` +# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck +# - `buck install -r android/app` - compile, install and run application +# + +lib_deps = [] + +for jarfile in glob(['libs/*.jar']): + name = 'jars__' + jarfile[jarfile.rindex('/') + 1: jarfile.rindex('.jar')] + lib_deps.append(':' + name) + prebuilt_jar( + name = name, + binary_jar = jarfile, + ) + +for aarfile in glob(['libs/*.aar']): + name = 'aars__' + aarfile[aarfile.rindex('/') + 1: aarfile.rindex('.aar')] + lib_deps.append(':' + name) + android_prebuilt_aar( + name = name, + aar = aarfile, + ) + +android_library( + name = "all-libs", + exported_deps = lib_deps, +) + +android_library( + name = "app-code", + srcs = glob([ + "src/main/java/**/*.java", + ]), + deps = [ + ":all-libs", + ":build_config", + ":res", + ], +) + +android_build_config( + name = "build_config", + package = "com.memelee", +) + +android_resource( + name = "res", + package = "com.memelee", + res = "src/main/res", +) + +android_binary( + name = "app", + keystore = "//android/keystores:debug", + manifest = "src/main/AndroidManifest.xml", + package_type = "debug", + deps = [ + ":app-code", + ], +) diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..7085abd --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,150 @@ +apply plugin: "com.android.application" + +import com.android.build.OutputFile + +/** + * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets + * and bundleReleaseJsAndAssets). + * These basically call `react-native bundle` with the correct arguments during the Android build + * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the + * bundle directly from the development server. Below you can see all the possible configurations + * and their defaults. If you decide to add a configuration block, make sure to add it before the + * `apply from: "../../node_modules/react-native/react.gradle"` line. + * + * project.ext.react = [ + * // the name of the generated asset file containing your JS bundle + * bundleAssetName: "index.android.bundle", + * + * // the entry file for bundle generation + * entryFile: "index.android.js", + * + * // whether to bundle JS and assets in debug mode + * bundleInDebug: false, + * + * // whether to bundle JS and assets in release mode + * bundleInRelease: true, + * + * // whether to bundle JS and assets in another build variant (if configured). + * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants + * // The configuration property can be in the following formats + * // 'bundleIn${productFlavor}${buildType}' + * // 'bundleIn${buildType}' + * // bundleInFreeDebug: true, + * // bundleInPaidRelease: true, + * // bundleInBeta: true, + * + * // whether to disable dev mode in custom build variants (by default only disabled in release) + * // for example: to disable dev mode in the staging build type (if configured) + * devDisabledInStaging: true, + * // The configuration property can be in the following formats + * // 'devDisabledIn${productFlavor}${buildType}' + * // 'devDisabledIn${buildType}' + * + * // the root of your project, i.e. where "package.json" lives + * root: "../../", + * + * // where to put the JS bundle asset in debug mode + * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", + * + * // where to put the JS bundle asset in release mode + * jsBundleDirRelease: "$buildDir/intermediates/assets/release", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in debug mode + * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in release mode + * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", + * + * // by default the gradle tasks are skipped if none of the JS files or assets change; this means + * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to + * // date; if you have any other folders that you want to ignore for performance reasons (gradle + * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ + * // for example, you might want to remove it from here. + * inputExcludes: ["android/**", "ios/**"], + * + * // override which node gets called and with what additional arguments + * nodeExecutableAndArgs: ["node"], + * + * // supply additional arguments to the packager + * extraPackagerArgs: [] + * ] + */ + +project.ext.react = [ + entryFile: "index.js" +] + +apply from: "../../node_modules/react-native/react.gradle" + +/** + * Set this to true to create two separate APKs instead of one: + * - An APK that only works on ARM devices + * - An APK that only works on x86 devices + * The advantage is the size of the APK is reduced by about 4MB. + * Upload all the APKs to the Play Store and people will download + * the correct one based on the CPU architecture of their device. + */ +def enableSeparateBuildPerCPUArchitecture = false + +/** + * Run Proguard to shrink the Java bytecode in release builds. + */ +def enableProguardInReleaseBuilds = false + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.1" + + defaultConfig { + applicationId "com.memelee" + minSdkVersion 16 + targetSdkVersion 22 + versionCode 1 + versionName "1.0" + ndk { + abiFilters "armeabi-v7a", "x86" + } + } + splits { + abi { + reset() + enable enableSeparateBuildPerCPUArchitecture + universalApk false // If true, also generate a universal APK + include "armeabi-v7a", "x86" + } + } + buildTypes { + release { + minifyEnabled enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + } + } + // applicationVariants are e.g. debug, release + applicationVariants.all { variant -> + variant.outputs.each { output -> + // For each separate APK per architecture, set a unique version code as described here: + // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits + def versionCodes = ["armeabi-v7a":1, "x86":2] + def abi = output.getFilter(OutputFile.ABI) + if (abi != null) { // null for the universal-debug, universal-release variants + output.versionCodeOverride = + versionCodes.get(abi) * 1048576 + defaultConfig.versionCode + } + } + } +} + +dependencies { + compile fileTree(dir: "libs", include: ["*.jar"]) + compile "com.android.support:appcompat-v7:23.0.1" + compile "com.facebook.react:react-native:+" // From node_modules +} + +// Run this once to be able to run the application with BUCK +// puts all compile dependencies into folder libs for BUCK to use +task copyDownloadableDepsToLibs(type: Copy) { + from configurations.compile + into 'libs' +} diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro new file mode 100644 index 0000000..6e8516c --- /dev/null +++ b/android/app/proguard-rules.pro @@ -0,0 +1,70 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Disabling obfuscation is useful if you collect stack traces from production crashes +# (unless you are using a system that supports de-obfuscate the stack traces). +-dontobfuscate + +# React Native + +# Keep our interfaces so they can be used by other ProGuard rules. +# See http://sourceforge.net/p/proguard/bugs/466/ +-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip +-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters +-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip + +# Do not strip any method/class that is annotated with @DoNotStrip +-keep @com.facebook.proguard.annotations.DoNotStrip class * +-keep @com.facebook.common.internal.DoNotStrip class * +-keepclassmembers class * { + @com.facebook.proguard.annotations.DoNotStrip *; + @com.facebook.common.internal.DoNotStrip *; +} + +-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { + void set*(***); + *** get*(); +} + +-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; } +-keep class * extends com.facebook.react.bridge.NativeModule { *; } +-keepclassmembers,includedescriptorclasses class * { native ; } +-keepclassmembers class * { @com.facebook.react.uimanager.UIProp ; } +-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp ; } +-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup ; } + +-dontwarn com.facebook.react.** + +# TextLayoutBuilder uses a non-public Android constructor within StaticLayout. +# See libs/proxy/src/main/java/com/facebook/fbui/textlayoutbuilder/proxy for details. +-dontwarn android.text.StaticLayout + +# okhttp + +-keepattributes Signature +-keepattributes *Annotation* +-keep class okhttp3.** { *; } +-keep interface okhttp3.** { *; } +-dontwarn okhttp3.** + +# okio + +-keep class sun.misc.Unsafe { *; } +-dontwarn java.nio.file.* +-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement +-dontwarn okio.** diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..c849ef5 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/java/com/memelee/MainActivity.java b/android/app/src/main/java/com/memelee/MainActivity.java new file mode 100644 index 0000000..1dbc149 --- /dev/null +++ b/android/app/src/main/java/com/memelee/MainActivity.java @@ -0,0 +1,15 @@ +package com.memelee; + +import com.facebook.react.ReactActivity; + +public class MainActivity extends ReactActivity { + + /** + * Returns the name of the main component registered from JavaScript. + * This is used to schedule rendering of the component. + */ + @Override + protected String getMainComponentName() { + return "memelee"; + } +} diff --git a/android/app/src/main/java/com/memelee/MainApplication.java b/android/app/src/main/java/com/memelee/MainApplication.java new file mode 100644 index 0000000..11407bd --- /dev/null +++ b/android/app/src/main/java/com/memelee/MainApplication.java @@ -0,0 +1,45 @@ +package com.memelee; + +import android.app.Application; + +import com.facebook.react.ReactApplication; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.react.shell.MainReactPackage; +import com.facebook.soloader.SoLoader; + +import java.util.Arrays; +import java.util.List; + +public class MainApplication extends Application implements ReactApplication { + + private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { + @Override + public boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } + + @Override + protected List getPackages() { + return Arrays.asList( + new MainReactPackage() + ); + } + + @Override + protected String getJSMainModuleName() { + return "index"; + } + }; + + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } + + @Override + public void onCreate() { + super.onCreate(); + SoLoader.init(this, /* native exopackage */ false); + } +} diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..cde69bcccec65160d92116f20ffce4fce0b5245c GIT binary patch literal 3418 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa42f0e7b91d006d22352c9ff2f134e504e3c1d GIT binary patch literal 4842 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..324e72cdd7480cb983fa1bcc7ce686e51ef87fe7 GIT binary patch literal 7718 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..9170c7c --- /dev/null +++ b/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Memelee + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..319eb0c --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..eed9972 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,24 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.2.3' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + mavenLocal() + jcenter() + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url "$rootDir/../node_modules/react-native/android" + } + } +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..1fd964e --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,20 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +android.useDeprecatedNdk=true diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..b5166dad4d90021f6a0b45268c0755719f1d5cd4 GIT binary patch literal 52266 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 z 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 literal 0 HcmV?d00001 diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..dbdc05d --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip diff --git a/android/gradlew b/android/gradlew new file mode 100755 index 0000000..91a7e26 --- /dev/null +++ b/android/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/android/gradlew.bat b/android/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/android/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/android/keystores/BUCK b/android/keystores/BUCK new file mode 100644 index 0000000..88e4c31 --- /dev/null +++ b/android/keystores/BUCK @@ -0,0 +1,8 @@ +keystore( + name = "debug", + properties = "debug.keystore.properties", + store = "debug.keystore", + visibility = [ + "PUBLIC", + ], +) diff --git a/android/keystores/debug.keystore.properties b/android/keystores/debug.keystore.properties new file mode 100644 index 0000000..121bfb4 --- /dev/null +++ b/android/keystores/debug.keystore.properties @@ -0,0 +1,4 @@ +key.store=debug.keystore +key.alias=androiddebugkey +key.store.password=android +key.alias.password=android diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..b4cd786 --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,3 @@ +rootProject.name = 'memelee' + +include ':app' diff --git a/controllers/BookmarksViewController.js b/controllers/BookmarksViewController.js new file mode 100644 index 0000000..8697ad2 --- /dev/null +++ b/controllers/BookmarksViewController.js @@ -0,0 +1,24 @@ +/** + * BookmarksViewController + * + * Yeah, I do it iOS style. Handles bookmarked tournaments. + * + * @copyright Ryan McGrath 2018. + */ + +import moment from 'moment'; +import React from 'react'; +import {FlatList, Image, Text, View, TouchableOpacity} from 'react-native'; + +import MemeleeViewController from './MemeleeViewController'; + +export default class BookmarksViewController extends MemeleeViewController { + state = {data: []}; + keyExtractor = (item, index) => item.id; + + render() { + return { + return ; + }} /> + } +} diff --git a/controllers/BracketViewController.js b/controllers/BracketViewController.js new file mode 100644 index 0000000..968ec47 --- /dev/null +++ b/controllers/BracketViewController.js @@ -0,0 +1,61 @@ +/** + * BracketViewController + * + * Yeah, I do it iOS style. Handles displaying tournament bracket data. + * + * @copyright Ryan McGrath 2018. + */ + +import moment from 'moment'; +import React from 'react'; +import {ScrollView, Text, View} from 'react-native'; +import {v4} from 'uuid'; + +//import SmashGG from '../store'; +import MemeleeViewController from './MemeleeViewController'; + +const Match = ({set, ...rest}) => ( + + {set.entrant1.name ? set.entrant1.name : ''} {set.entrant1Score} + + {set.entrant2.name ? set.entrant2.name : ''} {set.entrant2Score} + +); + +export default class BracketViewController extends MemeleeViewController { + state = { + brackets: { + winners: [], + losers: [], + grandFinals: [] + } + }; + + componentWillMount() { + const evtSlugs = this.props.evt.slug.split('/'); + const evtSlug = evtSlugs.length > 0 ? evtSlugs[evtSlugs.length - 1] : null; + const tournamentSlug = this.props.tournament.slugs[0].replace('tournament/', ''); + + SmashGG.fetchBracketData(tournamentSlug, evtSlug, this.props.bracket.id).then(this.updateBracketsData).catch(console.error); + } + + updateBracketsData = (brackets) => { + this.setState({brackets: brackets}); + } + + render() { + return ( + {['winners', 'losers'].map(key => ( + + {this.state.brackets[key].map(bracket => ( + + {bracket.title} + {bracket.sets.map(set => )} + + ))} + + ))} + ); + } +} + diff --git a/controllers/EventInfoViewController.js b/controllers/EventInfoViewController.js new file mode 100644 index 0000000..35ae812 --- /dev/null +++ b/controllers/EventInfoViewController.js @@ -0,0 +1,81 @@ +/** + * EventInfoViewController + * + * Yeah, I do it iOS style. Handles displaying tournament event data. + * + * @copyright Ryan McGrath 2018. + */ + +import moment from 'moment'; +import React from 'react'; +import {ScrollView, Image, Text, View, TouchableOpacity} from 'react-native'; +import Markdown from 'react-native-simple-markdown' +//import SmashGG from '../store'; + +import MemeleeViewController from './MemeleeViewController'; + +export default class EventInfoViewController extends MemeleeViewController { + state = { + standings: [], + brackets: [] + }; + + componentWillMount() { + const evtSlugs = this.props.evt.slug.split('/'); + const evtSlug = evtSlugs.length > 0 ? evtSlugs[evtSlugs.length - 1] : null; + const tournamentSlug = this.props.tournament.slugs[0].replace('tournament/', ''); + + if((evtSlug && evtSlug !== '') && (tournamentSlug && tournamentSlug != '')) { + SmashGG.fetchEventExpanded(tournamentSlug, evtSlug).then(this.updateBracketsData).catch(console.error); + SmashGG.fetchEventStandings(tournamentSlug, evtSlug).then(this.updateStandingsData).catch(console.error); + } + } + + updateBracketsData = (data) => { + this.setState({brackets: data}); + } + + updateStandingsData = (data) => { + this.setState({standings: data}); + } + + onBracketPress = (bracket) => { + this.props.navigator.push({ + screen: 'memelee.bracket', + title: bracket.name, + backButtonTitle: 'Back', + passProps: { + tournament: this.props.tournament, + evt: this.props.evt, + bracket: bracket + }, + navigatorStyle: {tabBarHidden: true} + }); + } + + render() { + return ( + Brackets + {this.state.brackets.map(bracket => ( + this.onBracketPress(bracket)}> + {bracket.name} + + ))} + + Standings + + Players + Losses + + {this.state.standings.map(standing => ( + + + {standing.finalPlacement} + + {standing.name} + {standing.losses.map(loss => {loss})} + + ))} + ); + } +} diff --git a/controllers/MemeleeViewController.js b/controllers/MemeleeViewController.js new file mode 100644 index 0000000..37597dd --- /dev/null +++ b/controllers/MemeleeViewController.js @@ -0,0 +1,15 @@ +/** + * MemeleeViewController.js + * + * Yes yes iOS style etc etc. Handles ensuring that all view controllers have default styling + * and such applied. + * + * @copyright Ryan McGrath 2018. + */ + +import React from 'react'; +import styles from '../styles'; + +export default class MemeleeController extends React.Component { + static navigatorStyle = styles.navigatorStyles; +}; diff --git a/controllers/TournamentInfoViewController.js b/controllers/TournamentInfoViewController.js new file mode 100644 index 0000000..0a9f8b7 --- /dev/null +++ b/controllers/TournamentInfoViewController.js @@ -0,0 +1,73 @@ +/** + * TournamentInfoViewController + * + * Yeah, I do it iOS style. Handles fetching and displaying tournament data. + * + * @copyright Ryan McGrath 2018. + */ + +import moment from 'moment'; +import React from 'react'; +import {ScrollView, StyleSheet, Image, Text, View, TouchableOpacity, Dimensions} from 'react-native'; +//import Markdown from 'react-native-simple-markdown' +import Markdown from 'react-native-markdown-renderer'; +import SegmentedControlTab from 'react-native-segmented-control-tab'; +import SettingsList, {Header, Item} from 'react-native-settings-list'; + +import styles from '../styles'; +import MemeleeViewController from './MemeleeViewController'; + +const w = Dimensions.get('screen').width; +/* + + Register + + + Bookmark + + +*/ + + +export default class TournamentInfoViewController extends MemeleeViewController { + state = { + selectedIndex: 0 + }; + + onEventTapped = (evt) => { + this.props.navigator.push({ + screen: 'memelee.tournamentEventInfoScreen', + title: evt.name, + passProps: {tournament: this.props.tournament, evt: evt}, + navigatorStyle: {tabBarHidden: true} + }); + } + + swapIndex = (index) => { + this.setState({ + selectedIndex: index + }); + } + + render() { + const s = StyleSheet.flatten(styles.tournamentDetailsEventWrapper); + + return ( + + + + + {this.state.selectedIndex === 0 ? ( + + {this.props.tournament.details && this.props.tournament.details !== '' ? this.props.tournament.details : ''} + + ) : null} + + {this.state.selectedIndex === 1 ? ( + {this.props.tournament.memeleeEvents.map(evt => ( + + ))} + ) : null} + ); + } +} diff --git a/controllers/TournamentsListViewController.js b/controllers/TournamentsListViewController.js new file mode 100644 index 0000000..afd64e7 --- /dev/null +++ b/controllers/TournamentsListViewController.js @@ -0,0 +1,63 @@ +/** + * UpcomingTournamentsViewController + * + * Yeah, I do it iOS style. Handles fetching and displaying upcoming tournaments. + * + * @copyright Ryan McGrath 2018. + */ + +import moment from 'moment'; +import React from 'react'; +import {FlatList, View, ActivityIndicator} from 'react-native'; +import {inject, observer} from 'mobx-react/native'; +import {SearchBar} from 'react-native-elements'; + +import styles from '../styles'; +import MemeleeViewController from './MemeleeViewController'; +import TournamentRow from './components/TournamentRow'; + +const keyExtractor = (item, index) => item.id; + +@inject('Tournaments') @observer +export default class UpcomingTournamentsViewController extends MemeleeViewController { + componentWillMount() { + this.props.Tournaments.fetchFeatured(); + } + + onTap = (tournament) => { + this.props.navigator.push({ + screen: 'memelee.tournamentInfoScreen', + title: tournament.name, + passProps: {tournament: tournament}, + navigatorStyle: {tabBarHidden: true} + }); + } + + renderHeader = () => ( + + ) + + renderFooter = () => ( + this.props.Tournaments.fetchingData ? ( + + ) : null + ) + + renderItem = ({item}) => () + + render() { + const props = { + data: this.props.Tournaments.fetchingData ? [] : + this.props.Tournaments.mode === 'search' ? this.props.Tournaments.searchResults : + this.props.Tournaments.tournamentsList, + + keyExtractor: keyExtractor, + contentContainerStyle: styles.tournamentsListView, + ListHeaderComponent: this.renderHeader, + ListFooterComponent: this.renderFooter, + renderItem: this.renderItem + }; + + return + } +} diff --git a/controllers/components/TournamentRow.js b/controllers/components/TournamentRow.js new file mode 100644 index 0000000..a23541f --- /dev/null +++ b/controllers/components/TournamentRow.js @@ -0,0 +1,51 @@ +/** + * TournamentRow.js + * + * That row that displays tournament info. + * + * @copyright Ryan McGrath 2018. + */ + +import React from 'react'; +import {Image, Text, View, TouchableOpacity, Dimensions} from 'react-native'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; + +import styles from '../../styles'; + +const width = Dimensions.get('window').width; + +export default class TournamentRow extends React.Component { + onPress = () => { + this.props.onTap(this.props.tournament); + } + + render() { + const x = width - 32; + const w = {width: x, height: 130}; //x * this.props.tournament.memeleePromoImage.ratio}; + + return ( + + + + {this.props.tournament.name} + + + {this.props.tournament.memeleeTournamentRange} + + + + {this.props.tournament.hasOnlineEvents && (!this.props.tournament.city || this.props.tournament.city === '') ? 'Online' : (this.props.tournament.city ? this.props.tournament.city + ', ' : '') + this.props.tournament.addrState} + + + + {this.props.tournament.memeleeEventsCount} Events + + + {this.props.tournament.attendeeCount} Attendees + + + + + ); + } +} diff --git a/controllers/settings/index.js b/controllers/settings/index.js new file mode 100644 index 0000000..18c9627 --- /dev/null +++ b/controllers/settings/index.js @@ -0,0 +1,27 @@ +/** + * SettingsViewController + * + * Yeah, I do it iOS style. Handles settings. + * + * @copyright Ryan McGrath 2018. + */ + +import React from 'react'; +import {ScrollView} from 'react-native'; +import SettingsList, {Header, Item} from 'react-native-settings-list'; + +import styles from '../../styles'; +import MemeleeViewController from '../MemeleeViewController'; + +export default class SettingsViewController extends MemeleeViewController { + pressed = () => {} + + render() { + return ( + +
+ + + ); + } +} diff --git a/images/placeholder1.png b/images/placeholder1.png new file mode 100644 index 0000000000000000000000000000000000000000..b80258586bbaa87af9a83cf91d67043702c4940f GIT binary patch literal 21167 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 literal 0 HcmV?d00001 diff --git a/images/placeholder2.png b/images/placeholder2.png new file mode 100644 index 0000000000000000000000000000000000000000..df0330ecc0ac0a38535196850fc3259b12ce6c47 GIT binary patch literal 25617 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 literal 0 HcmV?d00001 diff --git a/images/placeholder3.png b/images/placeholder3.png new file mode 100644 index 0000000000000000000000000000000000000000..62d2b667d40f076ae76a33f84461766301ef7dea GIT binary patch literal 27879 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 literal 0 HcmV?d00001 diff --git a/index.js b/index.js new file mode 100644 index 0000000..0810099 --- /dev/null +++ b/index.js @@ -0,0 +1,53 @@ +/** + * index.js, ala the App itself~ + * + * Handles registering navigation components (screens), and making sure some basic + * tab bar styling is applied. + * + * @copyright Ryan McGrath 2018 + */ + +import React from 'react'; +import {Navigation} from 'react-native-navigation'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; + +import styles from './styles'; +import Stores from './stores'; +import Provider from './utils/MobxRnnProvider'; + +import TournamentsListViewController from './controllers/TournamentsListViewController'; +import TournamentInfoViewController from './controllers/TournamentInfoViewController'; +import EventInfoViewController from './controllers/EventInfoViewController'; +import BracketViewController from './controllers//BracketViewController'; +import BookmarksViewController from './controllers/BookmarksViewController'; +import SettingsViewController from './controllers/settings'; + +const Constants = { + Screens: { + TournamentsList: 'memelee.tournamentsList', + TournamentInfoScreen: 'memelee.tournamentInfoScreen', + TournamentEventInfoScreen: 'memelee.tournamentEventInfoScreen', + Bracket: 'memelee.tournamentBracket', + Bookmarks: 'memelee.bookmarks', + Settings: 'memelee.settings' + } +}; + +Navigation.registerComponent(Constants.Screens.TournamentsList, () => TournamentsListViewController, Stores, Provider); +Navigation.registerComponent(Constants.Screens.TournamentInfoScreen, () => TournamentInfoViewController, Stores, Provider); +Navigation.registerComponent(Constants.Screens.TournamentEventInfoScreen, () => EventInfoViewController, Stores, Provider); +Navigation.registerComponent(Constants.Screens.TournamentEventBracket, () => BracketViewController, Stores, Provider); +Navigation.registerComponent(Constants.Screens.Bookmarks, () => BookmarksViewController, Stores, Provider); +Navigation.registerComponent(Constants.Screens.Settings, () => SettingsViewController, Stores, Provider); + +Promise.all(['contacts', 'book', 'settings'].map(icon => Icon.getImageSource(icon, 26))).then(values => { + Navigation.startTabBasedApp({ + tabsStyle: styles.tabBarStyles, + + tabs: [ + {label: 'Tournaments', icon: values[0], title: 'Tournaments', screen: Constants.Screens.TournamentsList}, + {label: 'Bookmarks', icon: values[1], title: 'Bookmarks', screen: Constants.Screens.Bookmarks}, + {label: 'Settings', icon: values[2], title: 'Settings', screen: Constants.Screens.Settings} + ] + }); +}); diff --git a/ios/memelee-tvOS/Info.plist b/ios/memelee-tvOS/Info.plist new file mode 100644 index 0000000..2fb6a11 --- /dev/null +++ b/ios/memelee-tvOS/Info.plist @@ -0,0 +1,54 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + NSLocationWhenInUseUsageDescription + + NSAppTransportSecurity + + + NSExceptionDomains + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + + + + + diff --git a/ios/memelee-tvOSTests/Info.plist b/ios/memelee-tvOSTests/Info.plist new file mode 100644 index 0000000..886825c --- /dev/null +++ b/ios/memelee-tvOSTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/ios/memelee.xcodeproj/project.pbxproj b/ios/memelee.xcodeproj/project.pbxproj new file mode 100644 index 0000000..730f1c3 --- /dev/null +++ b/ios/memelee.xcodeproj/project.pbxproj @@ -0,0 +1,1265 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; + 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; + 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; }; + 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; + 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; + 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; + 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; + 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; + 2E4041D12074039B002D51FF /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2E40419E2074039B002D51FF /* Octicons.ttf */; }; + 2E4041D22074039B002D51FF /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2E40419F2074039B002D51FF /* Feather.ttf */; }; + 2E4041D32074039B002D51FF /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2E4041A02074039B002D51FF /* Entypo.ttf */; }; + 2E4041D42074039B002D51FF /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2E4041A12074039B002D51FF /* MaterialCommunityIcons.ttf */; }; + 2E4041D52074039B002D51FF /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2E4041A22074039B002D51FF /* Foundation.ttf */; }; + 2E4041D62074039B002D51FF /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2E4041A32074039B002D51FF /* Ionicons.ttf */; }; + 2E4041D72074039B002D51FF /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2E4041A42074039B002D51FF /* FontAwesome.ttf */; }; + 2E4041D82074039B002D51FF /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2E4041A52074039B002D51FF /* Zocial.ttf */; }; + 2E4041D92074039B002D51FF /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2E4041A62074039B002D51FF /* EvilIcons.ttf */; }; + 2E4041DA2074039B002D51FF /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2E4041A72074039B002D51FF /* SimpleLineIcons.ttf */; }; + 2E4041DB2074039B002D51FF /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2E4041A82074039B002D51FF /* MaterialIcons.ttf */; }; + 2E4041E2207404C8002D51FF /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E4041E1207404BA002D51FF /* libRNVectorIcons.a */; }; + 2E6309DD206B062D001ED724 /* libReactNativeNavigation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E6309DC206B0612001ED724 /* libReactNativeNavigation.a */; }; + 2E6309E7206C7210001ED724 /* libRNSVG.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E6309E4206C71DF001ED724 /* libRNSVG.a */; }; + 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; }; + 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; + ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTActionSheet; + }; + 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTGeolocation; + }; + 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58B5115D1A9E6B3D00147676; + remoteInfo = RCTImage; + }; + 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58B511DB1A9E6C8500147676; + remoteInfo = RCTNetwork; + }; + 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 832C81801AAF6DEF007FA2F7; + remoteInfo = RCTVibration; + }; + 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTSettings; + }; + 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3C86DF461ADF2C930047B81A; + remoteInfo = RCTWebSocket; + }; + 146834031AC3E56700842450 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; + remoteInfo = React; + }; + 2D16E6711FA4F8DC00B85C8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = ADD01A681E09402E00F6D226; + remoteInfo = "RCTBlob-tvOS"; + }; + 2D16E6831FA4F8DC00B85C8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3DBE0D001F3B181A0099AA32; + remoteInfo = fishhook; + }; + 2D16E6851FA4F8DC00B85C8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3DBE0D0D1F3B181C0099AA32; + remoteInfo = "fishhook-tvOS"; + }; + 2E4041E0207404BA002D51FF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2E4041DC207404BA002D51FF /* RNVectorIcons.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5DBEB1501B18CEA900B34395; + remoteInfo = RNVectorIcons; + }; + 2E6309CA206B0612001ED724 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EBF21BDC1FC498900052F4D5; + remoteInfo = jsinspector; + }; + 2E6309CC206B0612001ED724 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EBF21BFA1FC4989A0052F4D5; + remoteInfo = "jsinspector-tvOS"; + }; + 2E6309CE206B0612001ED724 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 139D7ECE1E25DB7D00323FB7; + remoteInfo = "third-party"; + }; + 2E6309D0206B0612001ED724 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D383D3C1EBD27B6005632C8; + remoteInfo = "third-party-tvOS"; + }; + 2E6309D2206B0612001ED724 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 139D7E881E25C6D100323FB7; + remoteInfo = "double-conversion"; + }; + 2E6309D4206B0612001ED724 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D383D621EBD27B9005632C8; + remoteInfo = "double-conversion-tvOS"; + }; + 2E6309D6206B0612001ED724 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9936F3131F5F2E4B0010BF04; + remoteInfo = privatedata; + }; + 2E6309D8206B0612001ED724 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9936F32F1F5F2E5B0010BF04; + remoteInfo = "privatedata-tvOS"; + }; + 2E6309DB206B0612001ED724 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2E6309A2206B0612001ED724 /* ReactNativeNavigation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D8AFADBD1BEE6F3F00A4592D; + remoteInfo = ReactNativeNavigation; + }; + 2E6309E3206C71DF001ED724 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2E6309DE206C71DF001ED724 /* RNSVG.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0CF68AC11AF0540F00FF9E5C; + remoteInfo = RNSVG; + }; + 2E6309E5206C71DF001ED724 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2E6309DE206C71DF001ED724 /* RNSVG.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 94DDAC5C1F3D024300EED511; + remoteInfo = "RNSVG-tvOS"; + }; + 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A283A1D9B042B00D4039D; + remoteInfo = "RCTImage-tvOS"; + }; + 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28471D9B043800D4039D; + remoteInfo = "RCTLinking-tvOS"; + }; + 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28541D9B044C00D4039D; + remoteInfo = "RCTNetwork-tvOS"; + }; + 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28611D9B046600D4039D; + remoteInfo = "RCTSettings-tvOS"; + }; + 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A287B1D9B048500D4039D; + remoteInfo = "RCTText-tvOS"; + }; + 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28881D9B049200D4039D; + remoteInfo = "RCTWebSocket-tvOS"; + }; + 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28131D9B038B00D4039D; + remoteInfo = "React-tvOS"; + }; + 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3C059A1DE3340900C268FA; + remoteInfo = yoga; + }; + 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3C06751DE3340C00C268FA; + remoteInfo = "yoga-tvOS"; + }; + 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD9251DE5FBEC00167DC4; + remoteInfo = cxxreact; + }; + 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4; + remoteInfo = "cxxreact-tvOS"; + }; + 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD90B1DE5FBD600167DC4; + remoteInfo = jschelpers; + }; + 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4; + remoteInfo = "jschelpers-tvOS"; + }; + 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTAnimation; + }; + 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28201D9B03D100D4039D; + remoteInfo = "RCTAnimation-tvOS"; + }; + 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTLinking; + }; + 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58B5119B1A9E6C1200147676; + remoteInfo = RCTText; + }; + ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 358F4ED71D1E81A9004DF814; + remoteInfo = RCTBlob; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; }; + 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; }; + 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; }; + 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; }; + 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; }; + 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 00E356F21AD99517003FC87E /* memeleeTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = memeleeTests.m; sourceTree = ""; }; + 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; + 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* memelee.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = memelee.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = memelee/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = memelee/AppDelegate.m; sourceTree = ""; }; + 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = memelee/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = memelee/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = memelee/main.m; sourceTree = ""; }; + 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; + 2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 2E40419E2074039B002D51FF /* Octicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Octicons.ttf; sourceTree = ""; }; + 2E40419F2074039B002D51FF /* Feather.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Feather.ttf; sourceTree = ""; }; + 2E4041A02074039B002D51FF /* Entypo.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Entypo.ttf; sourceTree = ""; }; + 2E4041A12074039B002D51FF /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = MaterialCommunityIcons.ttf; sourceTree = ""; }; + 2E4041A22074039B002D51FF /* Foundation.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Foundation.ttf; sourceTree = ""; }; + 2E4041A32074039B002D51FF /* Ionicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Ionicons.ttf; sourceTree = ""; }; + 2E4041A42074039B002D51FF /* FontAwesome.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome.ttf; sourceTree = ""; }; + 2E4041A52074039B002D51FF /* Zocial.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Zocial.ttf; sourceTree = ""; }; + 2E4041A62074039B002D51FF /* EvilIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = EvilIcons.ttf; sourceTree = ""; }; + 2E4041A72074039B002D51FF /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = SimpleLineIcons.ttf; sourceTree = ""; }; + 2E4041A82074039B002D51FF /* MaterialIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = MaterialIcons.ttf; sourceTree = ""; }; + 2E4041DC207404BA002D51FF /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; }; + 2E6309A2206B0612001ED724 /* ReactNativeNavigation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeNavigation.xcodeproj; path = "../node_modules/react-native-navigation/ios/ReactNativeNavigation.xcodeproj"; sourceTree = ""; }; + 2E6309DE206C71DF001ED724 /* RNSVG.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNSVG.xcodeproj; path = "../node_modules/react-native-svg/ios/RNSVG.xcodeproj"; sourceTree = ""; }; + 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = ""; }; + 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; + 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; + ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2E4041E2207404C8002D51FF /* libRNVectorIcons.a in Frameworks */, + 2E6309E7206C7210001ED724 /* libRNSVG.a in Frameworks */, + 2E6309DD206B062D001ED724 /* libReactNativeNavigation.a in Frameworks */, + ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */, + 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */, + 146834051AC3E58100842450 /* libReact.a in Frameworks */, + 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */, + 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, + 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, + 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, + 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */, + 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, + 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, + 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, + 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, + 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 00C302A81ABCB8CE00DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302B61ABCB90400DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302BC1ABCB91800DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */, + 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302D41ABCB9D200DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */, + 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302E01ABCB9EE00DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */, + ); + name = Products; + sourceTree = ""; + }; + 00E356EF1AD99517003FC87E /* memeleeTests */ = { + isa = PBXGroup; + children = ( + 00E356F21AD99517003FC87E /* memeleeTests.m */, + 00E356F01AD99517003FC87E /* Supporting Files */, + ); + path = memeleeTests; + sourceTree = ""; + }; + 00E356F01AD99517003FC87E /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 00E356F11AD99517003FC87E /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 139105B71AF99BAD00B5F7CC /* Products */ = { + isa = PBXGroup; + children = ( + 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */, + 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 139FDEE71B06529A00C62182 /* Products */ = { + isa = PBXGroup; + children = ( + 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, + 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */, + 2D16E6841FA4F8DC00B85C8A /* libfishhook.a */, + 2D16E6861FA4F8DC00B85C8A /* libfishhook-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 13B07FAE1A68108700A75B9A /* memelee */ = { + isa = PBXGroup; + children = ( + 008F07F21AC5B25A0029DE68 /* main.jsbundle */, + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 13B07FB01A68108700A75B9A /* AppDelegate.m */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, + 13B07FB71A68108700A75B9A /* main.m */, + ); + name = memelee; + sourceTree = ""; + }; + 146834001AC3E56700842450 /* Products */ = { + isa = PBXGroup; + children = ( + 146834041AC3E56700842450 /* libReact.a */, + 3DAD3EA31DF850E9000B6D8A /* libReact.a */, + 3DAD3EA51DF850E9000B6D8A /* libyoga.a */, + 3DAD3EA71DF850E9000B6D8A /* libyoga.a */, + 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */, + 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */, + 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */, + 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */, + 2E6309CB206B0612001ED724 /* libjsinspector.a */, + 2E6309CD206B0612001ED724 /* libjsinspector-tvOS.a */, + 2E6309CF206B0612001ED724 /* libthird-party.a */, + 2E6309D1206B0612001ED724 /* libthird-party.a */, + 2E6309D3206B0612001ED724 /* libdouble-conversion.a */, + 2E6309D5206B0612001ED724 /* libdouble-conversion.a */, + 2E6309D7206B0612001ED724 /* libprivatedata.a */, + 2E6309D9206B0612001ED724 /* libprivatedata-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2D16E6891FA4F8E400B85C8A /* libReact.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 2E40419D2074039B002D51FF /* Fonts */ = { + isa = PBXGroup; + children = ( + 2E40419E2074039B002D51FF /* Octicons.ttf */, + 2E40419F2074039B002D51FF /* Feather.ttf */, + 2E4041A02074039B002D51FF /* Entypo.ttf */, + 2E4041A12074039B002D51FF /* MaterialCommunityIcons.ttf */, + 2E4041A22074039B002D51FF /* Foundation.ttf */, + 2E4041A32074039B002D51FF /* Ionicons.ttf */, + 2E4041A42074039B002D51FF /* FontAwesome.ttf */, + 2E4041A52074039B002D51FF /* Zocial.ttf */, + 2E4041A62074039B002D51FF /* EvilIcons.ttf */, + 2E4041A72074039B002D51FF /* SimpleLineIcons.ttf */, + 2E4041A82074039B002D51FF /* MaterialIcons.ttf */, + ); + name = Fonts; + path = "../node_modules/react-native-vector-icons/Fonts"; + sourceTree = ""; + }; + 2E4041DD207404BA002D51FF /* Products */ = { + isa = PBXGroup; + children = ( + 2E4041E1207404BA002D51FF /* libRNVectorIcons.a */, + ); + name = Products; + sourceTree = ""; + }; + 2E6309A3206B0612001ED724 /* Products */ = { + isa = PBXGroup; + children = ( + 2E6309DC206B0612001ED724 /* libReactNativeNavigation.a */, + ); + name = Products; + sourceTree = ""; + }; + 2E6309DF206C71DF001ED724 /* Products */ = { + isa = PBXGroup; + children = ( + 2E6309E4206C71DF001ED724 /* libRNSVG.a */, + 2E6309E6206C71DF001ED724 /* libRNSVG-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 5E91572E1DD0AC6500FF2AA8 /* Products */ = { + isa = PBXGroup; + children = ( + 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */, + 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */, + ); + name = Products; + sourceTree = ""; + }; + 78C398B11ACF4ADC00677621 /* Products */ = { + isa = PBXGroup; + children = ( + 78C398B91ACF4ADC00677621 /* libRCTLinking.a */, + 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + 2E4041DC207404BA002D51FF /* RNVectorIcons.xcodeproj */, + 2E6309DE206C71DF001ED724 /* RNSVG.xcodeproj */, + 2E6309A2206B0612001ED724 /* ReactNativeNavigation.xcodeproj */, + 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */, + 146833FF1AC3E56700842450 /* React.xcodeproj */, + 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, + ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */, + 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, + 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */, + 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */, + 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */, + 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */, + 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, + 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, + 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, + ); + name = Libraries; + sourceTree = ""; + }; + 832341B11AAA6A8300B99B32 /* Products */ = { + isa = PBXGroup; + children = ( + 832341B51AAA6A8300B99B32 /* libRCTText.a */, + 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 2E40419D2074039B002D51FF /* Fonts */, + 13B07FAE1A68108700A75B9A /* memelee */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 00E356EF1AD99517003FC87E /* memeleeTests */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* memelee.app */, + ); + name = Products; + sourceTree = ""; + }; + ADBDB9201DFEBF0600ED6528 /* Products */ = { + isa = PBXGroup; + children = ( + ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */, + 2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 13B07F861A680F5B00A75B9A /* memelee */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "memelee" */; + buildPhases = ( + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = memelee; + productName = "Hello World"; + productReference = 13B07F961A680F5B00A75B9A /* memelee.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0610; + ORGANIZATIONNAME = Facebook; + TargetAttributes = { + 13B07F861A680F5B00A75B9A = { + DevelopmentTeam = 8JNDBG9U79; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "memelee" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */; + ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; + }, + { + ProductGroup = 5E91572E1DD0AC6500FF2AA8 /* Products */; + ProjectRef = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; + }, + { + ProductGroup = ADBDB9201DFEBF0600ED6528 /* Products */; + ProjectRef = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; + }, + { + ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; + ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; + }, + { + ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */; + ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; + }, + { + ProductGroup = 78C398B11ACF4ADC00677621 /* Products */; + ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; + }, + { + ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */; + ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; + }, + { + ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */; + ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; + }, + { + ProductGroup = 832341B11AAA6A8300B99B32 /* Products */; + ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; + }, + { + ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */; + ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; + }, + { + ProductGroup = 139FDEE71B06529A00C62182 /* Products */; + ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + }, + { + ProductGroup = 146834001AC3E56700842450 /* Products */; + ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; + }, + { + ProductGroup = 2E6309A3206B0612001ED724 /* Products */; + ProjectRef = 2E6309A2206B0612001ED724 /* ReactNativeNavigation.xcodeproj */; + }, + { + ProductGroup = 2E6309DF206C71DF001ED724 /* Products */; + ProjectRef = 2E6309DE206C71DF001ED724 /* RNSVG.xcodeproj */; + }, + { + ProductGroup = 2E4041DD207404BA002D51FF /* Products */; + ProjectRef = 2E4041DC207404BA002D51FF /* RNVectorIcons.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* memelee */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTActionSheet.a; + remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTGeolocation.a; + remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTImage.a; + remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTNetwork.a; + remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTVibration.a; + remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTSettings.a; + remoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTWebSocket.a; + remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 146834041AC3E56700842450 /* libReact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReact.a; + remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTBlob-tvOS.a"; + remoteRef = 2D16E6711FA4F8DC00B85C8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2D16E6841FA4F8DC00B85C8A /* libfishhook.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libfishhook.a; + remoteRef = 2D16E6831FA4F8DC00B85C8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2D16E6861FA4F8DC00B85C8A /* libfishhook-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libfishhook-tvOS.a"; + remoteRef = 2D16E6851FA4F8DC00B85C8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2E4041E1207404BA002D51FF /* libRNVectorIcons.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNVectorIcons.a; + remoteRef = 2E4041E0207404BA002D51FF /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2E6309CB206B0612001ED724 /* libjsinspector.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libjsinspector.a; + remoteRef = 2E6309CA206B0612001ED724 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2E6309CD206B0612001ED724 /* libjsinspector-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libjsinspector-tvOS.a"; + remoteRef = 2E6309CC206B0612001ED724 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2E6309CF206B0612001ED724 /* libthird-party.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libthird-party.a"; + remoteRef = 2E6309CE206B0612001ED724 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2E6309D1206B0612001ED724 /* libthird-party.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libthird-party.a"; + remoteRef = 2E6309D0206B0612001ED724 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2E6309D3206B0612001ED724 /* libdouble-conversion.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libdouble-conversion.a"; + remoteRef = 2E6309D2206B0612001ED724 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2E6309D5206B0612001ED724 /* libdouble-conversion.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libdouble-conversion.a"; + remoteRef = 2E6309D4206B0612001ED724 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2E6309D7206B0612001ED724 /* libprivatedata.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libprivatedata.a; + remoteRef = 2E6309D6206B0612001ED724 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2E6309D9206B0612001ED724 /* libprivatedata-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libprivatedata-tvOS.a"; + remoteRef = 2E6309D8206B0612001ED724 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2E6309DC206B0612001ED724 /* libReactNativeNavigation.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReactNativeNavigation.a; + remoteRef = 2E6309DB206B0612001ED724 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2E6309E4206C71DF001ED724 /* libRNSVG.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNSVG.a; + remoteRef = 2E6309E3206C71DF001ED724 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2E6309E6206C71DF001ED724 /* libRNSVG-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRNSVG-tvOS.a"; + remoteRef = 2E6309E5206C71DF001ED724 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTImage-tvOS.a"; + remoteRef = 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTLinking-tvOS.a"; + remoteRef = 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTNetwork-tvOS.a"; + remoteRef = 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTSettings-tvOS.a"; + remoteRef = 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTText-tvOS.a"; + remoteRef = 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTWebSocket-tvOS.a"; + remoteRef = 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EA31DF850E9000B6D8A /* libReact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReact.a; + remoteRef = 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EA51DF850E9000B6D8A /* libyoga.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libyoga.a; + remoteRef = 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EA71DF850E9000B6D8A /* libyoga.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libyoga.a; + remoteRef = 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libcxxreact.a; + remoteRef = 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libcxxreact.a; + remoteRef = 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libjschelpers.a; + remoteRef = 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libjschelpers.a; + remoteRef = 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTAnimation.a; + remoteRef = 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTAnimation.a; + remoteRef = 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTLinking.a; + remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTText.a; + remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTBlob.a; + remoteRef = ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 2E4041D92074039B002D51FF /* EvilIcons.ttf in Resources */, + 2E4041D52074039B002D51FF /* Foundation.ttf in Resources */, + 2E4041D82074039B002D51FF /* Zocial.ttf in Resources */, + 2E4041DB2074039B002D51FF /* MaterialIcons.ttf in Resources */, + 2E4041D62074039B002D51FF /* Ionicons.ttf in Resources */, + 2E4041DA2074039B002D51FF /* SimpleLineIcons.ttf in Resources */, + 2E4041D12074039B002D51FF /* Octicons.ttf in Resources */, + 2E4041D22074039B002D51FF /* Feather.ttf in Resources */, + 2E4041D72074039B002D51FF /* FontAwesome.ttf in Resources */, + 2E4041D32074039B002D51FF /* Entypo.ttf in Resources */, + 2E4041D42074039B002D51FF /* MaterialCommunityIcons.ttf in Resources */, + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 13B07FB21A68108700A75B9A /* Base */, + ); + name = LaunchScreen.xib; + path = memelee; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = 1; + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 8JNDBG9U79; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../node_modules/react-native-navigation/ios/**", + "$(SRCROOT)/../node_modules/react-native-svg/ios/**", + "$(SRCROOT)/../node_modules/react-native-vector-icons/**", + ); + INFOPLIST_FILE = memelee/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_NAME = memelee; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 8JNDBG9U79; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../node_modules/react-native-navigation/ios/**", + "$(SRCROOT)/../node_modules/react-native-svg/ios/**", + "$(SRCROOT)/../node_modules/react-native-vector-icons/**", + ); + INFOPLIST_FILE = memelee/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_NAME = memelee; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "memelee" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "memelee" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/ios/memelee.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/memelee.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/ios/memelee.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/memelee.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/memelee.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/memelee.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/memelee.xcodeproj/project.xcworkspace/xcuserdata/laika.xcuserdatad/UserInterfaceState.xcuserstate b/ios/memelee.xcodeproj/project.xcworkspace/xcuserdata/laika.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..e17fd6da3f31c21c06a489d9a06a5751bf4e71a6 GIT binary patch literal 48408 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 a7# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/memelee.xcodeproj/xcshareddata/xcschemes/memelee.xcscheme b/ios/memelee.xcodeproj/xcshareddata/xcschemes/memelee.xcscheme new file mode 100644 index 0000000..e180123 --- /dev/null +++ b/ios/memelee.xcodeproj/xcshareddata/xcschemes/memelee.xcscheme @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/memelee.xcodeproj/xcuserdata/laika.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/memelee.xcodeproj/xcuserdata/laika.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..d86b183 --- /dev/null +++ b/ios/memelee.xcodeproj/xcuserdata/laika.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,19 @@ + + + + + SchemeUserState + + memelee-tvOS.xcscheme_^#shared#^_ + + orderHint + 1 + + memelee.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/ios/memelee/AppDelegate.h b/ios/memelee/AppDelegate.h new file mode 100644 index 0000000..a9654d5 --- /dev/null +++ b/ios/memelee/AppDelegate.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@interface AppDelegate : UIResponder + +@property (nonatomic, strong) UIWindow *window; + +@end diff --git a/ios/memelee/AppDelegate.m b/ios/memelee/AppDelegate.m new file mode 100644 index 0000000..1a4a41a --- /dev/null +++ b/ios/memelee/AppDelegate.m @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "AppDelegate.h" + +#import +#import + +#import "RCCManager.h" + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + NSURL *jsCodeLocation; + + jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; + + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; + self.window.backgroundColor = [UIColor blackColor]; + [[RCCManager sharedInstance] initBridgeWithBundleURL:jsCodeLocation launchOptions:launchOptions]; + +// RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation +// moduleName:@"memelee" +// initialProperties:nil +// launchOptions:launchOptions]; +// rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; +// +// self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; +// UIViewController *rootViewController = [UIViewController new]; +// rootViewController.view = rootView; +// self.window.rootViewController = rootViewController; +// [self.window makeKeyAndVisible]; + return YES; +} + +@end diff --git a/ios/memelee/Base.lproj/LaunchScreen.xib b/ios/memelee/Base.lproj/LaunchScreen.xib new file mode 100644 index 0000000..6b5d098 --- /dev/null +++ b/ios/memelee/Base.lproj/LaunchScreen.xib @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/memelee/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/memelee/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..118c98f --- /dev/null +++ b/ios/memelee/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/memelee/Images.xcassets/Contents.json b/ios/memelee/Images.xcassets/Contents.json new file mode 100644 index 0000000..2d92bd5 --- /dev/null +++ b/ios/memelee/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/memelee/Info.plist b/ios/memelee/Info.plist new file mode 100644 index 0000000..41b99e1 --- /dev/null +++ b/ios/memelee/Info.plist @@ -0,0 +1,71 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + Memelee + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSExceptionDomains + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + + + + NSLocationWhenInUseUsageDescription + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UIStatusBarStyle + UIStatusBarStyleLightContent + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIAppFonts + + FontAwesome.ttf + Octicons.ttf + Feather.ttf + Entypo.ttf + MaterialCommunityIcons.ttf + Foundation.ttf + IonicIcons.ttf + Zocial.ttf + EvilIcons.ttf + SimpleLineIcons.ttf + MaterialIcons.ttf + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/ios/memelee/main.m b/ios/memelee/main.m new file mode 100644 index 0000000..3d767fc --- /dev/null +++ b/ios/memelee/main.m @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/ios/memeleeTests/Info.plist b/ios/memeleeTests/Info.plist new file mode 100644 index 0000000..886825c --- /dev/null +++ b/ios/memeleeTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/ios/memeleeTests/memeleeTests.m b/ios/memeleeTests/memeleeTests.m new file mode 100644 index 0000000..6fe6b8f --- /dev/null +++ b/ios/memeleeTests/memeleeTests.m @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import +#import + +#import +#import + +#define TIMEOUT_SECONDS 600 +#define TEXT_TO_LOOK_FOR @"Welcome to React Native!" + +@interface memeleeTests : XCTestCase + +@end + +@implementation memeleeTests + +- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test +{ + if (test(view)) { + return YES; + } + for (UIView *subview in [view subviews]) { + if ([self findSubviewInView:subview matching:test]) { + return YES; + } + } + return NO; +} + +- (void)testRendersWelcomeScreen +{ + UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; + NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; + BOOL foundElement = NO; + + __block NSString *redboxError = nil; + RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { + if (level >= RCTLogLevelError) { + redboxError = message; + } + }); + + while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { + [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + + foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { + if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { + return YES; + } + return NO; + }]; + } + + RCTSetLogFunction(RCTDefaultLogFunction); + + XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); + XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); +} + + +@end diff --git a/package.json b/package.json new file mode 100644 index 0000000..75daf48 --- /dev/null +++ b/package.json @@ -0,0 +1,41 @@ +{ + "name": "memelee", + "version": "0.1.0", + "private": true, + "devDependencies": { + "babel-preset-react-native-stage-0": "^1.0.1", + "jest-react-native": "^18.0.0", + "react-test-renderer": "16.2.0" + }, + "scripts": { + "start": "react-native start", + "android": "react-native run-android", + "ios": "react-native run-ios", + "test": "node node_modules/jest/bin/jest.js" + }, + "jest": { + "preset": "react-native" + }, + "dependencies": { + "axios": "^0.18.0", + "babel-preset-react-native-stage-0": "^1.0.1", + "jsog": "^1.0.7", + "mobx": "^4.1.1", + "mobx-persist": "^0.4.1", + "mobx-react": "^5.0.0", + "moment": "^2.21.0", + "prop-types": "^15.6.1", + "react": "16.2.0", + "react-controllables": "^0.6.0", + "react-native": "0.52.0", + "react-native-elements": "^0.19.0", + "react-native-markdown-renderer": "^3.1.0", + "react-native-navigation": "^1.1.426", + "react-native-segmented-control-tab": "^3.2.2", + "react-native-settings-list": "^1.8.0", + "react-native-svg": "^6.3.1", + "react-native-vector-icons": "^4.6.0", + "underscore": "^1.8.3", + "uuid": "^3.2.1" + } +} diff --git a/stores/BookmarksStore.js b/stores/BookmarksStore.js new file mode 100644 index 0000000..71bf9a6 --- /dev/null +++ b/stores/BookmarksStore.js @@ -0,0 +1,20 @@ +/** + * BookmarksStore + * + * Exactly what it sounds like. + * + * @copyright Ryan McGrath 2018 + */ + +import moment from 'moment'; +import {observable, action, runInAction} from 'mobx'; + +class Store { + @observable bookmarks; + + constructor() { + this.bookmarks = []; + } +}; + +export default new Store(); diff --git a/stores/SettingsStore.js b/stores/SettingsStore.js new file mode 100644 index 0000000..0611ed5 --- /dev/null +++ b/stores/SettingsStore.js @@ -0,0 +1,20 @@ +/** + * SettingsStore + * + * Exactly what it sounds like. + * + * @copyright Ryan McGrath 2018 + */ + +import moment from 'moment'; +import {observable, action, runInAction} from 'mobx'; + +class Store { + @observable settings; + + constructor() { + this.settings = {}; + } +}; + +export default new Store(); diff --git a/stores/TournamentEventStore.js b/stores/TournamentEventStore.js new file mode 100644 index 0000000..5d97dde --- /dev/null +++ b/stores/TournamentEventStore.js @@ -0,0 +1,171 @@ +/** + * TournamentEventStore + * + * Store for tournament event data. Currently kind of dumb, but that's fine. + * + * @copyright Ryan McGrath 2018 + */ + +import {observable, action, runInAction} from 'mobx'; + +class Store { + @observable data; + @observable fetchingData; + + constructor() { + this.data = {}; + } + + fetchEventExpanded = async (tournamentSlug, eventSlug, opts) => { + const api = 'https://smash.gg/api/-/gg_api./tournament/' + tournamentSlug + '/event/' + eventSlug + ';'; + const args = Object.assign({ + expand: JSON.stringify(['phase', 'groups']), + reset: false, + slug: tournamentSlug, + eventSlug: eventSlug + }, opts || {}); + + return fetch( + api + Object.keys(args).map(key => `${key}=${args[key]}`).join(';') + '?returnMeta=true' + ).then(response => response.json()).then(data => { + if(typeof data.success !== 'undefined' && !data.success) + throw new Error(data.message); + + return Promise.resolve(data.entities.phase ? data.entities.phase.map(phase => phase) : []); + }); + } + +/** + * fetchStandings + * + * Given a set of slugs, fetches event standings. + * + * @arg tournamentSlug {String} Slug for the tournament (e.g, "the-mango"). + * @arg eventSlug {String} Slug for the event (e.g, "melee-singles"). + * @arg opts {Object} Optional object for overriding request properties. + * @return Promise + */ +/*const fetchEventStandings = (tournamentSlug, eventSlug, opts) => { + const api = 'https://smash.gg/api/-/gg_api./tournament/' + tournamentSlug + '/event/' + eventSlug + '/standings;'; + const args = Object.assign({ + entityId: null, + entityType: 'event', + slug: tournamentSlug, + eventSlug: eventSlug, + expand: JSON.stringify(['entrants', 'standingGroup', 'attendee']), + mutations: JSON.stringify(['playerData', 'standingLosses']), + page: 1, + per_page: 25 + }, opts || {}); + + return fetch( + api + Object.keys(args).map(key => `${key}=${args[key]}`).join(';') + '?returnMeta=true' + ).then(response => response.json()).then(data => { + var s = data.items.entities.standing, + l = s.length; + + return Promise.resolve(data.items.entities.entrants.map(entrants => { + if(typeof entrants.losses === 'undefined') + entrants.losses = []; + + data.items.entities.standing.forEach(standing => { + if(standing.entityId === entrants.id && standing.mutations) + entrants.losses = entrants.losses.concat(standing.mutations.losses.map(loss => loss.name)); + }); + + return entrants; + }).sort((a, b) => a.finalPlacement > b.finalPlacement)); + }); +}; + +/** + * fetchBracketData + * + * Given a set of slugs/bracket ID, fetches bracket data for rendering. Performs a lot + * of smaller operations to transpose it into an actually usable format for display. + * + * @arg tournamentSlug {String} Slug for the tournament (e.g, "the-mango"). + * @arg eventSlug {String} Slug for the event (e.g, "melee-singles"). + * @arg bracketID {String or Number} ID for the bracket - SmashGG calls this a phase. Go fig. + * @arg opts {Object} Optional object for overriding request properties. + * @return Promise + +const fetchBracketData = (tournamentSlug, eventSlug, bracketID, opts) => { + const api = 'https://smash.gg/api/-/gg_api./tournament/' + tournamentSlug + '/event/' + eventSlug + '/phase_groups;'; + const args = { + slug: tournamentSlug, + eventSlug: eventSlug, + expand: JSON.stringify(['results', 'character']), + mutations: JSON.stringify(['ffaData', 'playerData']), + filter: JSON.stringify({phaseId: bracketID}), + getSingleBracket: true, + page: 1, + per_page: 20, + reset: false, + }; + + return fetch( + api + Object.keys(args).map(key => `${key}=${args[key]}`).join(';') + '?returnMeta=true' + ).then(response => response.json()).then(data => { + const grands = []; + const brackets = { + winners: [], + losers: [] + }; + + // Filter through the set list and make sure each object is filled out with necessary data, + // and then place them into their bracket accordingly. Brackets will be sorted afterwards. + data.items.entities.sets.forEach(function(result) { + if(result.entrant1Id === null || result.entrant2Id === null) + return; + + result.entrant1 = {}; + result.entrant2 = {}; + + data.items.entities.entrants.forEach(function(entrant) { + if(entrant.id === result.entrant1Id) + result.entrant1 = entrant; + + if(entrant.id === result.entrant2Id) + result.entrant2 = entrant; + }); + + if(result.isGF) { + grands.push(result); + } else { + var isLosers = result.displayRound < 0, + key = isLosers ? 'losers' : 'winners', + idx = isLosers ? (result.displayRound * -1) : result.displayRound; + + while(brackets[key].length < idx) { + brackets[key].push({ + title: '', // Filled in later~ + sets: [] + }); + } + + brackets[key][idx - 1].title = result.fullRoundText; + brackets[key][idx - 1].sets.push(result); + if(!brackets[key][idx - 1].key) + brackets[key][idx - 1].key = v4(); + } + }); + + // GFs are technically in the winners bracket, but for presentation purposes they're shoved + // in after to be like how smash.gg presents them. + if(grands.length > 0) { + grands.forEach(grandFinal => { + brackets.winners.push({ + title: 'Grand Finals', + sets: [grandFinal], + key: v4() + }); + }); + } + + return Promise.resolve(brackets); + }); +};*/ +} + +export default new Store(); diff --git a/stores/TournamentsListingStore.js b/stores/TournamentsListingStore.js new file mode 100644 index 0000000..49dcbfa --- /dev/null +++ b/stores/TournamentsListingStore.js @@ -0,0 +1,140 @@ +/** + * TournamentListingsStore + * + * Store for tournament listing and search data. + * + * @copyright Ryan McGrath 2018 + */ + +import axios from 'axios'; +import moment from 'moment'; +import {observable, action, runInAction} from 'mobx'; + +const placeholders = [ + require('../images/placeholder1.png'), + require('../images/placeholder2.png'), + require('../images/placeholder3.png'), +]; + +class Store { + @observable tournamentsList; + @observable searchResults; + @observable fetchingData; + @observable mode; + + constructor() { + this.tournamentsList = []; + this.searchResults = []; + this.fetchingData = false; + this.mode = 'featured'; + } + + @action('Fetch Featured Tournaments') + fetchFeatured = async (opts) => { + this.fetchingData = true; + this.mode = 'featured'; + + const args = Object.assign({ + list: 'featured', + reset: false + }, opts || {}); + + const api = 'https://smash.gg/api/-/gg_api./tournaments/list/featured;'; + const url = api + Object.keys(args).map(key => `${key}=${args[key]}`).join(';') + '?returnMeta=true' + const response = await fetch(url); + const data = await response.json(); + + runInAction('Parse tournament listing data', () => { + this.tournamentsList = this.parseData(data.entities.tournament, data.entities.event); + this.mode = 'featured'; + this.fetchingData = false; + }); + } + + searchTimer = null; + cancelSource = null; + + @action('Perform Search') + search = async (query) => { + if(this.searchTimer) { + clearTimeout(this.searchTimer); + + if(this.cancelSource) { + this.cancelSource.cancel(); + this.cancelSource = null; + } + } + + if(query === '') { + this.mode = 'featured'; + this.fetchingData = false; + return; + } + + this.searchTimer = setTimeout(async () => { + this.fetchingData = true; + this.cancelSource = axios.CancelToken.source(); + + const api = 'https://smash.gg/api/-/gg_api./public/tournaments/schedule;'; + const args = { + filter: encodeURIComponent(query), + page: 1, + per_page: 60, + reset: false, + schedule: true + }; + + const url = api + Object.keys(args).map(key => `${key}=${args[key]}`).join(';'); + axios.get(url, { + cancelToken: this.cancelSource.token, + params: {returnMeta: 'true'} + }).then(response => { + runInAction('Parse search results data', () => { + this.searchResults = this.parseData(response.data.items.entities.tournament, response.data.items.entities.event); + this.mode = 'search'; + this.fetchingData = false; + }); + }).catch(thrown => { + // There's no need to do anything here, at least for now. + if(axios.isCancel(thrown)) + return; + + console.error(thrown); + }); + }, 500); + } + + parseData = (tourneys, events) => { + var tournaments = []; + + for(var i = 0, l = tourneys.length; i < l; i++) { + var tourney = tourneys[i]; + if(tourney['private'] || tourney.sandboxMode || tourney.testMode) + continue; + + var img = tourney.images.filter(img => img.width === 1200); + if(img.length > 0) + tourney.memeleePromoImage = {width: img[0].width, msrc: {uri: img[0].url}}; + else + tourney.memeleePromoImage = {width: 1200, msrc: placeholders[Math.floor(Math.random() * 3)]}; + + var starts = moment.unix(tourney.startAt).utc(), + ends = moment.unix(tourney.endAt); + + tourney.memeleeTournamentRange = starts.format('MM/DD/YYYY') + ' - ' + ends.format('MM/DD/YYYY'); + tourney.memeleeEventsCount = tourney.eventIds.length; + + /* Stitch together the event listings... */ + tourney.memeleeEvents = tourney.eventIds.map(eventID => { + const evts = events.filter(obj => obj.id === eventID); + return evts.length > 0 ? evts[0] : null; + }).filter(evt => evt !== null); + + tournaments.push(tourney) + } + + return tournaments; + } +} + +export default new Store(); diff --git a/stores/index.js b/stores/index.js new file mode 100644 index 0000000..9b6520f --- /dev/null +++ b/stores/index.js @@ -0,0 +1,33 @@ +/** + * smashGG + * + * Handles communication with Smash.gg endpoints. Mostly promise based. + * + * @copyright Ryan McGrath 2018, unless the content belongs to Smash.gg, in which case, + * it's them. + */ + +import {v4} from 'uuid'; +import moment from 'moment'; +import {create} from 'mobx-persist'; +import {AsyncStorage} from 'react-native'; + +import TournamentsListingStore from './TournamentsListingStore'; +import TournamentEventStore from './TournamentEventStore'; +import BookmarksStore from './BookmarksStore'; +import SettingsStore from './SettingsStore'; + +const hydrate = create({ + storage: AsyncStorage +}); + +const stores = { + Tournaments: TournamentsListingStore, + TournamentEventStore: TournamentEventStore, + Bookmarks: BookmarksStore, + Settings: SettingsStore +}; + +// Hydrate + +export default stores; diff --git a/styles/index.js b/styles/index.js new file mode 100644 index 0000000..a3322a7 --- /dev/null +++ b/styles/index.js @@ -0,0 +1,364 @@ +/** + * Stylesheets + * + * App-wide stylesheets, in one sheet because I'm lazy as hell. + * + * @copyright Ryan McGrath 2018 + */ + +import {StyleSheet, Platform} from 'react-native'; + +const PlatformEnum = {IOS: 'ios', ANDROID: 'android'}; + +const textColor = '#e4e4e7'; +const iconColor = '#00a1fe'; + +const stylesheet = StyleSheet.create({ + searchContainerStyle: { + backgroundColor: '#12191f', + borderTopWidth: 0, + borderBottomWidth: 0, + paddingLeft: 8, + paddingRight: 8 + }, + + tournamentsListView: {paddingBottom: 16}, + + tournamentRowWrapper: { + paddingLeft: 16, + paddingRight: 16, + paddingTop: 16, + paddingBottom: 6 + }, + + tournamentRow: { + justifyContent: 'center', + backgroundColor: '#1d2730', + borderRadius: 6, + overflow: 'hidden' + }, + + tournamentRowPromoImage: { + backgroundColor: '#181b26', + }, + + tournamentRowTextWrapper: { + flex: 1, + padding: 16 + }, + + tournamentRowName: { color: textColor, fontSize: 16, fontWeight: 'bold', marginBottom: 8 }, + tournamentRowDateRange: { color: textColor, marginBottom: 8 }, + tournamentRowLocation: { color: textColor, marginBottom: 8 }, + tournamentRowEventsCount: { color: textColor }, + + tournamentInfoHeader: { + backgroundColor: '#181b26', + height: 200 + }, + + tournamentInfoTabsStyle: { + borderWidth: 0, + paddingVertical: 10, + backgroundColor: '#101319' + }, + + tournamentInfoTabTextStyle: { + color: iconColor + }, + + tournamentInfoActiveTabStyle: { + backgroundColor: iconColor + }, + + tournamentDetailsTextWrapper: { + padding: 18 + }, + + tournamentDetailsEventWrapper: { + paddingHorizontal: 16, + paddingVertical: 16, + borderBottomWidth: 0.5, + borderBottomColor: '#0e141a', + backgroundColor: '#1d2730' + }, + + tournamentDetailsEventItem: { + color: textColor, + fontSize: 16, + }, + + tournamentInfoButtonsRow: { + flexDirection: 'row' + }, + + tournamentRegistrationButton: { + backgroundColor: iconColor, + padding: 10, + flex: 1 + }, + + tournamentRegistrationButtonText: { + color: textColor, + textAlign: 'center', + fontWeight: 'bold' + }, + + tournamentBookmarkButton: { + flex: 1, + backgroundColor: iconColor, + padding: 10, + } +}); + +/** + * navigatorStyles + * + * Handles styling the navigation (top) bar. Needs to be a separate property to avoid + * React Native's CSS parsing junk. + */ +stylesheet.navigatorStyles = { + navBarBackgroundColor: '#12191f', + navBarTextColor: '#e6e6e8', + navBarButtonColor: '#307ace', + navBarTranslucent: false, + navBarNoBorder: true, + screenBackgroundColor: '#12191f', + largeTitle: true, + statusBarTextColorScheme: 'light' +}; + +/** + * tabBarStyles + * + * Handles styling the tab (bottom) bar. Needs to be a separate property to avoid + * React Native's CSS parsing junk. + */ +stylesheet.tabBarStyles = { + tabBarBackgroundColor: '#101319', + tabBarTranslucent: true, + tabBarButtonColor: '#25313a', + tabBarSelectedButtonColor: '#0090eb', + tabBarHideShadow: false +}; + +/** + * tournamentPromoIconColors + * + * Colors for specific icons. + */ +stylesheet.tournamentPromoIconColors = { + calendar: iconColor, + mapMarker: iconColor, + eventsCount: iconColor, + attendeesCount: iconColor +}; + +/** + * tournamentDetailsText + * + * Styles for the markdown-parsed area that describes tournaments. Separate property + * due to the way it relies on some annoying key words. + */ +stylesheet.tournamentDetailsText = StyleSheet.create({ + view: {}, + + codeBlock: { + borderWidth: 1, + borderColor: "#1d2730", + backgroundColor: "#1d2730", + padding: 10, + borderRadius: 4, + color: textColor + }, + + codeInline: { + borderWidth: 1, + borderColor: "#1d2730", + backgroundColor: "#1d2730", + padding: 10, + borderRadius: 4, + color: textColor + }, + + del: { + backgroundColor: "#000000" + }, + + em: { + fontStyle: "italic" + }, + + headingContainer: { + flexDirection: "row" + }, + + heading: {}, + + heading1: { + fontSize: 26, + lineHeight: 32, + marginBottom: 15 + }, + + heading2: { + fontSize: 24 + }, + + heading3: { + fontSize: 18 + }, + + heading4: { + fontSize: 16 + }, + + heading5: { + fontSize: 13 + }, + + heading6: { + fontSize: 11 + }, + + hr: { + backgroundColor: '#28333d', + height: 1, + marginVertical: 10 + }, + + blockquote: { + paddingHorizontal: 20, + paddingVertical: 10, + margin: 20, + backgroundColor: '#1d2730' + }, + + inlineCode: { + borderRadius: 3, + borderWidth: 1, + fontFamily: "Courier", + fontWeight: "bold" + }, + + list: {}, + + listItem: { + flex: 1, + flexWrap: "wrap" + // backgroundColor: 'green', + }, + + listUnordered: {}, + + listUnorderedItem: { + flexDirection: "row", + justifyContent: "flex-start" + }, + + listUnorderedItemIcon: { + marginLeft: 10, + marginRight: 10, + + ...Platform.select({ + [PlatformEnum.IOS]: { + lineHeight: 36 + }, + + [PlatformEnum.ANDROID]: { + lineHeight: 30 + } + }) + }, + + listUnorderedItemText: { + fontSize: 20, + lineHeight: 20 + }, + + listOrdered: {}, + + listOrderedItem: { + flexDirection: "row" + }, + + listOrderedItemIcon: { + marginLeft: 10, + marginRight: 10, + + ...Platform.select({ + [PlatformEnum.IOS]: {lineHeight: 36}, + [PlatformEnum.ANDROID]: {lineHeight: 30} + }) + }, + + listOrderedItemText: { + fontWeight: "bold", + lineHeight: 20 + }, + + paragraph: { + marginTop: 10, + marginBottom: 10, + flexWrap: "wrap", + flexDirection: "row", + alignItems: "flex-start", + justifyContent: "flex-start" + }, + + hardbreak: { + width: '100%', + height: 1 + }, + + strong: { + fontWeight: "bold" + }, + + table: { + borderWidth: 1, + borderColor: "#000000", + borderRadius: 3 + }, + + tableHeader: {}, + + tableHeaderCell: { + flex: 1, + // color: '#000000', + padding: 5 + // backgroundColor: 'green', + }, + + tableRow: { + borderBottomWidth: 1, + borderColor: "#000000", + flexDirection: "row" + }, + + tableRowCell: { + flex: 1, + padding: 5 + }, + + text: {color: textColor, fontSize: 16, lineHeight: 22}, + + strikethrough: { + textDecorationLine: "line-through" + }, + + link: { + textDecorationLine: "underline" + }, + + u: { + borderColor: "#000000", + borderBottomWidth: 1 + }, + + image: { + flex: 1 + } +}); + +export default stylesheet; diff --git a/utils/MobxRnnProvider.js b/utils/MobxRnnProvider.js new file mode 100644 index 0000000..55b600a --- /dev/null +++ b/utils/MobxRnnProvider.js @@ -0,0 +1,48 @@ +/** + * MobxRnnProvider + * + * Provider that works for this navigation structure. + * + * (Thanks to github/@megahertz - https://gist.github.com/megahertz/3aad3adafa0f7d212b81f5e371863637) + * + * @copyright Ryan McGrath 2018 + */ + +import {Provider} from 'mobx-react/native'; + +const SPECIAL_REACT_KEYS = { + children: true, + key: true, + ref: true +}; + +export default class MobxRnnProvider extends Provider { + props: { + store: Object + }; + + context: { + mobxStores: Object + }; + + getChildContext() { + const stores = {}; + + // inherit stores + const baseStores = this.context.mobxStores; + if(baseStores) { + for(let key in baseStores) { + stores[key] = baseStores[key]; + } + } + + // add own stores + for(let key in this.props.store) { + if(!SPECIAL_REACT_KEYS[key]) { + stores[key] = this.props.store[key]; + } + } + + return {mobxStores: stores}; + } +}