Merge branch 'master' of github.com:esteemapp/esteem-mobile into login-refactoring

This commit is contained in:
mistikk 2018-10-13 15:31:47 -04:00
commit e1b5d71b8b
56 changed files with 8962 additions and 1631 deletions

View File

@ -29,6 +29,9 @@ 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
@ -64,4 +67,4 @@ suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
[version]
^0.75.0
^0.78.0

7
.gitignore vendored
View File

@ -35,8 +35,6 @@ local.properties
node_modules/
npm-debug.log
yarn-error.log
config.js
!src/screens/steem-connect/config.js
# BUCK
buck-out/
@ -56,4 +54,7 @@ buck-out/
# Bundle artifact
*.jsbundle
keystore
config.js
!src/screens/steem-connect/config.js
keystore/

View File

@ -95,7 +95,7 @@ def enableProguardInReleaseBuilds = false
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion '28.0.2'
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "com.esteem"
@ -137,10 +137,10 @@ android {
}
dependencies {
compile project(':react-native-linear-gradient')
compile project(':realm')
compile project(':react-native-vector-icons')
compile project(':react-native-restart')
compile project(':react-native-linear-gradient')
compile project(':react-native-fast-image')
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"

View File

@ -3,10 +3,10 @@ package com.esteem;
import android.app.Application;
import com.facebook.react.ReactApplication;
import com.BV.LinearGradient.LinearGradientPackage;
import io.realm.react.RealmReactPackage;
import com.oblador.vectoricons.VectorIconsPackage;
import com.avishayil.rnrestart.ReactNativeRestartPackage;
import com.BV.LinearGradient.LinearGradientPackage;
import com.dylanvann.fastimage.FastImageViewPackage;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
@ -28,10 +28,10 @@ public class MainApplication extends Application implements ReactApplication {
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new LinearGradientPackage(),
new RealmReactPackage(),
new VectorIconsPackage(),
new ReactNativeRestartPackage(),
new LinearGradientPackage(),
new FastImageViewPackage()
);
}

View File

@ -13,7 +13,7 @@ buildscript {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
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

View File

@ -1,6 +1,5 @@
#Wed Sep 26 23:32:58 EET 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

View File

@ -1,12 +1,12 @@
rootProject.name = 'esteem'
include ':react-native-linear-gradient'
project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android')
include ':realm'
project(':realm').projectDir = new File(rootProject.projectDir, '../node_modules/realm/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-restart'
project(':react-native-restart').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-restart/android')
include ':react-native-linear-gradient'
project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android')
include ':react-native-fast-image'
project(':react-native-fast-image').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fast-image/android')

View File

@ -1,4 +1,4 @@
{
"name": "esteem",
"displayName": "esteem"
}
}

View File

@ -12,8 +12,8 @@
00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; };
00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; };
00E356F31AD99517003FC87E /* esteemTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* esteemTests.m */; };
00EA7CDF813A496396F37B62 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 56E30585028B4757AFB2F260 /* Octicons.ttf */; };
11D1A2F320CAFA9E000508D9 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
12085D907BCF4310AE841EB9 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B242092C489E46F489763E94 /* Feather.ttf */; };
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 */; };
@ -23,7 +23,8 @@
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
1FD6AD382A1C40938E1A4F4E /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D4E71579126B447188B83123 /* Octicons.ttf */; };
1954C43044AC4F14B97C7F24 /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B3E4DB34CA2240EDA2D0E831 /* SimpleLineIcons.ttf */; };
22E7846D4E9D48238888FCA4 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B7B24CFC3C0D490DA15DA29C /* MaterialIcons.ttf */; };
2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
@ -37,27 +38,26 @@
2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D16E6891FA4F8E400B85C8A /* libReact.a */; };
2DCD954D1E0B4F2C00145EB5 /* esteemTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* esteemTests.m */; };
2DF0FFEE2056DD460020B375 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; };
5A970712B67D4D3E880FACF7 /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 60B8ECE2B75A41409C5E7345 /* SimpleLineIcons.ttf */; };
620157480AC0446384C486A5 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C3C604F08F154AB7BB7781A8 /* Foundation.ttf */; };
62D327BAA2D142E4A9EC55F4 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5AC4147E86084FBA8814BCE9 /* MaterialIcons.ttf */; };
6CE8C7F361F44C63BBBAE1E9 /* libBVLinearGradient.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EDDDE364E5C4508B16ED939 /* libBVLinearGradient.a */; };
789EA10E61C845E0BB2EC9D3 /* libFastImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C9EDC249E2B441C984F426D1 /* libFastImage.a */; };
7C38F7E48880400891592857 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5FD4DA409A1C42EB89B6F3BC /* MaterialCommunityIcons.ttf */; };
8134509F8F3548E6A46AE80F /* rubicon-icon-font.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5D5AB59069724329806D80E2 /* rubicon-icon-font.ttf */; };
33DE90C197C9467AAB5EB802 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 8C8AE61985C54992AC765420 /* FontAwesome.ttf */; };
3AB14466CEC544049AD08811 /* libBVLinearGradient.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 02E3F06CE07E482488458FD3 /* libBVLinearGradient.a */; };
4EB85A02CD474B848E110697 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F5CD0C4AF7747D888A213F9 /* libz.tbd */; };
50F38870321E45BAAD4ECC10 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2F7FE3F27575464186B3A5EC /* Zocial.ttf */; };
5E482AACE164450FAD00E13F /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = FBBEEEBB9C8048F78189B2C0 /* libc++.tbd */; };
6406AB381029407B815B0B19 /* Roboto_medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E75C11A31EE54C5899D50416 /* Roboto_medium.ttf */; };
64D2BA75D6054D5B89967502 /* Roboto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C308EE3EEC7A48BD919DDFF2 /* Roboto.ttf */; };
75A37827C6324BFEA60CC6DA /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F084E460D2B1450B9827AB33 /* EvilIcons.ttf */; };
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
89E87D4D15E3405CAAABC8DB /* Roboto_medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2CB7FEA66264445A9035FB51 /* Roboto_medium.ttf */; };
8DDFF3D8476F4862B118D572 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F85E524A382E4A6A957E771B /* EvilIcons.ttf */; };
9CE84579A16E4530ACB21BE3 /* libRCTRestart.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DCAC90A21B43431A84847EBC /* libRCTRestart.a */; };
A4D99EE97F504E04ADAC2AE7 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BFB50DC91BBC4BDD95A818FD /* Entypo.ttf */; };
A58AFEDD1A994E5D85792786 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B3581C9185843E386F8226D /* libc++.tbd */; };
AAFABA2977754B7A8A966F38 /* Roboto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CBFA1E890EF94235B811F694 /* Roboto.ttf */; };
85DF300A6EDC4AE98CD8B5AB /* libFastImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A668FDF5F71F4AC7B4EC6B1D /* libFastImage.a */; };
912899FDD21841C7A2444920 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D81FE31209CF4D24AA4DAE1B /* Feather.ttf */; };
ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; };
CC18270D8A144D8BB1B92074 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 798FE1CBDA064EBDA4CD12C3 /* FontAwesome.ttf */; };
D667736551DF47A7925EDFB7 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F1B7D17736AC464DA683AB3A /* Ionicons.ttf */; };
DA84410F09C648E99513F11C /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A0E703B1D82B464482AAD10D /* libRNVectorIcons.a */; };
E41F2366F3EA43FD9B22CEFE /* libRealmReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 218B93019DD44DA89C47CD00 /* libRealmReact.a */; };
E4910A11500840519C89B56C /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CEE09FF1C1A4339A61091F2 /* libz.tbd */; };
FE4AFF7DBCC14A01A1221E15 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6B1C085C089045A38BB6F760 /* Zocial.ttf */; };
CBE87E3CB30C4B90B585E2FD /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6CC9B75BE0E640CBB2DE5316 /* Foundation.ttf */; };
D8C2A659E24748179C4C207F /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9F13A372FBF946B5BDBE78FA /* Ionicons.ttf */; };
D91033650FE94398A5424B19 /* libRCTRestart.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B2C904BFD14B44C68128BB7F /* libRCTRestart.a */; };
E06D5BA91B2A40C9868071EA /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C7D81BDCD08041078EF0F511 /* MaterialCommunityIcons.ttf */; };
ED5A78654C33412F88CC8D4F /* rubicon-icon-font.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 88197F38DF02441F9B738AFF /* rubicon-icon-font.ttf */; };
F9220AB054914BE1BF04A4B2 /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8616E7F6C6264500B0F3C0AB /* libRNVectorIcons.a */; };
FB28DFAA729D4DC3B1668FBC /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 0754D5AAEA2D4DCA9DA7283D /* Entypo.ttf */; };
FE22D3734B2C48CB890715FF /* libRealmReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D0A4B6BC3004763A0094EF3 /* libRealmReact.a */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -103,6 +103,48 @@
remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
remoteInfo = esteem;
};
0C518B74217202700049DBA5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 44CA43D49E374185BA6F37AF /* BVLinearGradient.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 134814201AA4EA6300B7C361;
remoteInfo = BVLinearGradient;
};
0C518B76217202700049DBA5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 44CA43D49E374185BA6F37AF /* BVLinearGradient.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 64AA15081EF7F30100718508;
remoteInfo = "BVLinearGradient-tvOS";
};
0C518B79217202700049DBA5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 5B1A171CF0E94B1CB0D66C57 /* FastImage.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = A287971D1DE0C0A60081BDFA;
remoteInfo = FastImage;
};
0C518B7C217202700049DBA5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 2DBBBAA0633D41CBB01D6FEB /* RCTRestart.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 3245CDED1BFEE35C00EABF68;
remoteInfo = RCTRestart;
};
0C518B7F217202700049DBA5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 0019E13B96A747699592B643 /* RealmReact.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = F60690131CA2766F0003FB26;
remoteInfo = RealmReact;
};
0C518B82217202700049DBA5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = CFB5920886014F419FC6D19A /* RNVectorIcons.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 5DBEB1501B18CEA900B34395;
remoteInfo = RNVectorIcons;
};
139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */;
@ -299,48 +341,6 @@
remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4;
remoteInfo = "jschelpers-tvOS";
};
47C7F1532167EB8A0095C133 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A478B598576048B99C164A52 /* BVLinearGradient.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 134814201AA4EA6300B7C361;
remoteInfo = BVLinearGradient;
};
47C7F1552167EB8A0095C133 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A478B598576048B99C164A52 /* BVLinearGradient.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 64AA15081EF7F30100718508;
remoteInfo = "BVLinearGradient-tvOS";
};
47C7F1582167EB8A0095C133 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 24CEB0A6D57C4A038E1DB75A /* RCTRestart.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 3245CDED1BFEE35C00EABF68;
remoteInfo = RCTRestart;
};
47C7F15B2167EB8A0095C133 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 2EFB1ECFDD9C4D4DBF153260 /* RealmReact.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = F60690131CA2766F0003FB26;
remoteInfo = RealmReact;
};
47C7F1612167EB8A0095C133 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = D8FE25B09BFD479994B879E8 /* RNVectorIcons.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 5DBEB1501B18CEA900B34395;
remoteInfo = RNVectorIcons;
};
47C7F1662167EB8A0095C133 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 671E67B1E9D345C2A7483C90 /* FastImage.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = A287971D1DE0C0A60081BDFA;
remoteInfo = FastImage;
};
5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
@ -379,6 +379,7 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
0019E13B96A747699592B643 /* RealmReact.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RealmReact.xcodeproj; path = "../node_modules/realm/react-native/ios/RealmReact.xcodeproj"; sourceTree = "<group>"; };
008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = "<group>"; };
00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = "<group>"; };
@ -388,6 +389,9 @@
00E356EE1AD99517003FC87E /* esteemTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = esteemTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
00E356F21AD99517003FC87E /* esteemTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = esteemTests.m; sourceTree = "<group>"; };
02E3F06CE07E482488458FD3 /* libBVLinearGradient.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libBVLinearGradient.a; sourceTree = "<group>"; };
0754D5AAEA2D4DCA9DA7283D /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/native-base/Fonts/Entypo.ttf"; sourceTree = "<group>"; };
0F5CD0C4AF7747D888A213F9 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = "<group>"; };
139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = "<group>"; };
13B07F961A680F5B00A75B9A /* esteem.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = esteem.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -398,39 +402,35 @@
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = esteem/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = esteem/main.m; sourceTree = "<group>"; };
146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = "<group>"; };
1CEE09FF1C1A4339A61091F2 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
218B93019DD44DA89C47CD00 /* libRealmReact.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRealmReact.a; sourceTree = "<group>"; };
24CEB0A6D57C4A038E1DB75A /* RCTRestart.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RCTRestart.xcodeproj; path = "../node_modules/react-native-restart/ios/RCTRestart.xcodeproj"; sourceTree = "<group>"; };
2CB7FEA66264445A9035FB51 /* Roboto_medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Roboto_medium.ttf; path = "../node_modules/native-base/Fonts/Roboto_medium.ttf"; sourceTree = "<group>"; };
2D02E47B1E0B4A5D006451C7 /* esteem-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "esteem-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2D02E4901E0B4A5D006451C7 /* esteem-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "esteem-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; };
2EFB1ECFDD9C4D4DBF153260 /* RealmReact.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RealmReact.xcodeproj; path = "../node_modules/realm/react-native/ios/RealmReact.xcodeproj"; sourceTree = "<group>"; };
5AC4147E86084FBA8814BCE9 /* MaterialIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialIcons.ttf; path = "../node_modules/native-base/Fonts/MaterialIcons.ttf"; sourceTree = "<group>"; };
5D5AB59069724329806D80E2 /* rubicon-icon-font.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "rubicon-icon-font.ttf"; path = "../node_modules/native-base/Fonts/rubicon-icon-font.ttf"; sourceTree = "<group>"; };
2DBBBAA0633D41CBB01D6FEB /* RCTRestart.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RCTRestart.xcodeproj; path = "../node_modules/react-native-restart/ios/RCTRestart.xcodeproj"; sourceTree = "<group>"; };
2F7FE3F27575464186B3A5EC /* Zocial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Zocial.ttf; path = "../node_modules/native-base/Fonts/Zocial.ttf"; sourceTree = "<group>"; };
44CA43D49E374185BA6F37AF /* BVLinearGradient.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = BVLinearGradient.xcodeproj; path = "../node_modules/react-native-linear-gradient/BVLinearGradient.xcodeproj"; sourceTree = "<group>"; };
56E30585028B4757AFB2F260 /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/native-base/Fonts/Octicons.ttf"; sourceTree = "<group>"; };
5B1A171CF0E94B1CB0D66C57 /* FastImage.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = FastImage.xcodeproj; path = "../node_modules/react-native-fast-image/ios/FastImage.xcodeproj"; sourceTree = "<group>"; };
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = "<group>"; };
5FD4DA409A1C42EB89B6F3BC /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialCommunityIcons.ttf; path = "../node_modules/native-base/Fonts/MaterialCommunityIcons.ttf"; sourceTree = "<group>"; };
60B8ECE2B75A41409C5E7345 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = SimpleLineIcons.ttf; path = "../node_modules/native-base/Fonts/SimpleLineIcons.ttf"; sourceTree = "<group>"; };
671E67B1E9D345C2A7483C90 /* FastImage.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = FastImage.xcodeproj; path = "../node_modules/react-native-fast-image/ios/FastImage.xcodeproj"; sourceTree = "<group>"; };
6B1C085C089045A38BB6F760 /* Zocial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Zocial.ttf; path = "../node_modules/native-base/Fonts/Zocial.ttf"; sourceTree = "<group>"; };
6B3581C9185843E386F8226D /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
6EDDDE364E5C4508B16ED939 /* libBVLinearGradient.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libBVLinearGradient.a; sourceTree = "<group>"; };
6CC9B75BE0E640CBB2DE5316 /* Foundation.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Foundation.ttf; path = "../node_modules/native-base/Fonts/Foundation.ttf"; sourceTree = "<group>"; };
6D0A4B6BC3004763A0094EF3 /* libRealmReact.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRealmReact.a; sourceTree = "<group>"; };
78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; };
798FE1CBDA064EBDA4CD12C3 /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/native-base/Fonts/FontAwesome.ttf"; sourceTree = "<group>"; };
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = "<group>"; };
A0E703B1D82B464482AAD10D /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = "<group>"; };
A478B598576048B99C164A52 /* BVLinearGradient.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = BVLinearGradient.xcodeproj; path = "../node_modules/react-native-linear-gradient/BVLinearGradient.xcodeproj"; sourceTree = "<group>"; };
8616E7F6C6264500B0F3C0AB /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = "<group>"; };
88197F38DF02441F9B738AFF /* rubicon-icon-font.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "rubicon-icon-font.ttf"; path = "../node_modules/native-base/Fonts/rubicon-icon-font.ttf"; sourceTree = "<group>"; };
8C8AE61985C54992AC765420 /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/native-base/Fonts/FontAwesome.ttf"; sourceTree = "<group>"; };
9F13A372FBF946B5BDBE78FA /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/native-base/Fonts/Ionicons.ttf"; sourceTree = "<group>"; };
A668FDF5F71F4AC7B4EC6B1D /* libFastImage.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libFastImage.a; sourceTree = "<group>"; };
ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = "<group>"; };
B242092C489E46F489763E94 /* Feather.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Feather.ttf; path = "../node_modules/native-base/Fonts/Feather.ttf"; sourceTree = "<group>"; };
BFB50DC91BBC4BDD95A818FD /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/native-base/Fonts/Entypo.ttf"; sourceTree = "<group>"; };
C3C604F08F154AB7BB7781A8 /* Foundation.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Foundation.ttf; path = "../node_modules/native-base/Fonts/Foundation.ttf"; sourceTree = "<group>"; };
C9EDC249E2B441C984F426D1 /* libFastImage.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libFastImage.a; sourceTree = "<group>"; };
CBFA1E890EF94235B811F694 /* Roboto.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Roboto.ttf; path = "../node_modules/native-base/Fonts/Roboto.ttf"; sourceTree = "<group>"; };
D4E71579126B447188B83123 /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/native-base/Fonts/Octicons.ttf"; sourceTree = "<group>"; };
D8FE25B09BFD479994B879E8 /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = "<group>"; };
DCAC90A21B43431A84847EBC /* libRCTRestart.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTRestart.a; sourceTree = "<group>"; };
F1B7D17736AC464DA683AB3A /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/native-base/Fonts/Ionicons.ttf"; sourceTree = "<group>"; };
F85E524A382E4A6A957E771B /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/native-base/Fonts/EvilIcons.ttf"; sourceTree = "<group>"; };
B2C904BFD14B44C68128BB7F /* libRCTRestart.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTRestart.a; sourceTree = "<group>"; };
B3E4DB34CA2240EDA2D0E831 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = SimpleLineIcons.ttf; path = "../node_modules/native-base/Fonts/SimpleLineIcons.ttf"; sourceTree = "<group>"; };
B7B24CFC3C0D490DA15DA29C /* MaterialIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialIcons.ttf; path = "../node_modules/native-base/Fonts/MaterialIcons.ttf"; sourceTree = "<group>"; };
C308EE3EEC7A48BD919DDFF2 /* Roboto.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Roboto.ttf; path = "../node_modules/native-base/Fonts/Roboto.ttf"; sourceTree = "<group>"; };
C7D81BDCD08041078EF0F511 /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialCommunityIcons.ttf; path = "../node_modules/native-base/Fonts/MaterialCommunityIcons.ttf"; sourceTree = "<group>"; };
CFB5920886014F419FC6D19A /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = "<group>"; };
D81FE31209CF4D24AA4DAE1B /* Feather.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Feather.ttf; path = "../node_modules/native-base/Fonts/Feather.ttf"; sourceTree = "<group>"; };
E75C11A31EE54C5899D50416 /* Roboto_medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Roboto_medium.ttf; path = "../node_modules/native-base/Fonts/Roboto_medium.ttf"; sourceTree = "<group>"; };
F084E460D2B1450B9827AB33 /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/native-base/Fonts/EvilIcons.ttf"; sourceTree = "<group>"; };
FBBEEEBB9C8048F78189B2C0 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -458,13 +458,13 @@
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
789EA10E61C845E0BB2EC9D3 /* libFastImage.a in Frameworks */,
9CE84579A16E4530ACB21BE3 /* libRCTRestart.a in Frameworks */,
DA84410F09C648E99513F11C /* libRNVectorIcons.a in Frameworks */,
E41F2366F3EA43FD9B22CEFE /* libRealmReact.a in Frameworks */,
A58AFEDD1A994E5D85792786 /* libc++.tbd in Frameworks */,
E4910A11500840519C89B56C /* libz.tbd in Frameworks */,
6CE8C7F361F44C63BBBAE1E9 /* libBVLinearGradient.a in Frameworks */,
85DF300A6EDC4AE98CD8B5AB /* libFastImage.a in Frameworks */,
3AB14466CEC544049AD08811 /* libBVLinearGradient.a in Frameworks */,
D91033650FE94398A5424B19 /* libRCTRestart.a in Frameworks */,
F9220AB054914BE1BF04A4B2 /* libRNVectorIcons.a in Frameworks */,
FE22D3734B2C48CB890715FF /* libRealmReact.a in Frameworks */,
5E482AACE164450FAD00E13F /* libc++.tbd in Frameworks */,
4EB85A02CD474B848E110697 /* libz.tbd in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -553,6 +553,59 @@
name = "Supporting Files";
sourceTree = "<group>";
};
0C518B402172026A0049DBA5 /* Recovered References */ = {
isa = PBXGroup;
children = (
A668FDF5F71F4AC7B4EC6B1D /* libFastImage.a */,
02E3F06CE07E482488458FD3 /* libBVLinearGradient.a */,
B2C904BFD14B44C68128BB7F /* libRCTRestart.a */,
8616E7F6C6264500B0F3C0AB /* libRNVectorIcons.a */,
6D0A4B6BC3004763A0094EF3 /* libRealmReact.a */,
);
name = "Recovered References";
sourceTree = "<group>";
};
0C518B682172026F0049DBA5 /* Products */ = {
isa = PBXGroup;
children = (
0C518B75217202700049DBA5 /* libBVLinearGradient.a */,
0C518B77217202700049DBA5 /* libBVLinearGradient.a */,
);
name = Products;
sourceTree = "<group>";
};
0C518B6A2172026F0049DBA5 /* Products */ = {
isa = PBXGroup;
children = (
0C518B83217202700049DBA5 /* libRNVectorIcons.a */,
);
name = Products;
sourceTree = "<group>";
};
0C518B6C2172026F0049DBA5 /* Products */ = {
isa = PBXGroup;
children = (
0C518B80217202700049DBA5 /* libRealmReact.a */,
);
name = Products;
sourceTree = "<group>";
};
0C518B6E2172026F0049DBA5 /* Products */ = {
isa = PBXGroup;
children = (
0C518B7A217202700049DBA5 /* libFastImage.a */,
);
name = Products;
sourceTree = "<group>";
};
0C518B702172026F0049DBA5 /* Products */ = {
isa = PBXGroup;
children = (
0C518B7D217202700049DBA5 /* libRCTRestart.a */,
);
name = Products;
sourceTree = "<group>";
};
139105B71AF99BAD00B5F7CC /* Products */ = {
isa = PBXGroup;
children = (
@ -610,88 +663,35 @@
name = Products;
sourceTree = "<group>";
};
22089A0D075844FE8AA2DA40 /* Resources */ = {
isa = PBXGroup;
children = (
BFB50DC91BBC4BDD95A818FD /* Entypo.ttf */,
F85E524A382E4A6A957E771B /* EvilIcons.ttf */,
B242092C489E46F489763E94 /* Feather.ttf */,
798FE1CBDA064EBDA4CD12C3 /* FontAwesome.ttf */,
C3C604F08F154AB7BB7781A8 /* Foundation.ttf */,
F1B7D17736AC464DA683AB3A /* Ionicons.ttf */,
5FD4DA409A1C42EB89B6F3BC /* MaterialCommunityIcons.ttf */,
5AC4147E86084FBA8814BCE9 /* MaterialIcons.ttf */,
D4E71579126B447188B83123 /* Octicons.ttf */,
2CB7FEA66264445A9035FB51 /* Roboto_medium.ttf */,
CBFA1E890EF94235B811F694 /* Roboto.ttf */,
5D5AB59069724329806D80E2 /* rubicon-icon-font.ttf */,
60B8ECE2B75A41409C5E7345 /* SimpleLineIcons.ttf */,
6B1C085C089045A38BB6F760 /* Zocial.ttf */,
);
name = Resources;
sourceTree = "<group>";
};
2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
isa = PBXGroup;
children = (
2D16E6891FA4F8E400B85C8A /* libReact.a */,
6B3581C9185843E386F8226D /* libc++.tbd */,
1CEE09FF1C1A4339A61091F2 /* libz.tbd */,
FBBEEEBB9C8048F78189B2C0 /* libc++.tbd */,
0F5CD0C4AF7747D888A213F9 /* libz.tbd */,
);
name = Frameworks;
sourceTree = "<group>";
};
47C7F1242167EB890095C133 /* Recovered References */ = {
4C47600659AC4CB893230688 /* Resources */ = {
isa = PBXGroup;
children = (
C9EDC249E2B441C984F426D1 /* libFastImage.a */,
DCAC90A21B43431A84847EBC /* libRCTRestart.a */,
A0E703B1D82B464482AAD10D /* libRNVectorIcons.a */,
218B93019DD44DA89C47CD00 /* libRealmReact.a */,
6EDDDE364E5C4508B16ED939 /* libBVLinearGradient.a */,
0754D5AAEA2D4DCA9DA7283D /* Entypo.ttf */,
F084E460D2B1450B9827AB33 /* EvilIcons.ttf */,
D81FE31209CF4D24AA4DAE1B /* Feather.ttf */,
8C8AE61985C54992AC765420 /* FontAwesome.ttf */,
6CC9B75BE0E640CBB2DE5316 /* Foundation.ttf */,
9F13A372FBF946B5BDBE78FA /* Ionicons.ttf */,
C7D81BDCD08041078EF0F511 /* MaterialCommunityIcons.ttf */,
B7B24CFC3C0D490DA15DA29C /* MaterialIcons.ttf */,
56E30585028B4757AFB2F260 /* Octicons.ttf */,
E75C11A31EE54C5899D50416 /* Roboto_medium.ttf */,
C308EE3EEC7A48BD919DDFF2 /* Roboto.ttf */,
88197F38DF02441F9B738AFF /* rubicon-icon-font.ttf */,
B3E4DB34CA2240EDA2D0E831 /* SimpleLineIcons.ttf */,
2F7FE3F27575464186B3A5EC /* Zocial.ttf */,
);
name = "Recovered References";
sourceTree = "<group>";
};
47C7F14B2167EB8A0095C133 /* Products */ = {
isa = PBXGroup;
children = (
47C7F1542167EB8A0095C133 /* libBVLinearGradient.a */,
47C7F1562167EB8A0095C133 /* libBVLinearGradient.a */,
);
name = Products;
sourceTree = "<group>";
};
47C7F14D2167EB8A0095C133 /* Products */ = {
isa = PBXGroup;
children = (
47C7F15C2167EB8A0095C133 /* libRealmReact.a */,
);
name = Products;
sourceTree = "<group>";
};
47C7F14F2167EB8A0095C133 /* Products */ = {
isa = PBXGroup;
children = (
47C7F1592167EB8A0095C133 /* libRCTRestart.a */,
);
name = Products;
sourceTree = "<group>";
};
47C7F15E2167EB8A0095C133 /* Products */ = {
isa = PBXGroup;
children = (
47C7F1622167EB8A0095C133 /* libRNVectorIcons.a */,
);
name = Products;
sourceTree = "<group>";
};
47C7F1632167EB8A0095C133 /* Products */ = {
isa = PBXGroup;
children = (
47C7F1672167EB8A0095C133 /* libFastImage.a */,
);
name = Products;
name = Resources;
sourceTree = "<group>";
};
5E91572E1DD0AC6500FF2AA8 /* Products */ = {
@ -727,11 +727,11 @@
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */,
00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */,
139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */,
671E67B1E9D345C2A7483C90 /* FastImage.xcodeproj */,
24CEB0A6D57C4A038E1DB75A /* RCTRestart.xcodeproj */,
D8FE25B09BFD479994B879E8 /* RNVectorIcons.xcodeproj */,
2EFB1ECFDD9C4D4DBF153260 /* RealmReact.xcodeproj */,
A478B598576048B99C164A52 /* BVLinearGradient.xcodeproj */,
5B1A171CF0E94B1CB0D66C57 /* FastImage.xcodeproj */,
44CA43D49E374185BA6F37AF /* BVLinearGradient.xcodeproj */,
2DBBBAA0633D41CBB01D6FEB /* RCTRestart.xcodeproj */,
CFB5920886014F419FC6D19A /* RNVectorIcons.xcodeproj */,
0019E13B96A747699592B643 /* RealmReact.xcodeproj */,
);
name = Libraries;
sourceTree = "<group>";
@ -753,8 +753,8 @@
00E356EF1AD99517003FC87E /* esteemTests */,
83CBBA001A601CBA00E9B192 /* Products */,
2D16E6871FA4F8E400B85C8A /* Frameworks */,
22089A0D075844FE8AA2DA40 /* Resources */,
47C7F1242167EB890095C133 /* Recovered References */,
4C47600659AC4CB893230688 /* Resources */,
0C518B402172026A0049DBA5 /* Recovered References */,
);
indentWidth = 2;
sourceTree = "<group>";
@ -880,7 +880,7 @@
};
};
};
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "eSteem" */;
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "esteem" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
@ -893,12 +893,12 @@
projectDirPath = "";
projectReferences = (
{
ProductGroup = 47C7F14B2167EB8A0095C133 /* Products */;
ProjectRef = A478B598576048B99C164A52 /* BVLinearGradient.xcodeproj */;
ProductGroup = 0C518B682172026F0049DBA5 /* Products */;
ProjectRef = 44CA43D49E374185BA6F37AF /* BVLinearGradient.xcodeproj */;
},
{
ProductGroup = 47C7F1632167EB8A0095C133 /* Products */;
ProjectRef = 671E67B1E9D345C2A7483C90 /* FastImage.xcodeproj */;
ProductGroup = 0C518B6E2172026F0049DBA5 /* Products */;
ProjectRef = 5B1A171CF0E94B1CB0D66C57 /* FastImage.xcodeproj */;
},
{
ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */;
@ -929,8 +929,8 @@
ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;
},
{
ProductGroup = 47C7F14F2167EB8A0095C133 /* Products */;
ProjectRef = 24CEB0A6D57C4A038E1DB75A /* RCTRestart.xcodeproj */;
ProductGroup = 0C518B702172026F0049DBA5 /* Products */;
ProjectRef = 2DBBBAA0633D41CBB01D6FEB /* RCTRestart.xcodeproj */;
},
{
ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */;
@ -953,12 +953,12 @@
ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */;
},
{
ProductGroup = 47C7F14D2167EB8A0095C133 /* Products */;
ProjectRef = 2EFB1ECFDD9C4D4DBF153260 /* RealmReact.xcodeproj */;
ProductGroup = 0C518B6C2172026F0049DBA5 /* Products */;
ProjectRef = 0019E13B96A747699592B643 /* RealmReact.xcodeproj */;
},
{
ProductGroup = 47C7F15E2167EB8A0095C133 /* Products */;
ProjectRef = D8FE25B09BFD479994B879E8 /* RNVectorIcons.xcodeproj */;
ProductGroup = 0C518B6A2172026F0049DBA5 /* Products */;
ProjectRef = CFB5920886014F419FC6D19A /* RNVectorIcons.xcodeproj */;
},
);
projectRoot = "";
@ -1007,6 +1007,48 @@
remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
0C518B75217202700049DBA5 /* libBVLinearGradient.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libBVLinearGradient.a;
remoteRef = 0C518B74217202700049DBA5 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
0C518B77217202700049DBA5 /* libBVLinearGradient.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libBVLinearGradient.a;
remoteRef = 0C518B76217202700049DBA5 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
0C518B7A217202700049DBA5 /* libFastImage.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libFastImage.a;
remoteRef = 0C518B79217202700049DBA5 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
0C518B7D217202700049DBA5 /* libRCTRestart.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRCTRestart.a;
remoteRef = 0C518B7C217202700049DBA5 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
0C518B80217202700049DBA5 /* libRealmReact.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRealmReact.a;
remoteRef = 0C518B7F217202700049DBA5 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
0C518B83217202700049DBA5 /* libRNVectorIcons.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNVectorIcons.a;
remoteRef = 0C518B82217202700049DBA5 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
@ -1196,48 +1238,6 @@
remoteRef = 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
47C7F1542167EB8A0095C133 /* libBVLinearGradient.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libBVLinearGradient.a;
remoteRef = 47C7F1532167EB8A0095C133 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
47C7F1562167EB8A0095C133 /* libBVLinearGradient.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libBVLinearGradient.a;
remoteRef = 47C7F1552167EB8A0095C133 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
47C7F1592167EB8A0095C133 /* libRCTRestart.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRCTRestart.a;
remoteRef = 47C7F1582167EB8A0095C133 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
47C7F15C2167EB8A0095C133 /* libRealmReact.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRealmReact.a;
remoteRef = 47C7F15B2167EB8A0095C133 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
47C7F1622167EB8A0095C133 /* libRNVectorIcons.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNVectorIcons.a;
remoteRef = 47C7F1612167EB8A0095C133 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
47C7F1672167EB8A0095C133 /* libFastImage.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libFastImage.a;
remoteRef = 47C7F1662167EB8A0095C133 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
@ -1289,20 +1289,20 @@
files = (
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
A4D99EE97F504E04ADAC2AE7 /* Entypo.ttf in Resources */,
8DDFF3D8476F4862B118D572 /* EvilIcons.ttf in Resources */,
12085D907BCF4310AE841EB9 /* Feather.ttf in Resources */,
CC18270D8A144D8BB1B92074 /* FontAwesome.ttf in Resources */,
620157480AC0446384C486A5 /* Foundation.ttf in Resources */,
D667736551DF47A7925EDFB7 /* Ionicons.ttf in Resources */,
7C38F7E48880400891592857 /* MaterialCommunityIcons.ttf in Resources */,
62D327BAA2D142E4A9EC55F4 /* MaterialIcons.ttf in Resources */,
1FD6AD382A1C40938E1A4F4E /* Octicons.ttf in Resources */,
89E87D4D15E3405CAAABC8DB /* Roboto_medium.ttf in Resources */,
AAFABA2977754B7A8A966F38 /* Roboto.ttf in Resources */,
8134509F8F3548E6A46AE80F /* rubicon-icon-font.ttf in Resources */,
5A970712B67D4D3E880FACF7 /* SimpleLineIcons.ttf in Resources */,
FE4AFF7DBCC14A01A1221E15 /* Zocial.ttf in Resources */,
FB28DFAA729D4DC3B1668FBC /* Entypo.ttf in Resources */,
75A37827C6324BFEA60CC6DA /* EvilIcons.ttf in Resources */,
912899FDD21841C7A2444920 /* Feather.ttf in Resources */,
33DE90C197C9467AAB5EB802 /* FontAwesome.ttf in Resources */,
CBE87E3CB30C4B90B585E2FD /* Foundation.ttf in Resources */,
D8C2A659E24748179C4C207F /* Ionicons.ttf in Resources */,
E06D5BA91B2A40C9868071EA /* MaterialCommunityIcons.ttf in Resources */,
22E7846D4E9D48238888FCA4 /* MaterialIcons.ttf in Resources */,
00EA7CDF813A496396F37B62 /* Octicons.ttf in Resources */,
6406AB381029407B815B0B19 /* Roboto_medium.ttf in Resources */,
64D2BA75D6054D5B89967502 /* Roboto.ttf in Resources */,
ED5A78654C33412F88CC8D4F /* rubicon-icon-font.ttf in Resources */,
1954C43044AC4F14B97C7F24 /* SimpleLineIcons.ttf in Resources */,
50F38870321E45BAAD4ECC10 /* Zocial.ttf in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1428,10 +1428,10 @@
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/realm/src/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = esteemTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
@ -1462,10 +1462,10 @@
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/realm/src/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = esteemTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
@ -1497,10 +1497,10 @@
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/realm/src/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = esteem/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@ -1509,7 +1509,7 @@
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_BUNDLE_IDENTIFIER = app.esteem.mobile;
PRODUCT_NAME = esteem;
VERSIONING_SYSTEM = "apple-generic";
};
@ -1523,10 +1523,10 @@
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/realm/src/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = esteem/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@ -1535,7 +1535,7 @@
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_BUNDLE_IDENTIFIER = app.esteem.mobile;
PRODUCT_NAME = esteem;
VERSIONING_SYSTEM = "apple-generic";
};
@ -1556,10 +1556,10 @@
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/realm/src/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = "esteem-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@ -1598,10 +1598,10 @@
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/realm/src/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = "esteem-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@ -1639,10 +1639,10 @@
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/realm/src/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = "esteem-tvOSTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
@ -1680,10 +1680,10 @@
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/realm/src/**",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = "esteem-tvOSTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
@ -1845,7 +1845,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "eSteem" */ = {
83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "esteem" */ = {
isa = XCConfigurationList;
buildConfigurations = (
83CBBA201A601CBA00E9B192 /* Debug */,

View File

@ -24,22 +24,6 @@
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSLocationWhenInUseUsageDescription</key>
<string/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
@ -53,6 +37,8 @@
</dict>
</dict>
</dict>
<key>NSLocationWhenInUseUsageDescription</key>
<string/>
<key>UIAppFonts</key>
<array>
<string>Entypo.ttf</string>
@ -70,5 +56,19 @@
<string>SimpleLineIcons.ttf</string>
<string>Zocial.ttf</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>

466
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -22,8 +22,8 @@
"dsteem": "^0.10.1",
"moment": "^2.22.2",
"native-base": "^2.8.1",
"react": "^16.5.0",
"react-native": "^0.57.1",
"react": "^16.6.0-alpha.8af6728",
"react-native": "^0.57.3",
"react-native-extended-stylesheet": "^0.10.0",
"react-native-fast-image": "^4.0.14",
"react-native-html-renderer": "^1.0.0",
@ -34,13 +34,12 @@
"react-native-modal-dropdown": "^0.6.2",
"react-native-modal-popover": "0.0.10",
"react-native-restart": "0.0.6",
"react-native-scrollable-tab-view": "git+https://github.com/happypancake/react-native-scrollable-tab-view.git",
"react-native-slider": "^0.11.0",
"react-native-vector-icons": "^4.6.0",
"react-navigation": "^2.17.0",
"react-navigation-redux-helpers": "^2.0.6",
"react-redux": "^5.0.7",
"realm": "^2.18.0",
"realm": "2.16.0",
"redux": "^4.0.0",
"redux-promise": "^0.6.0",
"redux-thunk": "^2.3.0",
@ -60,7 +59,7 @@
"metro-react-native-babel-preset": "0.47.0",
"prettier": "^1.14.3",
"prettier-eslint": "^8.8.2",
"react-test-renderer": "16.5.0",
"react-test-renderer": "16.6.0-alpha.8af6728",
"redux-logger": "^3.0.6",
"redux-devtools-extension": "^2.13.5",
"lint-staged": "^7.2.0"

View File

@ -13,10 +13,10 @@ import { connect } from 'react-redux';
import { ExampleView } from '..';
/*
* Props Name Description Value
*@props --> props name here description here Value Type Here
*
*/
* Props Name Description Value
*@props --> props name here description here Value Type Here
*
*/
class ExampleContainer extends Component {
constructor(props) {

View File

@ -2,10 +2,10 @@ import Card from './view/cardView';
import GrayWrapper from './view/grayWrapperView';
import LineBreak from './view/lineBreakView';
import NoPost from './view/noPostView';
import PercentBar from './view/percentBarView';
import PostPlaceHolder from './view/postPlaceHolderView';
import TextWithIcon from './view/textWithIconView';
import WalletLineItem from './view/walletLineItemView';
export {
Card, GrayWrapper, LineBreak, NoPost, PercentBar, TextWithIcon, WalletLineItem,
Card, GrayWrapper, LineBreak, NoPost, PostPlaceHolder, TextWithIcon, WalletLineItem,
};

View File

@ -1,21 +1,21 @@
import EStyleSheet from "react-native-extended-stylesheet";
import EStyleSheet from 'react-native-extended-stylesheet';
export default EStyleSheet.create({
wrapper: {
flexDirection: "column",
alignItems: "center",
height: "$deviceHeight",
backgroundColor: "$white",
flexDirection: 'column',
alignItems: 'center',
height: '$deviceHeight',
backgroundColor: '$white',
},
image: {
width: "$deviceWidth - 40",
width: '$deviceWidth - 40',
height: 192,
marginTop: 16,
},
text: {
color: "$primaryDarkGray",
color: '$primaryDarkGray',
fontSize: 14,
marginTop: 12,
fontWeight: "bold",
fontWeight: 'bold',
},
});

View File

@ -1,42 +0,0 @@
import React from 'react';
import { View, Dimensions, Text } from 'react-native';
import styles from './percentBarStyles';
const PercentBar = ({
percent, margin, text, barColor, barPercentColor, textColor, isTop,
}) => (
<View>
{_getText(textColor, text, isTop, true)}
<View style={[styles.container, barColor && { backgroundColor: barColor }]}>
<View
style={[
styles.powerBar,
barPercentColor && { backgroundColor: barPercentColor },
{ width: _calculateWidth(percent, margin) },
]}
/>
</View>
{_getText(textColor, text, isTop, false)}
</View>
);
const _calculateWidth = (percent, margin = null) => {
if (percent) {
const per = 100 / percent;
return Dimensions.get('window').width / per - margin;
}
return null;
};
const _getText = (textColor, text, isTop, isRender) => {
if (isTop === isRender && text) {
return (
<View style={styles.percentTitleWrapper}>
<Text style={[styles.percentTitle, textColor && { color: textColor }]}>{text}</Text>
</View>
);
}
};
export default PercentBar;

View File

@ -0,0 +1,23 @@
import EStyleSheet from 'react-native-extended-stylesheet';
export default EStyleSheet.create({
container: {
backgroundColor: '$white',
padding: 20,
borderStyle: 'solid',
borderWidth: 1,
borderTopWidth: 1,
borderColor: '#e2e5e8',
borderRadius: 5,
marginRight: 0,
marginLeft: 0,
marginTop: 10,
},
textWrapper: {
flexDirection: 'row',
marginBottom: 10,
},
paragraphWrapper: {
marginTop: 10,
},
});

View File

@ -0,0 +1,28 @@
import React from 'react';
import { View, Fragment } from 'react-native';
import Placeholder from 'rn-placeholder';
import styles from './postPlaceHolderStyles';
const PostPlaceHolder = () => (
<View style={styles.container}>
<View style={styles.textWrapper}>
<Placeholder.Media size={25} hasRadius animate="fade" />
<Placeholder.Line width="30%" lastLineWidth="30%" animate="fade" />
</View>
<Placeholder.Box animate="fade" height={200} width="100%" radius={5} />
<View style={styles.paragraphWrapper}>
<Placeholder.Paragraph
lineNumber={3}
textSize={16}
lineSpacing={5}
width="100%"
lastLineWidth="70%"
firstLineWidth="50%"
animate="fade"
/>
</View>
</View>
);
export default PostPlaceHolder;

View File

@ -375,7 +375,7 @@ class Comment extends React.PureComponent {
flexDirection:
'row',
borderColor:
'lightgray',
'$primaryLightGray',
borderWidth: 1,
borderRadius: 10,
}}

View File

@ -1,7 +1,5 @@
import React, { Component } from 'react';
import {
View, Text, Image, TextInput,
} from 'react-native';
import { View, TextInput } from 'react-native';
import Ionicons from 'react-native-vector-icons/Ionicons';
import FastImage from 'react-native-fast-image';
@ -30,7 +28,7 @@ class FormInputView extends Component {
this.state = {
value: '',
inputBorderColor:"$iconColor",
inputBorderColor: '#c1c5c7',
isValid: true,
};
}
@ -93,7 +91,7 @@ class FormInputView extends Component {
})
}
onSubmitEditing={() => this.setState({
inputBorderColor:"$iconColor",
inputBorderColor: '$iconColor',
})
}
autoCapitalize="none"
@ -101,9 +99,7 @@ class FormInputView extends Component {
placeholder={placeholder}
editable={isEditable || true}
textContentType={type}
onChangeText={(value) => {
this._handleOnChange(value);
}}
onChangeText={val => this._handleOnChange(val)}
value={value}
style={styles.textInput}
/>

View File

@ -0,0 +1,42 @@
import React, { Component } from 'react';
import { withNavigation } from 'react-navigation';
// Services and Actions
// Middleware
// Constants
// Utilities
// Component
import { HeaderView } from '..';
/*
* Props Name Description Value
*@props --> props name here description here Value Type Here
*
*/
class HeaderContainer extends Component {
constructor(props) {
super(props);
this.state = {};
}
// Component Life Cycle Functions
// Component Functions
_handleOpenDrawer = () => {
const { navigation } = this.props;
navigation.openDrawer();
};
render() {
return <HeaderView handleOpenDrawer={this._handleOpenDrawer} {...this.props} />;
}
}
export default withNavigation(HeaderContainer);

View File

@ -0,0 +1,5 @@
import HeaderView from './view/headerView';
import Header from './container/headerContainer';
export { HeaderView, Header };
export default Header;

View File

@ -0,0 +1,42 @@
import EStyleSheet from 'react-native-extended-stylesheet';
export default EStyleSheet.create({
container: {
flex: 1,
flexDirection: 'row',
width: '$deviceWidth',
minHeight: 40,
maxHeight: 74,
backgroundColor: '$white',
},
avatarWrapper: {
backgroundColor: '#357ce6',
height: 50,
width: 68,
borderTopRightRadius: 68 / 2,
borderBottomRightRadius: 68 / 2,
justifyContent: 'center',
},
titleWrapper: {
flexDirection: 'column',
justifyContent: 'center',
marginLeft: 8,
},
title: {
fontSize: 14,
fontWeight: 'bold',
color: '$primaryDarkGray',
},
subTitle: {
color: '$primaryDarkGray',
fontSize: 12,
},
avatar: {
width: 32,
height: 32,
borderRadius: 32 / 2,
alignSelf: 'flex-end',
marginRight: 12,
},
});

View File

@ -0,0 +1,51 @@
import React, { Component } from 'react';
import {
View, StatusBar, Text, SafeAreaView, TouchableOpacity,
} from 'react-native';
import FastImage from 'react-native-fast-image';
// Constants
// Components
// Styles
import styles from './headerStyles';
const DEFAULT_IMAGE = require('../../../assets/esteem.png');
class HeaderView extends Component {
/* Props
* ------------------------------------------------
* @prop { boolean } hideStatusBar - Can declare status bar is hide or not.
*
*/
constructor(props) {
super(props);
this.state = {};
}
// Component Life Cycles
// Component Functions
render() {
const { avatar, handleOpenDrawer, hideStatusBar } = this.props;
return (
<SafeAreaView style={styles.container}>
<StatusBar hidden={hideStatusBar} translucent />
<TouchableOpacity onPress={() => handleOpenDrawer()}>
<View style={styles.avatarWrapper}>
<FastImage style={styles.avatar} source={avatar} defaultSource={DEFAULT_IMAGE} />
</View>
</TouchableOpacity>
<View style={styles.titleWrapper}>
<Text style={styles.title}> eSteem Project </Text>
<Text style={styles.subTitle}> @u-e (63)</Text>
</View>
</SafeAreaView>
);
}
}
export default HeaderView;

View File

@ -0,0 +1,4 @@
import PercentBar from './view/percentBarView';
export { PercentBar };
export default PercentBar;

View File

@ -4,7 +4,7 @@ export default EStyleSheet.create({
container: {
backgroundColor: '$primaryLightBlue',
height: 2,
marginVertical: 4,
marginVertical: 2,
borderRadius: 50,
},
powerBar: {
@ -19,6 +19,7 @@ export default EStyleSheet.create({
percentTitle: {
color: '$primaryBlue',
fontSize: 11,
marginVertical: 10,
marginVertical: 1,
height: 15,
},
});

View File

@ -0,0 +1,79 @@
import React, { Component } from 'react';
import {
View, Dimensions, Text, TouchableOpacity,
} from 'react-native';
// Constants
// Components
// Styles
import styles from './percentBarStyles';
class PercentBarView extends Component {
/* Props
* ------------------------------------------------
* @prop { string } barColor - Bar color proferties
* @prop { string } barPercentColor - Bar background color properties
* @prop { number } margin - If you use with margin right and left you should declare that if it neccessary
* @prop { number } percent - Percent for bar (ex: %32 just send 32)
* @prop { string } text - Text string
* @prop { string } textColor - Text color
*
*/
constructor(props) {
super(props);
this.state = {};
}
// Component Life Cycles
// Component Functions
_calculateWidth = (percent, margin = null) => {
if (percent) {
const per = 100 / percent;
return Dimensions.get('window').width / per - margin;
}
return null;
};
_getText = (textColor, text, isTop, isRender) => {
const { isShowText } = this.props;
if (isTop === isRender && text) {
return (
<View style={styles.percentTitleWrapper}>
<Text style={[styles.percentTitle, textColor && { color: textColor }]}>
{isShowText && text}
</Text>
</View>
);
}
};
render() {
const {
percent, margin, text, barColor, barPercentColor, textColor, isTop,
} = this.props;
return (
<View>
{this._getText(textColor, text, isTop, true)}
<View style={[styles.container, barColor && { backgroundColor: barColor }]}>
<View
style={[
styles.powerBar,
barPercentColor && { backgroundColor: barPercentColor },
{ width: this._calculateWidth(percent, margin) },
]}
/>
</View>
{this._getText(textColor, text, isTop, false)}
</View>
);
}
}
export default PercentBarView;

View File

@ -0,0 +1,35 @@
import React, { Component } from 'react';
// Services and Actions
// Middleware
// Constants
// Utilities
// Component
import { PostsView } from '..';
/*
* Props Name Description Value
*@props --> props name here description here Value Type Here
*
*/
class PostsContainer extends Component {
constructor(props) {
super(props);
this.state = {};
}
// Component Life Cycle Functions
// Component Functions
render() {
return <PostsView {...this.props} />;
}
}
export default PostsContainer;

View File

@ -0,0 +1,5 @@
import PostsView from './view/postsView';
import Posts from './container/postsContainer';
export { PostsView, Posts };
export default Posts;

View File

@ -1,12 +1,9 @@
import EStyleSheet from 'react-native-extended-stylesheet';
export default EStyleSheet.create({
container: {
backgroundColor: '#F9F9F9',
flex: 1,
},
container: {},
placeholder: {
backgroundColor: 'white',
backgroundColor: '$white',
padding: 20,
borderStyle: 'solid',
borderWidth: 1,
@ -27,6 +24,6 @@ export default EStyleSheet.create({
alignItems: 'center',
marginTop: 10,
marginBottom: 40,
borderColor: '#CED0CE',
borderColor: '$borderColor',
},
});

View File

@ -0,0 +1,169 @@
import React, { Component, Fragment } from 'react';
import {
FlatList, View, ActivityIndicator, AppState,
} from 'react-native';
// import Placeholder from 'rn-placeholder';
// STEEM
import { getPosts } from '../../../providers/steem/dsteem';
// COMPONENTS
import { PostCard } from '../../postCard';
import { FilterBar } from '../../filterBar';
import { PostPlaceHolder } from '../../basicUIElements';
// Styles
import styles from './postsStyles';
class FeedView extends Component {
constructor(props) {
super(props);
this.state = {
isReady: false,
posts: [],
startAuthor: '',
startPermlink: '',
refreshing: false,
isLoading: false,
appState: AppState.currentState,
};
}
componentDidMount() {
this._loadPosts();
AppState.addEventListener('change', this._handleAppStateChange);
}
componentWillUnmount() {
AppState.removeEventListener('change', this._handleAppStateChange);
}
_handleAppStateChange = (nextAppState) => {
if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {
alert('App has come to the foreground!');
}
this.setState({ appState: nextAppState });
};
_loadPosts = () => {
const { user, getFor, tag } = this.props;
getPosts(getFor, { tag, limit: 10 }, user.name)
.then((result) => {
if (result) {
this.setState({
isReady: true,
posts: result,
startAuthor: result[result.length - 1].author,
startPermlink: result[result.length - 1].permlink,
refreshing: false,
});
}
})
.catch((err) => {
alert(err);
});
};
_loadMore = () => {
const { posts, startAuthor, startPermlink } = this.state;
const { user, getFor, tag } = this.props;
this.setState({ isLoading: true });
getPosts(
getFor,
{
tag,
limit: 10,
start_author: startAuthor,
start_permlink: startPermlink,
},
user.name,
).then((result) => {
const _posts = result;
_posts.shift();
this.setState({
posts: [...posts, ..._posts],
startAuthor: result[result.length - 1].author,
startPermlink: result[result.length - 1].permlink,
});
});
};
_handleOnRefreshPosts = () => {
this.setState(
{
refreshing: true,
},
() => {
this._loadPosts();
},
);
};
renderFooter = () => {
const { isLoading } = this.state;
if (isLoading) {
return (
<View style={styles.flatlistFooter}>
<ActivityIndicator animating size="large" />
</View>
);
}
return null;
};
_getRenderItem = () => {
const { isReady, refreshing, posts } = this.state;
const { componentId, user } = this.props;
if (isReady) {
return (
<Fragment>
<FilterBar
dropdownIconName="md-arrow-dropdown"
options={[
'ALL NOTIFICATION',
'LATEST NOTF',
'ESTEEMAPP',
'UGUR ERDAL',
'ONLY YESTERDAY',
]}
defaultText="NEW POST"
rightIconName="md-apps"
/>
<FlatList
data={posts}
showsVerticalScrollIndicator={false}
renderItem={({ item }) => (
<PostCard componentId={componentId} content={item} user={user} isLoggedIn />
)}
keyExtractor={(post, index) => index.toString()}
onEndReached={this._loadMore}
removeClippedSubviews
refreshing={refreshing}
onRefresh={() => this._handleOnRefreshPosts()}
onEndThreshold={0}
initialNumToRender={10}
ListFooterComponent={this.renderFooter}
/>
</Fragment>
);
}
return (
<Fragment>
<PostPlaceHolder />
<PostPlaceHolder />
</Fragment>
);
};
render() {
return <View>{this._getRenderItem()}</View>;
}
}
export default FeedView;

View File

@ -1,5 +1,7 @@
import React, { Component } from 'react';
import { View, Image, Text } from 'react-native';
import React, { Component, Fragment } from 'react';
import {
View, Image, Text, TouchableOpacity,
} from 'react-native';
import { DropdownButton } from '../../dropdownButton';
// Constants
@ -7,7 +9,7 @@ import DEFAULT_IMAGE from '../../../assets/default_cover_image.png';
// Components
import { TextWithIcon } from '../../basicUIElements';
import { PercentBar } from '../../basicUIElements';
import { PercentBar } from '../../percentBar';
import { IconButton } from '../../iconButton';
// Styles
// eslint-disable-next-line
@ -21,26 +23,22 @@ class ProfileSummaryView extends Component {
constructor(props) {
super(props);
this.state = {};
this.state = {
isShowPercentText: false,
};
}
// Component Life Cycles
// Component Functions
_getFollowerCount = () => {
const { followerCount } = this.props;
return 32;
};
_getFollowingCount = () => {
const { followingCoung } = this.props;
return 32;
};
render() {
const { isShowPercentText } = this.state;
const {
percent,
hours,
percentRC,
percentVP,
hoursVP,
hoursRC,
location,
link,
date,
@ -48,11 +46,11 @@ class ProfileSummaryView extends Component {
followerCount,
coverImage,
} = this.props;
const votingPowerText = `Voting power:${{ percent }}% • Full in ${{ hours }}hours`;
const rcsPowerText = 'RCs: 20% • Full in 36 hours';
const votingPowerText = `Voting power: ${percentVP}% • Full in ${hoursVP} hours`;
const rcsPowerText = `RCs: ${percentRC}% • Full in ${hoursRC} hours`;
return (
<View>
<Fragment>
<View style={styles.textWithIconWrapper}>
<TextWithIcon text={location} iconName="md-navigate" />
<TextWithIcon isClickable text={link} iconName="md-globe" />
@ -64,17 +62,25 @@ class ProfileSummaryView extends Component {
source={{ uri: coverImage }}
defaultSource={DEFAULT_IMAGE}
/>
<PercentBar percent={percent} margin={24} isTop text={votingPowerText} />
<PercentBar
percent={percent}
margin={24}
barColor="#eafcef"
barPercentColor="#11c28b"
textColor="#11c28b"
isTop={false}
text={rcsPowerText}
/>
<TouchableOpacity onPress={() => this.setState({ isShowPercentText: !isShowPercentText })}>
<PercentBar
isShowText={isShowPercentText}
percent={percentVP}
margin={24}
isTop
text={votingPowerText}
/>
<PercentBar
isShowText={isShowPercentText}
percent={percentRC}
margin={24}
barColor="#eafcef"
barPercentColor="#11c28b"
textColor="#11c28b"
isTop={false}
text={rcsPowerText}
/>
</TouchableOpacity>
<View style={styles.footer}>
<View style={styles.leftIcons}>
@ -111,7 +117,7 @@ class ProfileSummaryView extends Component {
/>
</View>
</View>
</View>
</Fragment>
);
}
}

View File

@ -10,7 +10,6 @@ import { CollapsibleCard } from '../../collapsibleCard';
import { WalletDetails } from '../../walletDetails';
import { Transaction } from '../../transaction';
// Styles
import styles from './walletStyles';
@ -30,7 +29,7 @@ class WalletView extends Component {
// Component Functions
render() {
// const {} = this.props;
const { user } = this.props;
return (
<View style={styles.container}>
@ -53,7 +52,7 @@ class WalletView extends Component {
</CollapsibleCard>
<CollapsibleCard titleColor="#788187" title="Wallet Details" expanded>
<WalletDetails />
<WalletDetails balance={user.balance} />
</CollapsibleCard>
<Transaction />

View File

@ -25,13 +25,14 @@ class WalletDetailsView extends Component {
// Component Functions
render() {
const { balance } = this.props;
return (
<View>
<WalletLineItem
text="Steem"
textColor="#3c4449"
iconName="ios-information-circle-outline"
rightText="27.178 STEEM"
rightText={balance}
isBoldText
/>
<GrayWrapper>

View File

@ -21,7 +21,7 @@ EStyleSheet.build({
$primaryBlack: '#3c4449',
// General Colors
$borderColor: '#ffff',
$borderColor: '#CED0CE',
$bubblesBlue: '#5CCDFF',
$iconColor: '#c1c5c7',
$dangerColor: '#fff',

View File

@ -1,10 +1,7 @@
import React from 'react';
import { createBottomTabNavigator } from 'react-navigation';
import Icon from 'react-native-vector-icons/FontAwesome';
import Home from '../screens/home/home';
import { Notification } from '../screens/notification';
import AuthorProfile from '../screens/authorProfile';
import { Profile } from '../screens/profile';
import { Home, Notification, Profile } from '../screens';
import { PostButton } from '../components/postButton';
@ -29,7 +26,7 @@ const BaseNavigator = createBottomTabNavigator(
}),
},
AuthorProfile: {
screen: AuthorProfile,
screen: Profile,
navigationOptions: () => ({
tabBarIcon: ({ tintColor }) => <Icon name="envelope-o" color={tintColor} size={18} />,
}),

View File

@ -23,7 +23,7 @@ export default EStyleSheet.create({
alignSelf: 'center',
},
about: {
borderColor: 'lightgray',
borderColor: '$primaryLightGray',
borderTopWidth: 1,
borderBottomWidth: 1,
flexDirection: 'row',

View File

@ -0,0 +1,35 @@
import React, { Component } from 'react';
// Services and Actions
// Middleware
// Constants
// Utilities
// Component
import { HomeScreen } from '..';
/*
* Props Name Description Value
*@props --> props name here description here Value Type Here
*
*/
class HomeContainer extends Component {
constructor(props) {
super(props);
this.state = {};
}
// Component Life Cycle Functions
// Component Functions
render() {
return <HomeScreen {...this.props} />;
}
}
export default HomeContainer;

View File

@ -1,192 +0,0 @@
import React, { Component } from 'react';
import {
FlatList, View, ActivityIndicator, AppState,
} from 'react-native';
import Placeholder from 'rn-placeholder';
import styles from '../../styles/feed.styles';
// STEEM
import { getPosts } from '../../providers/steem/dsteem';
// LIBRARIES
// COMPONENTS
import { PostCard } from '../../components/postCard';
import { FilterBar } from '../../components/filterBar';
/* eslint-enable no-unused-vars */
class FeedPage extends Component {
constructor(props) {
super(props);
this.getFeed = this.getFeed.bind(this);
this.getMore = this.getMore.bind(this);
this.refreshPosts = this.refreshPosts.bind(this);
this.state = {
isReady: false,
posts: [],
start_author: '',
start_permlink: '',
refreshing: false,
loading: false,
appState: AppState.currentState,
};
}
componentDidMount() {
AppState.addEventListener('change', this._handleAppStateChange);
}
componentWillUnmount() {
AppState.removeEventListener('change', this._handleAppStateChange);
}
_handleAppStateChange = (nextAppState) => {
if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {
alert('App has come to the foreground!');
}
this.setState({ appState: nextAppState });
};
componentWillMount() {
this.getFeed();
}
getFeed = () => {
getPosts('feed', { tag: this.props.user.name, limit: 10 }, this.props.user.name)
.then((result) => {
// TODO: We should put null check for result
this.setState({
isReady: true,
posts: result,
start_author: result[result.length - 1].author,
start_permlink: result[result.length - 1].permlink,
refreshing: false,
});
})
.catch((err) => {
alert(err);
});
};
getMore = () => {
this.setState({ loading: true });
getPosts(
'feed',
{
tag: this.props.user.name,
limit: 10,
start_author: this.state.start_author,
start_permlink: this.state.start_permlink,
},
this.props.user.name,
).then((result) => {
const posts = result;
posts.shift();
this.setState({
posts: [...this.state.posts, ...posts],
start_author: result[result.length - 1].author,
start_permlink: result[result.length - 1].permlink,
});
});
};
refreshPosts = () => {
this.setState(
{
refreshing: true,
},
() => {
this.getFeed();
},
);
};
renderFooter = () => {
if (!this.state.loading) return null;
return (
<View style={styles.flatlistFooter}>
<ActivityIndicator animating size="large" />
</View>
);
};
render() {
return (
<View style={{ flex: 1 }}>
{this.state.isReady && (
<FilterBar
dropdownIconName="md-arrow-dropdown"
options={[
'ALL NOTIFICATION',
'LATEST NOTF',
'ESTEEMAPP',
'UGUR ERDAL',
'ONLY YESTERDAY',
]}
defaultText="NEW POST"
rightIconName="md-apps"
/>
)}
{this.state.isReady ? (
<FlatList
data={this.state.posts}
showsVerticalScrollIndicator={false}
renderItem={({ item }) => (
<PostCard
componentId={this.props.componentId}
content={item}
user={this.props.user}
isLoggedIn
/>
)}
keyExtractor={(post, index) => index.toString()}
onEndReached={this.getMore}
removeClippedSubviews
refreshing={this.state.refreshing}
onRefresh={() => this.refreshPosts()}
onEndThreshold={0}
initialNumToRender={10}
ListFooterComponent={this.renderFooter}
/>
) : (
<View>
<View style={styles.placeholder}>
<Placeholder.ImageContent
size={60}
animate="fade"
lineNumber={4}
lineSpacing={5}
lastLineWidth="30%"
onReady={this.state.isReady}
/>
</View>
<View style={styles.placeholder}>
<Placeholder.ImageContent
size={60}
animate="fade"
lineNumber={4}
lineSpacing={5}
lastLineWidth="30%"
onReady={this.state.isReady}
/>
</View>
<View style={styles.placeholder}>
<Placeholder.ImageContent
size={60}
animate="fade"
lineNumber={4}
lineSpacing={5}
lastLineWidth="30%"
onReady={this.state.isReady}
/>
</View>
</View>
)}
</View>
);
}
}
export default FeedPage;

View File

@ -1,227 +0,0 @@
import React, { PureComponent } from 'react';
import {
Text, View, Dimensions, TouchableOpacity,
} from 'react-native';
import ScrollableTabView from '@esteemapp/react-native-scrollable-tab-view';
import Ionicons from 'react-native-vector-icons/Ionicons';
import FastImage from 'react-native-fast-image';
import Placeholder from 'rn-placeholder';
// REDUX
import { connect } from 'react-redux';
import TabBar from '../../components/tabBar';
import { fetchAccount } from '../../redux/actions/userActions';
import store from '../../redux/store/store';
// STEEM
import { getUserData, getAuthStatus } from '../../realm/realm';
import { getUser } from '../../providers/steem/dsteem';
// SCREENS
import HotPage from './hot';
import FeedPage from './feed';
import TrendingPage from './trending';
export default class Home extends PureComponent {
static navigationOptions = {
title: 'Home',
};
// static get options() {
// return {
// _statusBar: {
// visible: true,
// drawBehind: false,
// },
// topBar: {
// animate: true,
// hideOnScroll: true,
// drawBehind: false,
// noBorder: true,
// elevation: 0,
// },
// layout: {
// backgroundColor: '#f5fcff',
// },
// bottomTabs: {
// visible: true,
// drawBehind: true,
// },
// };
// }
constructor(props) {
super(props);
// Navigation.events().bindComponent(this); // <== Will be automatically unregistered when unmounted
this.state = {
user: {
name: 'null',
},
isLoggedIn: false,
isLoading: true,
category: 'HOT',
options: ['HOT', 'TRENDING', 'CLOSE'],
};
}
navigationButtonPressed({ buttonId }) {
if (buttonId === 'search') {
// Navigation.showOverlay({
// component: {
// name: 'navigation.eSteem.Search',
// },
// options: {
// overlay: {
// interceptTouchOutside: true,
// },
// },
// });
}
}
showActionSheet = () => {
this.ActionSheet.show();
};
async componentDidMount() {
let user;
let userData;
let isLoggedIn;
await getAuthStatus().then((res) => {
isLoggedIn = res;
});
if (isLoggedIn) {
await getUserData().then((res) => {
user = Array.from(res);
});
userData = await getUser(user[0].username);
this.setState({
user: userData,
isLoggedIn,
isLoading: false,
});
} else {
await this.setState({
isLoading: false,
});
}
}
render() {
return (
<View style={styles.root} key="overlay">
<ScrollableTabView
style={styles.tabView}
renderTabBar={() => (
<TabBar
style={styles.tabbar}
tabUnderlineDefaultWidth={80} // default containerWidth / (numberOfTabs * 4)
tabUnderlineScaleX={2} // default 3
activeColor="#357ce6"
inactiveColor="#222"
tabBarPosition="overlayTop"
/>
)}
>
<View tabLabel="Feed" style={styles.tabbarItem}>
{this.state.isLoggedIn ? (
<FeedPage
user={this.state.user}
isLoggedIn={this.state.isLoggedIn}
componentId={this.props.componentId}
/>
) : (
<Text>Login to see your Feed</Text>
)}
</View>
<View tabLabel="Hot" style={styles.tabbarItem}>
<HotPage
user={this.state.user}
isLoggedIn={this.state.isLoggedIn}
componentId={this.props.componentId}
/>
</View>
<View tabLabel="Trending" style={styles.tabbarItem}>
<TrendingPage
user={this.state.user}
isLoggedIn={this.state.isLoggedIn}
componentId={this.props.componentId}
/>
</View>
</ScrollableTabView>
<View style={styles.buttonContainer} />
</View>
);
}
}
const styles = {
root: {
justifyContent: 'center',
alignItems: 'center',
flex: 1,
},
buttonContainer: {
width: '50%',
alignItems: 'center',
},
tabView: {
alignSelf: 'center',
backgroundColor: 'transparent',
},
tabbar: {
alignSelf: 'center',
height: 40,
backgroundColor: 'white',
},
tabbarItem: {
flex: 1,
backgroundColor: '#f9f9f9',
minWidth: Dimensions.get('window').width,
},
container: {
backgroundColor: '#F9F9F9',
flex: 1,
},
tabs: {
flex: 1,
},
placeholder: {
backgroundColor: 'white',
padding: 20,
borderStyle: 'solid',
borderWidth: 1,
borderTopWidth: 1,
borderColor: '#e2e5e8',
borderRadius: 5,
marginRight: 0,
marginLeft: 0,
marginTop: 10,
},
header: {
backgroundColor: '#284b78',
borderBottomWidth: 0,
borderColor: '#284b78',
},
avatar: {
width: 30,
height: 30,
borderRadius: 15,
borderWidth: 1,
borderColor: 'white',
},
searchButton: {
color: 'white',
fontWeight: 'bold',
},
loginButton: {
alignSelf: 'center',
marginTop: 100,
},
};

View File

@ -1,179 +0,0 @@
/* eslint-disable no-unused-vars */
import React, { Component } from 'react';
import { FlatList, View, ActivityIndicator } from 'react-native';
import Placeholder from 'rn-placeholder';
import styles from '../../styles/hot.styles';
// STEEM
import { getPosts } from '../../providers/steem/dsteem';
// LIBRARIES
// COMPONENTS
import { PostCard } from '../../components/postCard';
import { FilterBar } from '../../components/filterBar';
// SCREENS
/* eslint-enable no-unused-vars */
class HotPage extends Component {
constructor(props) {
super(props);
this.getHotPosts = this.getHotPosts.bind(this);
this.getMoreHot = this.getMoreHot.bind(this);
this.refreshHotPosts = this.refreshHotPosts.bind(this);
this.state = {
isReady: false,
posts: [],
start_author: '',
start_permlink: '',
refreshing: false,
loading: false,
isLoggedIn: this.props.isLoggedIn,
};
}
componentDidMount() {
console.log(this.props);
this.getHotPosts();
}
getHotPosts = () => {
getPosts('hot', { tag: '', limit: 10 }, this.props.user.name)
.then((result) => {
this.setState({
isReady: true,
posts: result,
start_author: result[result.length - 1].author,
start_permlink: result[result.length - 1].permlink,
refreshing: false,
});
})
.catch((err) => {
alert(err);
});
};
getMoreHot = () => {
this.setState({ loading: true });
getPosts(
'hot',
{
tag: '',
limit: 10,
start_author: this.state.start_author,
start_permlink: this.state.start_permlink,
},
this.props.user.name,
).then((result) => {
const posts = result;
posts.shift();
this.setState({
posts: [...this.state.posts, ...posts],
start_author: result[result.length - 1].author,
start_permlink: result[result.length - 1].permlink,
});
});
};
refreshHotPosts = () => {
this.setState(
{
refreshing: true,
},
() => {
this.getHotPosts();
},
);
};
renderFooter = () => {
if (!this.state.loading) return null;
return (
<View style={styles.flatlistFooter}>
<ActivityIndicator animating size="large" />
</View>
);
};
render() {
return (
<View style={{ flex: 1 }}>
{this.state.isReady && (
<FilterBar
dropdownIconName="md-arrow-dropdown"
options={[
'ALL NOTIFICATION',
'LATEST NOTF',
'ESTEEMAPP',
'UGUR ERDAL',
'ONLY YESTERDAY',
]}
defaultText="NEW POST"
rightIconName="md-apps"
/>
)}
{this.state.isReady ? (
<FlatList
data={this.state.posts}
showsVerticalScrollIndicator={false}
renderItem={({ item }) => (
<PostCard
componentId={this.props.componentId}
content={item}
user={this.props.user}
isLoggedIn={this.state.isLoggedIn}
/>
)}
keyExtractor={(post, index) => index.toString()}
onEndReached={this.getMore}
removeClippedSubviews
refreshing={this.state.refreshing}
onRefresh={() => this.refreshHotPosts()}
onEndThreshold={0}
initialNumToRender={10}
ListFooterComponent={this.renderFooter}
/>
) : (
<View>
<View style={styles.placeholder}>
<Placeholder.ImageContent
size={60}
animate="fade"
lineNumber={4}
lineSpacing={5}
lastLineWidth="30%"
onReady={this.state.isReady}
/>
</View>
<View style={styles.placeholder}>
<Placeholder.ImageContent
size={60}
animate="fade"
lineNumber={4}
lineSpacing={5}
lastLineWidth="30%"
onReady={this.state.isReady}
/>
</View>
<View style={styles.placeholder}>
<Placeholder.ImageContent
size={60}
animate="fade"
lineNumber={4}
lineSpacing={5}
lastLineWidth="30%"
onReady={this.state.isReady}
/>
</View>
</View>
)}
</View>
);
}
}
export default HotPage;

View File

@ -0,0 +1,5 @@
import HomeScreen from './screen/homeScreen';
import Home from './container/homeContainer';
export { HomeScreen, Home };
export default Home;

View File

@ -0,0 +1,127 @@
import React, { PureComponent, Fragment } from 'react';
import { Text, View } from 'react-native';
import ScrollableTabView from '@esteemapp/react-native-scrollable-tab-view';
// STEEM
import { getUserData, getAuthStatus } from '../../../realm/realm';
import { getUser } from '../../../providers/steem/dsteem';
// Components
import { TabBar } from '../../../components/tabBar';
import { Posts } from '../../../components/posts';
import { Header } from '../../../components/header';
// Styles
import styles from './homeStyles';
export default class HomeScreen extends PureComponent {
constructor(props) {
super(props);
this.state = {
user: {
name: 'null',
},
isLoggedIn: false,
isLoading: true,
category: 'HOT',
options: ['HOT', 'TRENDING', 'CLOSE'],
};
}
navigationButtonPressed({ buttonId }) {
if (buttonId === 'search') {
// Navigation.showOverlay({
// component: {
// name: 'navigation.eSteem.Search',
// },
// options: {
// overlay: {
// interceptTouchOutside: true,
// },
// },
// });
}
}
showActionSheet = () => {
this.ActionSheet.show();
};
async componentDidMount() {
let user;
let userData;
let isLoggedIn;
await getAuthStatus().then((res) => {
isLoggedIn = res;
});
if (isLoggedIn) {
await getUserData().then((res) => {
user = Array.from(res);
});
userData = await getUser(user[0].username);
this.setState({
user: userData,
isLoggedIn,
isLoading: false,
});
} else {
await this.setState({
isLoading: false,
});
}
}
render() {
const { user, isLoggedIn } = this.state;
const { componentId } = this.props;
return (
<Fragment>
<Header />
<View style={styles.root} key="overlay">
<ScrollableTabView
style={styles.tabView}
renderTabBar={() => (
<TabBar
style={styles.tabbar}
tabUnderlineDefaultWidth={80} // default containerWidth / (numberOfTabs * 4)
tabUnderlineScaleX={2} // default 3
activeColor="#357ce6"
inactiveColor="#222"
tabBarPosition="overlayTop"
/>
)}
>
<View tabLabel="Feed" style={styles.tabbarItem}>
{isLoggedIn ? (
<Posts
isLoginMust
getFor="feed"
tag={user.name}
user={user}
isLoggedIn={isLoggedIn}
componentId={componentId}
/>
) : (
<Text>Login to see your Feed</Text>
)}
</View>
<View tabLabel="Hot" style={styles.tabbarItem}>
<Posts getFor="hot" user={user} isLoggedIn={isLoggedIn} componentId={componentId} />
</View>
<View tabLabel="Popular" style={styles.tabbarItem}>
<Posts
getFor="trending"
user={user}
isLoggedIn={isLoggedIn}
componentId={componentId}
/>
</View>
</ScrollableTabView>
<View style={styles.buttonContainer} />
</View>
</Fragment>
);
}
}

View File

@ -1,6 +1,29 @@
import EStyleSheet from 'react-native-extended-stylesheet';
export default EStyleSheet.create({
root: {
justifyContent: 'center',
alignItems: 'center',
flex: 1,
},
buttonContainer: {
width: '50%',
alignItems: 'center',
},
tabView: {
alignSelf: 'center',
backgroundColor: 'transparent',
},
tabbar: {
alignSelf: 'center',
height: 40,
backgroundColor: 'white',
},
tabbarItem: {
flex: 1,
backgroundColor: '#f9f9f9',
minWidth: '$deviceWidth',
},
container: {
backgroundColor: '#F9F9F9',
flex: 1,
@ -36,21 +59,6 @@ export default EStyleSheet.create({
color: 'white',
fontWeight: 'bold',
},
tabView: {
alignSelf: 'center',
backgroundColor: 'transparent',
},
tabbar: {
alignSelf: 'center',
height: 40,
backgroundColor: '#284b78',
},
tabbarItem: {
flex: 1,
paddingHorizontal: 7,
backgroundColor: '#f9f9f9',
minWidth: '$deviceWidth',
},
loginButton: {
alignSelf: 'center',
marginTop: 100,

View File

@ -1,164 +0,0 @@
/* eslint-disable no-unused-vars */
import React, { Component } from 'react';
import {
StyleSheet, FlatList, View, ActivityIndicator,
} from 'react-native';
import Placeholder from 'rn-placeholder';
import styles from '../../styles/trending.styles';
// STEEM
import { getPosts } from '../../providers/steem/dsteem';
// LIBRARIES
// COMPONENTS
import { PostCard } from '../../components/postCard';
// SCREENS
/* eslint-enable no-unused-vars */
class TrendingPage extends Component {
constructor(props) {
super(props);
this.getTrending = this.getTrending.bind(this);
this.getMore = this.getMore.bind(this);
this.refreshData = this.refreshData.bind(this);
this.state = {
isReady: false,
posts: [],
user: [],
start_author: '',
start_permlink: '',
refreshing: false,
loading: false,
isLoggedIn: this.props.isLoggedIn,
};
}
componentDidMount() {
this.getTrending();
}
getTrending = () => {
getPosts('trending', { tag: '', limit: 10 }, this.props.user.name)
.then((result) => {
this.setState({
isReady: true,
posts: result,
start_author: result[result.length - 1].author,
start_permlink: result[result.length - 1].permlink,
refreshing: false,
});
})
.catch((err) => {
alert(err);
});
};
getMore = () => {
this.setState({ loading: true });
getPosts(
'trending',
{
tag: '',
limit: 10,
start_author: this.state.start_author,
start_permlink: this.state.start_permlink,
},
this.props.user.name,
).then((result) => {
const posts = result;
posts.shift();
this.setState({
posts: [...this.state.posts, ...posts],
start_author: result[result.length - 1].author,
start_permlink: result[result.length - 1].permlink,
});
});
};
refreshData = () => {
this.setState(
{
refreshing: true,
},
() => {
this.getTrending();
},
);
};
renderFooter = () => {
if (!this.state.loading) return null;
return (
<View style={styles.flatlistFooter}>
<ActivityIndicator animating size="large" />
</View>
);
};
render() {
return (
<View style={{ flex: 1 }}>
{this.state.isReady ? (
<FlatList
data={this.state.posts}
showsVerticalScrollIndicator={false}
renderItem={({ item }) => (
<PostCard
componentId={this.props.componentId}
content={item}
user={this.props.user}
isLoggedIn={this.state.isLoggedIn}
/>
)}
keyExtractor={(post, index) => index.toString()}
onEndReached={this.getMore}
removeClippedSubviews
refreshing={this.state.refreshing}
onRefresh={() => this.refreshData()}
onEndThreshold={0}
initialNumToRender={10}
ListFooterComponent={this.renderFooter}
/>
) : (
<View>
<View style={styles.placeholder}>
<Placeholder.ImageContent
size={60}
animate="fade"
lineNumber={4}
lineSpacing={5}
lastLineWidth="30%"
onReady={this.state.isReady}
/>
</View>
<View style={styles.placeholder}>
<Placeholder.ImageContent
size={60}
animate="fade"
lineNumber={4}
lineSpacing={5}
lastLineWidth="30%"
onReady={this.state.isReady}
/>
</View>
<View style={styles.placeholder}>
<Placeholder.ImageContent
size={60}
animate="fade"
lineNumber={4}
lineSpacing={5}
lastLineWidth="30%"
onReady={this.state.isReady}
/>
</View>
</View>
)}
</View>
);
}
}
export default TrendingPage;

View File

@ -1,7 +1,10 @@
import Splash from './splash';
import Login from './login';
import PinCode from './pinCode';
import Home from './home/home';
import Splash from './splash';
import { Home } from './home';
import { Login } from './login';
import { Profile } from './profile';
import { Notification } from './notification';
// import Author from './authorProfile';
// import SideMenu from './sideMenuScreen';
// import Hot from './home/hot';
@ -15,10 +18,12 @@ import Home from './home/home';
// import { Notification } from './notification';
export {
Splash,
Home,
Login,
PinCode,
Home,
Splash,
Profile,
Notification,
// Author,
// SideMenu,
// Hot,

View File

@ -1,5 +1,5 @@
import LoginScreen from './screen/loginScreen';
import LoginContainer from './container/loginContainer';
import Login from './container/loginContainer';
export { LoginScreen, LoginContainer };
export default LoginContainer;
export { LoginScreen, Login };
export default Login;

View File

@ -9,12 +9,12 @@ import { login as loginAction, logout as logoutAction } from '../../../redux/act
// Internal Components
import { FormInput } from '../../../components/formInput';
import { TextButton } from '../../../components/buttons';
import { InformationArea } from '../../../components/informationArea';
import { Login } from '../../../providers/steem/auth';
import { LoginHeader } from '../../../components/loginHeader';
import { MainButton } from '../../../components/mainButton';
import { TabBar } from '../../../components/tabBar';
import { TextButton } from '../../../components/buttons';
import { lookupAccounts } from '../../../providers/steem/dsteem';
import STEEM_CONNECT_LOGO from '../../../assets/steem_connect.png';
@ -104,74 +104,79 @@ class LoginScreen extends Component {
description="To get all the benefits using eSteem"
onPress={() => this._handleSignUp()}
/>
<ScrollableTabView
locked={isLoading}
style={styles.tabView}
renderTabBar={() => (
<TabBar
style={styles.tabbar}
tabUnderlineDefaultWidth={100} // default containerWidth / (numberOfTabs * 4)
tabUnderlineScaleX={2} // default 3
activeColor="#357ce6"
inactiveColor="#222"
/>
)}
<KeyboardAwareScrollView
onKeyboardWillShow={() => this.setState({ keyboardIsOpen: true })}
onKeyboardWillHide={() => this.setState({ keyboardIsOpen: false })}
>
<View tabLabel="Sign in" style={styles.tabbarItem}>
<FormInput
rightIconName="md-at"
leftIconName="md-close-circle"
isValid={isUsernameValid}
onChange={value => this._handleUsernameChange(value)}
placeholder="Username"
isEditable
type="username"
isFirstImage
value={username}
/>
<FormInput
rightIconName="md-lock"
leftIconName="md-close-circle"
isValid={isUsernameValid}
onChange={value => this._handleOnPasswordChange(value)}
placeholder="Password or WIF"
isEditable
secureTextEntry
type="password"
/>
<InformationArea
description="User credentials are kept locally on the device. Credentials are
removed upon logout!"
iconName="ios-information-circle-outline"
/>
<View style={styles.footerButtons}>
<TextButton onPress={() => navigation.navigate(ROUTES.DRAWER.MAIN)} text="cancel" />
<ScrollableTabView
locked={isLoading}
style={styles.tabView}
renderTabBar={() => (
<TabBar
style={styles.tabbar}
tabUnderlineDefaultWidth={100} // default containerWidth / (numberOfTabs * 4)
tabUnderlineScaleX={2} // default 3
activeColor="#357ce6"
inactiveColor="#222"
/>
)}
>
<View tabLabel="Sign in" style={styles.tabbarItem}>
<FormInput
rightIconName="md-at"
leftIconName="md-close-circle"
isValid={isUsernameValid}
onChange={value => this._handleUsernameChange(value)}
placeholder="Username"
isEditable
type="username"
isFirstImage
value={username}
/>
<FormInput
rightIconName="md-lock"
leftIconName="md-close-circle"
isValid={isUsernameValid}
onChange={value => this._handleOnPasswordChange(value)}
placeholder="Password or WIF"
isEditable
secureTextEntry
type="password"
/>
<InformationArea
description="User credentials are kept locally on the device. Credentials are
removed upon logout!"
iconName="ios-information-circle-outline"
/>
<View style={styles.footerButtons}>
<TextButton onPress={() => navigation.navigate(ROUTES.DRAWER.MAIN)} text="cancel" />
</View>
<MainButton
wrapperStyle={styles.mainButtonWrapper}
onPress={this._handleOnPressLogin}
iconName="md-person"
iconColor="white"
text="LOGIN"
isDisable={!isUsernameValid || password.length < 2 || username.length < 2}
isLoading={isLoading}
/>
</View>
<MainButton
wrapperStyle={styles.mainButtonWrapper}
onPress={this._handleOnPressLogin}
iconName="md-person"
iconColor="white"
text="LOGIN"
isDisable={!isUsernameValid || password.length < 2 || username.length < 2}
isLoading={isLoading}
/>
</View>
<View tabLabel="SteemConnect" style={styles.steemConnectTab}>
<InformationArea
description="If you don't want to keep your password encrypted and saved on your device, you can use Steemconnect."
iconName="ios-information-circle-outline"
/>
<MainButton
wrapperStyle={styles.mainButtonWrapper}
onPress={() => this._loginwithSc2()}
iconName="md-person"
source={STEEM_CONNECT_LOGO}
text="steem"
secondText="connect"
/>
</View>
</ScrollableTabView>
<View tabLabel="SteemConnect" style={styles.steemConnectTab}>
<InformationArea
description="If you don't want to keep your password encrypted and saved on your device, you can use Steemconnect."
iconName="ios-information-circle-outline"
/>
<MainButton
wrapperStyle={styles.mainButtonWrapper}
onPress={() => this._loginwithSc2()}
iconName="md-person"
source={STEEM_CONNECT_LOGO}
text="steem"
secondText="connect"
/>
</View>
</ScrollableTabView>
</KeyboardAwareScrollView>
</View>
);
}

View File

@ -1,15 +1,22 @@
import React, { Fragment } from 'react';
import { Text, View, SafeAreaView } from 'react-native';
import React, { Fragment, PureComponent } from 'react';
import { Text, View } from 'react-native';
import ScrollableTabView from '@esteemapp/react-native-scrollable-tab-view';
import { TabBar } from '../../../components/tabBar';
import { Notification } from '../../../components/notification';
import { Header } from '../../../components/header';
// Styles
import styles from './notificationStyles';
class NotificationScreen extends React.Component {
class NotificationScreen extends PureComponent {
constructor(props) {
super(props);
this.state = {};
}
render() {
return (
<SafeAreaView style={{ flex: 1, backgroundColor: '#fff' }}>
<Fragment>
<Header />
<ScrollableTabView
style={styles.tabView}
renderTabBar={() => (
@ -29,7 +36,7 @@ class NotificationScreen extends React.Component {
<Text>Leaderboard</Text>
</View>
</ScrollableTabView>
</SafeAreaView>
</Fragment>
);
}
}

View File

@ -1,8 +1,6 @@
/* eslint-disable no-unused-vars */
import React, { Component } from 'react';
import {
FlatList, ActivityIndicator, View, Text,
} from 'react-native';
import React, { Component, Fragment } from 'react';
import { FlatList, ActivityIndicator, View } from 'react-native';
import FastImage from 'react-native-fast-image';
// Components
@ -15,6 +13,7 @@ import { PostCard } from '../../../components/postCard';
import { ProfileSummary } from '../../../components/profileSummary';
import { TabBar } from '../../../components/tabBar';
import { Wallet } from '../../../components/wallet';
import { Header } from '../../../components/header';
// Utilitites
import {
@ -156,8 +155,17 @@ class ProfileScreen extends Component {
let coverImage;
let location;
let website;
const votingPower = user && user.voting_power && user.voting_power / 100;
const fullInHour = Math.ceil((100 - votingPower) * 0.833333);
let votingPower;
let resourceCredits;
let fullInHourVP;
let fullInHourRC;
if (user) {
votingPower = user.voting_power && user.voting_power / 100;
resourceCredits = user.resource_credits && user.resource_credits / 100;
fullInHourVP = Math.ceil((100 - votingPower) * 0.833333);
fullInHourRC = Math.ceil((100 - resourceCredits) * 0.833333);
}
if (about) {
_about = about.about;
@ -166,98 +174,103 @@ class ProfileScreen extends Component {
website = about.website;
}
return (
<View style={styles.container}>
<CollapsibleCard
title={_about}
defaultTitle="Profile details"
expanded={true}
// locked={!isLoggedIn}
>
<ProfileSummary
percent={votingPower}
hours={fullInHour}
location={location}
link={website}
date={getFormatedCreatedDate(user && user.created)}
followerCount={follows.follower_count}
followingCount={follows.following_count}
coverImage={coverImage}
/>
</CollapsibleCard>
<Fragment>
<Header />
<View style={styles.container}>
<CollapsibleCard
title={_about}
defaultTitle="Profile details"
expanded={!isLoggedIn}
locked={!isLoggedIn}
>
<ProfileSummary
percentVP={votingPower}
percentRC={resourceCredits}
hoursVP={fullInHourVP}
hoursRC={fullInHourRC}
location={location}
link={website}
date={getFormatedCreatedDate(user && user.created)}
followerCount={follows.follower_count}
followingCount={follows.following_count}
coverImage={coverImage}
/>
</CollapsibleCard>
<ScrollableTabView
style={styles.tabView}
renderTabBar={() => (
<TabBar
style={styles.tabbar}
tabUnderlineDefaultWidth={80}
tabUnderlineScaleX={2}
activeColor="#357ce6"
inactiveColor="#788187"
/>
)}
>
<View tabLabel="Post" style={styles.postTabBar}>
<FilterBar
isHide={!isLoggedIn}
dropdownIconName="md-arrow-dropdown"
options={['NEW POSTS', 'VOTES', 'REPLIES', 'MENTIONS', 'FOLLOWS', 'REBLOGS']}
defaultText="ALL NOTIFICATION"
onDropdownSelect={this._handleOnDropdownSelect}
rightIconName="md-apps"
/>
{posts && posts.length > 0 ? (
<FlatList
data={posts}
showsVerticalScrollIndicator={false}
renderItem={({ item }) => (
<PostCard
style={{
shadowColor: '#f6f6f6',
}}
content={item}
user={user}
isLoggedIn
/>
)}
keyExtractor={(post, index) => index.toString()}
onEndReached={(info) => {
!isLoading && this._getMore();
}}
onEndThreshold={0}
bounces={false}
/>
) : (
<NoPost
name={user.name}
text={"haven't posted anything yet"}
defaultText="Login to see!"
<ScrollableTabView
style={styles.tabView}
renderTabBar={() => (
<TabBar
style={styles.tabbar}
tabUnderlineDefaultWidth={80}
tabUnderlineScaleX={2}
activeColor="#357ce6"
inactiveColor="#788187"
/>
)}
</View>
<View tabLabel="Comments" style={styles.commentsTabBar}>
{commments && commments.length > 0 ? (
<FlatList
data={commments}
showsVerticalScrollIndicator={false}
renderItem={({ item }) => <Comment comment={item} isLoggedIn user={user} />}
keyExtractor={(post, index) => index.toString()}
onEndThreshold={0}
bounces={false}
>
<View tabLabel="Post" style={styles.postTabBar}>
<FilterBar
isHide={!isLoggedIn}
dropdownIconName="md-arrow-dropdown"
options={['NEW POSTS', 'VOTES', 'REPLIES', 'MENTIONS', 'FOLLOWS', 'REBLOGS']}
defaultText="ALL NOTIFICATION"
onDropdownSelect={this._handleOnDropdownSelect}
rightIconName="md-apps"
/>
) : (
<NoPost
name={user.name}
text="haven't commented anything yet"
defaultText="Login to see!"
/>
)}
</View>
<View tabLabel={user.balance ? `$${user.balance}` : 'Wallet'}>
<Wallet />
</View>
</ScrollableTabView>
</View>
{posts && posts.length > 0 ? (
<FlatList
data={posts}
showsVerticalScrollIndicator={false}
renderItem={({ item }) => (
<PostCard
style={{
shadowColor: '#f6f6f6',
}}
content={item}
user={user}
isLoggedIn
/>
)}
keyExtractor={(post, index) => index.toString()}
onEndReached={(info) => {
!isLoading && this._getMore();
}}
onEndThreshold={0}
bounces={false}
/>
) : (
<NoPost
name={user.name}
text={"haven't posted anything yet"}
defaultText="Login to see!"
/>
)}
</View>
<View tabLabel="Comments" style={styles.commentsTabBar}>
{commments && commments.length > 0 ? (
<FlatList
data={commments}
showsVerticalScrollIndicator={false}
renderItem={({ item }) => <Comment comment={item} isLoggedIn user={user} />}
keyExtractor={(post, index) => index.toString()}
onEndThreshold={0}
bounces={false}
/>
) : (
<NoPost
name={user.name}
text="haven't commented anything yet"
defaultText="Login to see!"
/>
)}
</View>
<View tabLabel={user.balance ? `$${user.balance}` : 'Wallet'}>
<Wallet user={user} />
</View>
</ScrollableTabView>
</View>
</Fragment>
);
}
}

View File

@ -5,10 +5,10 @@ export default EStyleSheet.create({
container: {
flex: 1,
top: StatusBar.currentHeight,
backgroundColor: '#f6f6f6',
backgroundColor: '$primaryGray',
},
content: {
backgroundColor: '#f9f9f9',
backgroundColor: '$primaryGray',
},
cover: {
width: '$deviceWidth',
@ -20,11 +20,11 @@ export default EStyleSheet.create({
borderRadius: 50,
top: -50,
borderWidth: 1,
borderColor: 'white',
borderColor: '$white',
alignSelf: 'center',
},
about: {
borderColor: 'lightgray',
borderColor: '$primaryLightGray',
borderTopWidth: 1,
borderBottomWidth: 1,
flexDirection: 'row',
@ -39,8 +39,9 @@ export default EStyleSheet.create({
},
tabbar: {
alignSelf: 'center',
height: 40,
backgroundColor: '#fff',
height: 55,
backgroundColor: '$white',
borderBottomColor: '#f1f1f1',
},
tabbarItem: {
flex: 1,
@ -48,18 +49,15 @@ export default EStyleSheet.create({
backgroundColor: '#f9f9f9',
minWidth: '$deviceWidth',
},
tabbar: {
alignSelf: 'center',
height: 55,
backgroundColor: 'white',
borderBottomColor: '#f1f1f1',
},
tabView: {
alignSelf: 'center',
backgroundColor: 'transparent',
},
postTabBar: {},
commentsTabBar: {},
postTabBar: {
backgroundColor: '$white',
},
commentsTabBar: {
backgroundColor: '$white',
},
tabBarTitle: {},
});

View File

@ -8,21 +8,23 @@ import { default as ROUTES } from '../../../constants/routeNames';
import SplashScreen from '../screen/splashScreen';
class SplashContainer extends Component {
componentWillMount() {
componentDidMount = () => {
this._getUserData();
};
_getUserData = () => {
const { navigation } = this.props;
// getUserData().then((res) => {
// if (res) {
// alert(...res);
// }
// });
getAuthStatus().then((res) => {
if (res) {
navigation.navigate(ROUTES.DRAWER.MAIN);
} else {
navigation.navigate(ROUTES.SCREENS.LOGIN);
}
getUserData().then((response) => {
if (response) {
navigation.navigate(ROUTES.DRAWER.MAIN);
} else {
navigation.navigate(ROUTES.SCREENS.LOGIN);
}
});
});
}
};
render() {
return <SplashScreen />;

View File

@ -1,34 +0,0 @@
import EStyleSheet from 'react-native-extended-stylesheet';
import { StatusBar } from 'react-native';
export default EStyleSheet.create({
container: {
backgroundColor: '#F9F9F9',
flex: 1,
top: StatusBar.currentHeight,
},
placeholder: {
backgroundColor: 'white',
padding: 20,
borderStyle: 'solid',
borderWidth: 1,
borderTopWidth: 1,
borderColor: '#e2e5e8',
borderRadius: 5,
marginRight: 0,
marginLeft: 0,
marginTop: 10,
},
tabs: {
position: 'absolute',
top: '$deviceWidth / 30',
alignItems: 'center',
},
flatlistFooter: {
alignContent: 'center',
alignItems: 'center',
marginTop: 10,
marginBottom: 40,
borderColor: '#CED0CE',
},
});

View File

@ -1,34 +0,0 @@
import EStyleSheet from 'react-native-extended-stylesheet';
import { StatusBar } from 'react-native';
export default EStyleSheet.create({
container: {
backgroundColor: '#F9F9F9',
flex: 1,
top: StatusBar.currentHeight,
},
placeholder: {
backgroundColor: 'white',
padding: 20,
borderStyle: 'solid',
borderWidth: 1,
borderTopWidth: 1,
borderColor: '#e2e5e8',
borderRadius: 5,
marginRight: 0,
marginLeft: 0,
marginTop: 10,
},
tabs: {
position: 'absolute',
top: '$deviceWidth / 30',
alignItems: 'center',
},
flatlistFooter: {
alignContent: 'center',
alignItems: 'center',
marginTop: 10,
marginBottom: 40,
borderColor: '#CED0CE',
},
});

View File

@ -1,21 +1,15 @@
import { getUserData, getAuthStatus } from "../realm/realm";
import { getUserData, getAuthStatus } from '../realm/realm';
export const getUserIsLoggedIn = () => {
getAuthStatus()
.then(res => {
return res;
})
.catch(() => {
return null;
});
.then(res => res)
.catch(() => null);
};
export const getUserDataFromRealm = () => {
getUserData()
.then(res => {
.then((res) => {
userData = Array.from(res);
})
.catch(() => {
return null;
});
.catch(() => null);
};

7402
yarn.lock Normal file

File diff suppressed because it is too large Load Diff