diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 index f455f424..c34fb51e --- a/.gitignore +++ b/.gitignore @@ -84,4 +84,4 @@ typings/ bin/ obj/ -.vscode/ +.vscode/ \ No newline at end of file diff --git a/App/.babelrc b/App/.babelrc new file mode 100755 index 00000000..d4b74b5b --- /dev/null +++ b/App/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["module:metro-react-native-babel-preset"] +} diff --git a/App/.buckconfig b/App/.buckconfig new file mode 100755 index 00000000..934256cb --- /dev/null +++ b/App/.buckconfig @@ -0,0 +1,6 @@ + +[android] + target = Google Inc.:Google APIs:23 + +[maven_repositories] + central = https://repo1.maven.org/maven2 diff --git a/App/.flowconfig b/App/.flowconfig new file mode 100755 index 00000000..1043c82d --- /dev/null +++ b/App/.flowconfig @@ -0,0 +1,70 @@ +[ignore] +; We fork some components by platform +.*/*[.]android.js + +; Ignore "BUCK" generated dirs +/\.buckd/ + +; Ignore unexpected extra "@providesModule" +.*/node_modules/.*/node_modules/fbjs/.* + +; Ignore duplicate module providers +; For RN Apps installed via npm, "Libraries" folder is inside +; "node_modules/react-native" but in the source repo it is in the root +.*/Libraries/react-native/React.js + +; Ignore polyfills +.*/Libraries/polyfills/.* + +; Ignore metro +.*/node_modules/metro/.* + +[include] + +[libs] +node_modules/react-native/Libraries/react-native/react-native-interface.js +node_modules/react-native/flow/ +node_modules/react-native/flow-github/ + +[options] +emoji=true + +esproposal.optional_chaining=enable +esproposal.nullish_coalescing=enable + +module.system=haste +module.system.haste.use_name_reducers=true +# get basename +module.system.haste.name_reducers='^.*/\([a-zA-Z0-9$_.-]+\.js\(\.flow\)?\)$' -> '\1' +# strip .js or .js.flow suffix +module.system.haste.name_reducers='^\(.*\)\.js\(\.flow\)?$' -> '\1' +# strip .ios suffix +module.system.haste.name_reducers='^\(.*\)\.ios$' -> '\1' +module.system.haste.name_reducers='^\(.*\)\.android$' -> '\1' +module.system.haste.name_reducers='^\(.*\)\.native$' -> '\1' +module.system.haste.paths.blacklist=.*/__tests__/.* +module.system.haste.paths.blacklist=.*/__mocks__/.* +module.system.haste.paths.blacklist=/node_modules/react-native/Libraries/Animated/src/polyfills/.* +module.system.haste.paths.whitelist=/node_modules/react-native/Libraries/.* + +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' + +module.file_ext=.js +module.file_ext=.jsx +module.file_ext=.json +module.file_ext=.native.js + +suppress_type=$FlowIssue +suppress_type=$FlowFixMe +suppress_type=$FlowFixMeProps +suppress_type=$FlowFixMeState + +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy +suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError + +[version] +^0.78.0 diff --git a/App/.gitattributes b/App/.gitattributes new file mode 100755 index 00000000..d42ff183 --- /dev/null +++ b/App/.gitattributes @@ -0,0 +1 @@ +*.pbxproj -text diff --git a/App/.gitignore b/App/.gitignore new file mode 100755 index 00000000..5d647565 --- /dev/null +++ b/App/.gitignore @@ -0,0 +1,56 @@ +# OSX +# +.DS_Store + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace + +# Android/IntelliJ +# +build/ +.idea +.gradle +local.properties +*.iml + +# node.js +# +node_modules/ +npm-debug.log +yarn-error.log + +# BUCK +buck-out/ +\.buckd/ +*.keystore + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/ + +*/fastlane/report.xml +*/fastlane/Preview.html +*/fastlane/screenshots + +# Bundle artifact +*.jsbundle diff --git a/App/.watchmanconfig b/App/.watchmanconfig new file mode 100755 index 00000000..9e26dfee --- /dev/null +++ b/App/.watchmanconfig @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/App/android/app/BUCK b/App/android/app/BUCK new file mode 100755 index 00000000..1ca52181 --- /dev/null +++ b/App/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.app", +) + +android_resource( + name = "res", + package = "com.app", + 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/App/android/app/build.gradle b/App/android/app/build.gradle new file mode 100755 index 00000000..b07108a7 --- /dev/null +++ b/App/android/app/build.gradle @@ -0,0 +1,166 @@ +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 rootProject.ext.compileSdkVersion + buildToolsVersion rootProject.ext.buildToolsVersion + + defaultConfig { + applicationId "com.app" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + 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" + } + } + signingConfigs { + release { + if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) { + storeFile file(MYAPP_RELEASE_STORE_FILE) + storePassword MYAPP_RELEASE_STORE_PASSWORD + keyAlias MYAPP_RELEASE_KEY_ALIAS + keyPassword MYAPP_RELEASE_KEY_PASSWORD + } + } + } + buildTypes { + release { + signingConfig signingConfigs.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 project(':react-native-camera') + compile project(':react-native-vector-icons') + compile project(':react-native-gesture-handler') + implementation fileTree(dir: "libs", include: ["*.jar"]) + implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}" + implementation "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/App/android/app/proguard-rules.pro b/App/android/app/proguard-rules.pro new file mode 100755 index 00000000..a92fa177 --- /dev/null +++ b/App/android/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# 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 *; +#} diff --git a/App/android/app/src/main/AndroidManifest.xml b/App/android/app/src/main/AndroidManifest.xml new file mode 100755 index 00000000..94c48efd --- /dev/null +++ b/App/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + diff --git a/App/android/app/src/main/assets/fonts/AntDesign.ttf b/App/android/app/src/main/assets/fonts/AntDesign.ttf new file mode 100755 index 00000000..2abf0354 Binary files /dev/null and b/App/android/app/src/main/assets/fonts/AntDesign.ttf differ diff --git a/App/android/app/src/main/assets/fonts/Entypo.ttf b/App/android/app/src/main/assets/fonts/Entypo.ttf new file mode 100755 index 00000000..1c8f5e91 Binary files /dev/null and b/App/android/app/src/main/assets/fonts/Entypo.ttf differ diff --git a/App/android/app/src/main/assets/fonts/EvilIcons.ttf b/App/android/app/src/main/assets/fonts/EvilIcons.ttf new file mode 100755 index 00000000..6868f7bb Binary files /dev/null and b/App/android/app/src/main/assets/fonts/EvilIcons.ttf differ diff --git a/App/android/app/src/main/assets/fonts/Feather.ttf b/App/android/app/src/main/assets/fonts/Feather.ttf new file mode 100755 index 00000000..fc963dfe Binary files /dev/null and b/App/android/app/src/main/assets/fonts/Feather.ttf differ diff --git a/App/android/app/src/main/assets/fonts/FontAwesome.ttf b/App/android/app/src/main/assets/fonts/FontAwesome.ttf new file mode 100755 index 00000000..35acda2f Binary files /dev/null and b/App/android/app/src/main/assets/fonts/FontAwesome.ttf differ diff --git a/App/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf b/App/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf new file mode 100755 index 00000000..953d567b Binary files /dev/null and b/App/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf differ diff --git a/App/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf b/App/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf new file mode 100755 index 00000000..235101c2 Binary files /dev/null and b/App/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf differ diff --git a/App/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf b/App/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf new file mode 100755 index 00000000..7c92e986 Binary files /dev/null and b/App/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf differ diff --git a/App/android/app/src/main/assets/fonts/Foundation.ttf b/App/android/app/src/main/assets/fonts/Foundation.ttf new file mode 100755 index 00000000..6cce217d Binary files /dev/null and b/App/android/app/src/main/assets/fonts/Foundation.ttf differ diff --git a/App/android/app/src/main/assets/fonts/Ionicons.ttf b/App/android/app/src/main/assets/fonts/Ionicons.ttf new file mode 100644 index 00000000..f343a943 Binary files /dev/null and b/App/android/app/src/main/assets/fonts/Ionicons.ttf differ diff --git a/App/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf b/App/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf new file mode 100755 index 00000000..42a11c88 Binary files /dev/null and b/App/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf differ diff --git a/App/android/app/src/main/assets/fonts/MaterialIcons.ttf b/App/android/app/src/main/assets/fonts/MaterialIcons.ttf new file mode 100755 index 00000000..7015564a Binary files /dev/null and b/App/android/app/src/main/assets/fonts/MaterialIcons.ttf differ diff --git a/App/android/app/src/main/assets/fonts/Octicons.ttf b/App/android/app/src/main/assets/fonts/Octicons.ttf new file mode 100755 index 00000000..0ffe00b9 Binary files /dev/null and b/App/android/app/src/main/assets/fonts/Octicons.ttf differ diff --git a/App/android/app/src/main/assets/fonts/SimpleLineIcons.ttf b/App/android/app/src/main/assets/fonts/SimpleLineIcons.ttf new file mode 100755 index 00000000..6ecb6868 Binary files /dev/null and b/App/android/app/src/main/assets/fonts/SimpleLineIcons.ttf differ diff --git a/App/android/app/src/main/assets/fonts/Zocial.ttf b/App/android/app/src/main/assets/fonts/Zocial.ttf new file mode 100755 index 00000000..e4ae46c6 Binary files /dev/null and b/App/android/app/src/main/assets/fonts/Zocial.ttf differ diff --git a/App/android/app/src/main/java/com/app/MainActivity.java b/App/android/app/src/main/java/com/app/MainActivity.java new file mode 100755 index 00000000..0f886891 --- /dev/null +++ b/App/android/app/src/main/java/com/app/MainActivity.java @@ -0,0 +1,15 @@ +package com.app; + +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 "app"; + } +} diff --git a/App/android/app/src/main/java/com/app/MainApplication.java b/App/android/app/src/main/java/com/app/MainApplication.java new file mode 100755 index 00000000..b9754198 --- /dev/null +++ b/App/android/app/src/main/java/com/app/MainApplication.java @@ -0,0 +1,51 @@ +package com.app; + +import android.app.Application; + +import com.facebook.react.ReactApplication; +import org.reactnative.camera.RNCameraPackage; +import com.oblador.vectoricons.VectorIconsPackage; +import com.swmansion.gesturehandler.react.RNGestureHandlerPackage; +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(), + new RNCameraPackage(), + new VectorIconsPackage(), + new RNGestureHandlerPackage() + ); + } + + @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/App/android/app/src/main/res/drawable-hdpi/icon.png b/App/android/app/src/main/res/drawable-hdpi/icon.png new file mode 100755 index 00000000..bb58ec1b Binary files /dev/null and b/App/android/app/src/main/res/drawable-hdpi/icon.png differ diff --git a/App/android/app/src/main/res/drawable-ldpi/icon.png b/App/android/app/src/main/res/drawable-ldpi/icon.png new file mode 100755 index 00000000..08ead39a Binary files /dev/null and b/App/android/app/src/main/res/drawable-ldpi/icon.png differ diff --git a/App/android/app/src/main/res/drawable-mdpi/icon.png b/App/android/app/src/main/res/drawable-mdpi/icon.png new file mode 100755 index 00000000..d7d5010a Binary files /dev/null and b/App/android/app/src/main/res/drawable-mdpi/icon.png differ diff --git a/App/android/app/src/main/res/drawable-xhdpi/icon.png b/App/android/app/src/main/res/drawable-xhdpi/icon.png new file mode 100755 index 00000000..478a2c57 Binary files /dev/null and b/App/android/app/src/main/res/drawable-xhdpi/icon.png differ diff --git a/App/android/app/src/main/res/drawable-xxhdpi/icon.png b/App/android/app/src/main/res/drawable-xxhdpi/icon.png new file mode 100755 index 00000000..5a16987c Binary files /dev/null and b/App/android/app/src/main/res/drawable-xxhdpi/icon.png differ diff --git a/App/android/app/src/main/res/drawable-xxxhdpi/icon.png b/App/android/app/src/main/res/drawable-xxxhdpi/icon.png new file mode 100755 index 00000000..f8f7db9c Binary files /dev/null and b/App/android/app/src/main/res/drawable-xxxhdpi/icon.png differ diff --git a/App/android/app/src/main/res/drawable/icon.png b/App/android/app/src/main/res/drawable/icon.png new file mode 100755 index 00000000..478a2c57 Binary files /dev/null and b/App/android/app/src/main/res/drawable/icon.png differ diff --git a/App/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/App/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100755 index 00000000..1ace9a10 Binary files /dev/null and b/App/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/App/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/App/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100755 index 00000000..1ace9a10 Binary files /dev/null and b/App/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/App/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/App/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100755 index 00000000..ec2bb085 Binary files /dev/null and b/App/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/App/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/App/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100755 index 00000000..ec2bb085 Binary files /dev/null and b/App/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/App/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/App/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100755 index 00000000..cf790963 Binary files /dev/null and b/App/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/App/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/App/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100755 index 00000000..cf790963 Binary files /dev/null and b/App/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/App/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/App/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100755 index 00000000..44da4bbf Binary files /dev/null and b/App/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/App/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/App/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100755 index 00000000..44da4bbf Binary files /dev/null and b/App/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/App/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/App/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100755 index 00000000..142707bf Binary files /dev/null and b/App/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/App/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/App/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100755 index 00000000..142707bf Binary files /dev/null and b/App/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/App/android/app/src/main/res/values/strings.xml b/App/android/app/src/main/res/values/strings.xml new file mode 100755 index 00000000..23f81503 --- /dev/null +++ b/App/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + ENEI 2019 + diff --git a/App/android/app/src/main/res/values/styles.xml b/App/android/app/src/main/res/values/styles.xml new file mode 100755 index 00000000..319eb0ca --- /dev/null +++ b/App/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/App/android/app/src/main/res/web_hi_res_512.png b/App/android/app/src/main/res/web_hi_res_512.png new file mode 100755 index 00000000..5482bbc6 Binary files /dev/null and b/App/android/app/src/main/res/web_hi_res_512.png differ diff --git a/App/android/build.gradle b/App/android/build.gradle new file mode 100755 index 00000000..a1e80854 --- /dev/null +++ b/App/android/build.gradle @@ -0,0 +1,39 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext { + buildToolsVersion = "27.0.3" + minSdkVersion = 16 + compileSdkVersion = 27 + targetSdkVersion = 26 + supportLibVersion = "27.1.1" + } + repositories { + google() + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:3.1.4' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + mavenLocal() + google() + jcenter() + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url "$rootDir/../node_modules/react-native/android" + } + } +} + + +task wrapper(type: Wrapper) { + gradleVersion = '4.4' + distributionUrl = distributionUrl.replace("bin", "all") +} diff --git a/App/android/gradle.properties b/App/android/gradle.properties new file mode 100755 index 00000000..7e7af5c3 --- /dev/null +++ b/App/android/gradle.properties @@ -0,0 +1,25 @@ +# 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.enableAapt2=false + +MYAPP_RELEASE_STORE_FILE=my-release-key.keystore +MYAPP_RELEASE_KEY_ALIAS=my-key-alias +MYAPP_RELEASE_STORE_PASSWORD=aspire98H +MYAPP_RELEASE_KEY_PASSWORD=encontroINFORMATICA2019 \ No newline at end of file diff --git a/App/android/gradle/wrapper/gradle-wrapper.jar b/App/android/gradle/wrapper/gradle-wrapper.jar new file mode 100755 index 00000000..01b8bf6b Binary files /dev/null and b/App/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/App/android/gradle/wrapper/gradle-wrapper.properties b/App/android/gradle/wrapper/gradle-wrapper.properties new file mode 100755 index 00000000..b6517bb1 --- /dev/null +++ b/App/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-4.4-all.zip diff --git a/App/android/gradlew b/App/android/gradlew new file mode 100755 index 00000000..cccdd3d5 --- /dev/null +++ b/App/android/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# 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\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# 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 +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +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" -a "$nonstop" = "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"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # 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 + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/App/android/gradlew.bat b/App/android/gradlew.bat new file mode 100755 index 00000000..f9553162 --- /dev/null +++ b/App/android/gradlew.bat @@ -0,0 +1,84 @@ +@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 + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@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= + +@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 Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_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=%* + +: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/App/android/keystores/BUCK b/App/android/keystores/BUCK new file mode 100755 index 00000000..88e4c31b --- /dev/null +++ b/App/android/keystores/BUCK @@ -0,0 +1,8 @@ +keystore( + name = "debug", + properties = "debug.keystore.properties", + store = "debug.keystore", + visibility = [ + "PUBLIC", + ], +) diff --git a/App/android/keystores/debug.keystore.properties b/App/android/keystores/debug.keystore.properties new file mode 100755 index 00000000..121bfb49 --- /dev/null +++ b/App/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/App/android/settings.gradle b/App/android/settings.gradle new file mode 100755 index 00000000..9383630d --- /dev/null +++ b/App/android/settings.gradle @@ -0,0 +1,9 @@ +rootProject.name = 'app' +include ':react-native-camera' +project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android') +include ':react-native-vector-icons' +project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') +include ':react-native-gesture-handler' +project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android') + +include ':app' diff --git a/App/app.json b/App/app.json new file mode 100755 index 00000000..45ef5aa6 --- /dev/null +++ b/App/app.json @@ -0,0 +1,4 @@ +{ + "name": "app", + "displayName": "app" +} \ No newline at end of file diff --git a/App/app/App.js b/App/app/App.js new file mode 100755 index 00000000..07faa171 --- /dev/null +++ b/App/app/App.js @@ -0,0 +1,346 @@ +import React, {Component} from 'react'; +import { + Platform, + StyleSheet, + Text, + View, + StatusBar, + Dimensions, + Image, + ActivityIndicator, + Button, + TouchableHighlight, + Keyboard + +} from 'react-native'; + +import {bindActionCreators} from 'redux'; +import {connect} from 'react-redux'; + +import QRCodeScanner from 'react-native-qrcode-scanner'; +import {UtilStyles} from './assets/styles' + +import * as Actions from './store/actions'; //Import your actions + +import {RkButton, RkTheme, RkText, RkTextInput} from 'react-native-ui-kitten'; + +import Modal from "react-native-modal"; + +import Router from './Router' + +import Icon from "react-native-vector-icons/Ionicons" + +const SCREEN_HEIGHT = Dimensions.get("window").height; +const SCREEN_WIDTH = Dimensions.get("window").width; + + +class App extends Component { + + _activate=()=>{ + + this.setState({ isModalVisible: !this.state.isModalVisible}); + this.scanner.reactivate(); + + } + _tryLogin=()=>{ + + console.log(this.state.text) + this.scanner.reactivate(); + this.props.login(this.state.username, this.state.text); + + + + } + + _toggleModal = () => + this.setState({ isModalVisible: !this.state.isModalVisible }); + + constructor(props) { + + super(props); + + this.state = { + + token: {valid: false}, + tokenData: '', + onHold: true, + logged: false, + isModalVisible: false, + state : {text: ''}, + username:'', + failedAttempt: false, + push:4 + + }; + + } + _print=()=>{ + console.log("hello") + this.setState({push:0}) + } + checkValue=(e)=>{ + console.log("check"+e) + } + componentDidMount() { + this.setState({isModalVisible: false}) + //verifica se o utilizador tem token guardado + this.props.checkUser(); + this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow); + this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this._keyboardDidHide); + + + } + _keyboardDidShow () { + //alert('Keyboard Shown'); + // this.setState({push:0}) + + } + + _keyboardDidHide () { + + //this.setState({push:4}) + + } + onSuccess = (e) => { + + this.setState({ isModalVisible: !this.state.isModalVisible }); + // this.props.login(e.data, 'f8908cc0'); + this.setState({username:e.data}) + + console.log("tentativa de login"); + + + }; + + render() { + + if (this.props.onHold && !this.props.logged) { + + + return ( + + CARREGANDO {this.props.onHold} + + + ) + + } + { + + //console.log('token... '+ this.props.logged) + + //se existir token + + if (this.props.logged) { + + return ( + + + ) + } + else { + + + //se não existir vai para o ecrã de scan QR + return ( + + { this.scanner = node }} + showMarker + + onRead={this.onSuccess.bind(this)} + cameraStyle={{height: SCREEN_HEIGHT}} + + customMarker={ + + + + + + + + + Introduza a password + + this.setState({text})} + clearButtonMode='always' + value={this.state.text} + clearTextOnFocus={true} + onSubmitEditing={Keyboard.dismiss} + /> + +