首次提交,备份,android未测试

1. 登录页重构
2. prepare.js工具自动遍历page目录,生成page/_list.js,用于Navigation注册自动化
This commit is contained in:
xuwenyang 2019-05-07 22:40:24 +08:00
parent 89487b4eaa
commit df5a3cf98c
36 changed files with 14017 additions and 133 deletions

134
App.js
View file

@ -1,49 +1,115 @@
/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
* @flow
*/
import React, {Component} from 'react'; import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View} from 'react-native'; import {
StyleSheet,
Text,
View,
Image,
Platform,
ActivityIndicator,
TextInput,
Modal,
TouchableOpacity,
Keyboard,
Animated,
LayoutAnimation,
InteractionManager,
Alert, StatusBar, DeviceEventEmitter, Linking
} from 'react-native';
import {Input} from "react-native-elements";
import {Navigation} from 'react-native-navigation';
const instructions = Platform.select({ import Color from './src/style/color'
ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu', import Api from './src/util/api'
android:
'Double tap R on your keyboard to reload,\n' + import LoginForm from './src/component/loginForm'
'Shake or press menu button for dev menu', import RegisterForm from './src/component/registerForm'
export default class App extends Component {
constructor(props) {
super(props);
this.state = ({
isLoginPage: true,
loading: false
}); });
}
setLoading(loading) {
this.setState({loading});
}
_toWeb() {
Linking.openURL("https://timepill.net/home/forgot_password");
}
_switchForm() {
LayoutAnimation.easeInEaseOut();
this.setState({
isLoginPage: !this.state.isLoginPage
});
}
type Props = {};
export default class App extends Component<Props> {
render() { render() {
return ( return (
<View style={styles.container}> <View style={localStyle.wrap}>
<Text style={styles.welcome}>Welcome to React Native!</Text> <Modal visible={this.state.loading}
<Text style={styles.instructions}>To get started, edit App.js</Text> onRequestClose={() => {}}
<Text style={styles.instructions}>{instructions}</Text> transparent={true}>
<View style={localStyle.modal}>
<ActivityIndicator animating={true} color={Color.primary} size={Platform.OS === 'android' ? 'large' : 'small'}/>
</View>
</Modal>
<Animated.View style={localStyle.content}>
{this.state.isLoginPage
? (<LoginForm setLoading={this.setLoading.bind(this)}></LoginForm>)
: (<RegisterForm setLoading={this.setLoading.bind(this)}></RegisterForm>)}
<View style={localStyle.bottom}>
<TouchableOpacity onPress={this._switchForm.bind(this)}>
<Text style={localStyle.bottomText}>
{this.state.isLoginPage ? '没有账号?注册一个' : '已有账号?马上登录'}
</Text>
</TouchableOpacity>
<TouchableOpacity onPress={this._toWeb.bind(this)}>
<Text style={localStyle.bottomText}>
忘记密码
</Text>
</TouchableOpacity>
</View>
</Animated.View>
</View> </View>
); );
} }
} }
const styles = StyleSheet.create({ const localStyle = StyleSheet.create({
container: { wrap: {
flex: 1,
backgroundColor: 'white'
},
content: {
flex: 1,
paddingTop: 100,
paddingHorizontal: 15
},
bottom: {
flexDirection: 'row',
justifyContent: 'space-between',
paddingTop: 22,
paddingHorizontal: 5
},
bottomText: {
fontSize: 14,
color: Color.primary,
padding: 10
},
modal: {
flex: 1, flex: 1,
justifyContent: 'center', justifyContent: 'center',
alignItems: 'center', alignItems: 'center',
backgroundColor: '#F5FCFF', backgroundColor: 'rgba(255, 255, 255, 0.8)'
}, }
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
}); });

View file

@ -138,6 +138,9 @@ android {
} }
dependencies { dependencies {
implementation project(':react-native-device-info')
implementation project(':react-native-vector-icons')
implementation project(':@react-native-community_async-storage')
implementation fileTree(dir: "libs", include: ["*.jar"]) implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}" implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
implementation "com.facebook.react:react-native:+" // From node_modules implementation "com.facebook.react:react-native:+" // From node_modules

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -3,6 +3,9 @@ package com.timepill;
import android.app.Application; import android.app.Application;
import com.facebook.react.ReactApplication; import com.facebook.react.ReactApplication;
import com.learnium.RNDeviceInfo.RNDeviceInfo;
import com.oblador.vectoricons.VectorIconsPackage;
import com.reactnativecommunity.asyncstorage.AsyncStoragePackage;
import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage; import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage; import com.facebook.react.shell.MainReactPackage;
@ -22,7 +25,10 @@ public class MainApplication extends Application implements ReactApplication {
@Override @Override
protected List<ReactPackage> getPackages() { protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList( return Arrays.<ReactPackage>asList(
new MainReactPackage() new MainReactPackage(),
new RNDeviceInfo(),
new VectorIconsPackage(),
new AsyncStoragePackage()
); );
} }

View file

@ -1,3 +1,9 @@
rootProject.name = 'Timepill' rootProject.name = 'Timepill'
include ':react-native-device-info'
project(':react-native-device-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-info/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-community_async-storage'
project(':@react-native-community_async-storage').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/async-storage/android')
include ':app' include ':app'

View file

@ -1,9 +1,40 @@
/** /**
* @format * @entry
*/ */
import {AppRegistry} from 'react-native'; import { Navigation } from 'react-native-navigation';
import App from './App';
import {name as appName} from './app.json'; import App from './App';
import PageList from './src/page/_list'
import Token from './src/util/token'
async function init() {
let token = await Token.getUserToken();
if (!token) {
Navigation.startSingleScreenApp({
screen: {
screen: 'App',
title: 'App Title'
}
});
} else {
Navigation.startSingleScreenApp({
screen: {
screen: 'Home',
title: 'Home Title'
}
});
}
}
Navigation.registerComponent('App', () => App);
// regist screens automatically
for (let pageName in PageList) {
Navigation.registerComponent(pageName, () => PageList[pageName]);
}
init();
AppRegistry.registerComponent(appName, () => App);

View file

@ -23,6 +23,8 @@
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
1BB1EE3F5E2B43A3A160B05B /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 286848A695D94FA0AC6F8B7E /* Foundation.ttf */; };
26B1B7CC05554DA5BEF76622 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4DC49BDD3EFD4FA997BEEF58 /* Zocial.ttf */; };
2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
@ -36,10 +38,29 @@
2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D16E6891FA4F8E400B85C8A /* libReact.a */; }; 2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D16E6891FA4F8E400B85C8A /* libReact.a */; };
2DCD954D1E0B4F2C00145EB5 /* TimepillTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* TimepillTests.m */; }; 2DCD954D1E0B4F2C00145EB5 /* TimepillTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* TimepillTests.m */; };
2DF0FFEE2056DD460020B375 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; }; 2DF0FFEE2056DD460020B375 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; };
4117125F2280921A00018FD3 /* libReactNativeNavigation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4117125E2280920E00018FD3 /* libReactNativeNavigation.a */; };
444B74B0B45F447FA6D25561 /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A333F2A12D224289B26028D1 /* libRNVectorIcons.a */; };
47AE5EA4A39F43CFA279144B /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B6943EF54DC4C0E8C860C48 /* libRNDeviceInfo.a */; };
65C05FE762B34063B6F7C56A /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B75EADE871640EF8F7DB2E4 /* AntDesign.ttf */; };
6CA03C7B6F034CF5B2ECC3E5 /* libRNVectorIcons-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FC4807EA1FA42A4A55BDAE5 /* libRNVectorIcons-tvOS.a */; };
6CAEBF678D2F4D3A8D88B88A /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CC35BDC2C50846E0A4F98D35 /* EvilIcons.ttf */; };
71E72460768C4C9EB73C5050 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 0D4DF9EF3F764CD0BF997FD6 /* MaterialCommunityIcons.ttf */; };
7CDD27C257FA4106B76D549E /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C558ABC6E5C94D939958E5F9 /* FontAwesome.ttf */; };
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
93CB73C935C04E44A8FA6B25 /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B067C379E8A3470390E07C13 /* FontAwesome5_Brands.ttf */; };
9D7603B23A7F4822A211DDAE /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6D8788EB66CB42AAAE311EF6 /* Feather.ttf */; };
9DF5D161F69E45E7B193AF29 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 126191B2E4AC47DC918127F9 /* Ionicons.ttf */; };
9ED46B2FDF3A4DB9A9DE64DD /* libRNCAsyncStorage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 02F6E40D13C4416C92D5A67C /* libRNCAsyncStorage.a */; };
A61FA51EAE72415DB62CBA81 /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADD4078A795846A0BD1A4B1B /* FontAwesome5_Regular.ttf */; };
AAC17BBBD9A24A4391B1FBA1 /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E259D54DE3C4445E8CCCEE25 /* SimpleLineIcons.ttf */; };
ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; }; ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; };
B45882E734E94D3393231370 /* libRNDeviceInfo-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 784C7C58E2B04EECBD71EF5E /* libRNDeviceInfo-tvOS.a */; };
C4A31F747A7249C4AB01212C /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADDB7A9FC7044DF48E9BA080 /* Octicons.ttf */; };
D9511472069D4A7684F78795 /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 958BF3F4E40A4001BAF2E744 /* FontAwesome5_Solid.ttf */; };
E039523D29354ECE80E38A03 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 39A6CC5AA01844FCA6BAD7CE /* MaterialIcons.ttf */; };
ED297163215061F000B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED297162215061F000B7C4FE /* JavaScriptCore.framework */; }; ED297163215061F000B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED297162215061F000B7C4FE /* JavaScriptCore.framework */; };
ED2971652150620600B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED2971642150620600B7C4FE /* JavaScriptCore.framework */; }; ED2971652150620600B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED2971642150620600B7C4FE /* JavaScriptCore.framework */; };
F343A722A8DB46C79081F2A0 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 81F0243DD71F467A964CAD89 /* Entypo.ttf */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
@ -176,20 +197,6 @@
remoteGlobalIDString = 3D383D621EBD27B9005632C8; remoteGlobalIDString = 3D383D621EBD27B9005632C8;
remoteInfo = "double-conversion-tvOS"; remoteInfo = "double-conversion-tvOS";
}; };
2DF0FFEA2056DD460020B375 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 9936F3131F5F2E4B0010BF04;
remoteInfo = privatedata;
};
2DF0FFEC2056DD460020B375 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 9936F32F1F5F2E5B0010BF04;
remoteInfo = "privatedata-tvOS";
};
3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = { 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
@ -267,19 +274,75 @@
remoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4; remoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4;
remoteInfo = "cxxreact-tvOS"; remoteInfo = "cxxreact-tvOS";
}; };
3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */ = { 4117125D2280920E00018FD3 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; containerPortal = 411712342280920E00018FD3 /* ReactNativeNavigation.xcodeproj */;
proxyType = 2; proxyType = 2;
remoteGlobalIDString = 3D3CD90B1DE5FBD600167DC4; remoteGlobalIDString = D8AFADBD1BEE6F3F00A4592D;
remoteInfo = jschelpers; remoteInfo = ReactNativeNavigation;
}; };
3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */ = { 41EC7C5622809E1800779391 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2; proxyType = 2;
remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4; remoteGlobalIDString = EDEBC6D6214B3E7000DD5AC8;
remoteInfo = "jschelpers-tvOS"; remoteInfo = jsi;
};
41EC7C5822809E1800779391 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = EDEBC73B214B45A300DD5AC8;
remoteInfo = jsiexecutor;
};
41EC7C5A22809E1800779391 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = ED296FB6214C9A0900B7C4FE;
remoteInfo = "jsi-tvOS";
};
41EC7C5C22809E1800779391 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = ED296FEE214C9CF800B7C4FE;
remoteInfo = "jsiexecutor-tvOS";
};
41EC7C6222809E1800779391 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = FE0D7FAFEDE44E168687B4B2 /* RNCAsyncStorage.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 134814201AA4EA6300B7C361;
remoteInfo = RNCAsyncStorage;
};
41EC7D5122815DCA00779391 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 000EDE6A5D7D497FB251CC09 /* RNVectorIcons.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 5DBEB1501B18CEA900B34395;
remoteInfo = RNVectorIcons;
};
41FCEABD22818DAE009A3DD7 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 000EDE6A5D7D497FB251CC09 /* RNVectorIcons.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = A39873CE1EA65EE60051E01A;
remoteInfo = "RNVectorIcons-tvOS";
};
41FCEAC322818DAE009A3DD7 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = D16AA0DE1A4348A8B86F08A1 /* RNDeviceInfo.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = DA5891D81BA9A9FC002B4DB2;
remoteInfo = RNDeviceInfo;
};
41FCEAC522818DAE009A3DD7 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = D16AA0DE1A4348A8B86F08A1 /* RNDeviceInfo.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = E72EC1401F7ABB5A0001BC90;
remoteInfo = "RNDeviceInfo-tvOS";
}; };
5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = { 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
@ -319,6 +382,7 @@
/* End PBXContainerItemProxy section */ /* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
000EDE6A5D7D497FB251CC09 /* 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>"; };
008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; 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>"; }; 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>"; }; 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = "<group>"; };
@ -328,6 +392,9 @@
00E356EE1AD99517003FC87E /* TimepillTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TimepillTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356EE1AD99517003FC87E /* TimepillTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TimepillTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
00E356F21AD99517003FC87E /* TimepillTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TimepillTests.m; sourceTree = "<group>"; }; 00E356F21AD99517003FC87E /* TimepillTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TimepillTests.m; sourceTree = "<group>"; };
02F6E40D13C4416C92D5A67C /* libRNCAsyncStorage.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNCAsyncStorage.a; sourceTree = "<group>"; };
0D4DF9EF3F764CD0BF997FD6 /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialCommunityIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = "<group>"; };
126191B2E4AC47DC918127F9 /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = "<group>"; };
139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = "<group>"; }; 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>"; }; 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = "<group>"; };
13B07F961A680F5B00A75B9A /* Timepill.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Timepill.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07F961A680F5B00A75B9A /* Timepill.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Timepill.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -338,15 +405,35 @@
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Timepill/Info.plist; sourceTree = "<group>"; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Timepill/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Timepill/main.m; sourceTree = "<group>"; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Timepill/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>"; }; 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = "<group>"; };
286848A695D94FA0AC6F8B7E /* Foundation.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Foundation.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = "<group>"; };
2D02E47B1E0B4A5D006451C7 /* Timepill-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Timepill-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 2D02E47B1E0B4A5D006451C7 /* Timepill-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Timepill-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2D02E4901E0B4A5D006451C7 /* Timepill-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Timepill-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 2D02E4901E0B4A5D006451C7 /* Timepill-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Timepill-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; }; 2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; };
39A6CC5AA01844FCA6BAD7CE /* MaterialIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = "<group>"; };
411712342280920E00018FD3 /* ReactNativeNavigation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeNavigation.xcodeproj; path = "../node_modules/react-native-navigation/ios/ReactNativeNavigation.xcodeproj"; sourceTree = "<group>"; };
4B6943EF54DC4C0E8C860C48 /* libRNDeviceInfo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNDeviceInfo.a; sourceTree = "<group>"; };
4DC49BDD3EFD4FA997BEEF58 /* Zocial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Zocial.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = "<group>"; };
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.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>"; };
6D8788EB66CB42AAAE311EF6 /* Feather.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Feather.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Feather.ttf"; sourceTree = "<group>"; };
784C7C58E2B04EECBD71EF5E /* libRNDeviceInfo-tvOS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = "libRNDeviceInfo-tvOS.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>"; }; 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; };
7FC4807EA1FA42A4A55BDAE5 /* libRNVectorIcons-tvOS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = "libRNVectorIcons-tvOS.a"; sourceTree = "<group>"; };
81F0243DD71F467A964CAD89 /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = "<group>"; };
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; 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>"; };
958BF3F4E40A4001BAF2E744 /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Solid.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf"; sourceTree = "<group>"; };
9B75EADE871640EF8F7DB2E4 /* AntDesign.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = AntDesign.ttf; path = "../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf"; sourceTree = "<group>"; };
A333F2A12D224289B26028D1 /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.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>"; }; ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = "<group>"; };
ADD4078A795846A0BD1A4B1B /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Regular.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf"; sourceTree = "<group>"; };
ADDB7A9FC7044DF48E9BA080 /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = "<group>"; };
B067C379E8A3470390E07C13 /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Brands.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf"; sourceTree = "<group>"; };
C558ABC6E5C94D939958E5F9 /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = "<group>"; };
CC35BDC2C50846E0A4F98D35 /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = "<group>"; };
D16AA0DE1A4348A8B86F08A1 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = "<group>"; };
E259D54DE3C4445E8CCCEE25 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = SimpleLineIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = "<group>"; };
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
FE0D7FAFEDE44E168687B4B2 /* RNCAsyncStorage.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNCAsyncStorage.xcodeproj; path = "../node_modules/@react-native-community/async-storage/ios/RNCAsyncStorage.xcodeproj"; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@ -362,6 +449,7 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
4117125F2280921A00018FD3 /* libReactNativeNavigation.a in Frameworks */,
ED297163215061F000B7C4FE /* JavaScriptCore.framework in Frameworks */, ED297163215061F000B7C4FE /* JavaScriptCore.framework in Frameworks */,
ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */, ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */,
11D1A2F320CAFA9E000508D9 /* libRCTAnimation.a in Frameworks */, 11D1A2F320CAFA9E000508D9 /* libRCTAnimation.a in Frameworks */,
@ -375,6 +463,9 @@
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
9ED46B2FDF3A4DB9A9DE64DD /* libRNCAsyncStorage.a in Frameworks */,
444B74B0B45F447FA6D25561 /* libRNVectorIcons.a in Frameworks */,
47AE5EA4A39F43CFA279144B /* libRNDeviceInfo.a in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -391,6 +482,8 @@
2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */, 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */,
2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */, 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */,
2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */, 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */,
6CA03C7B6F034CF5B2ECC3E5 /* libRNVectorIcons-tvOS.a in Frameworks */,
B45882E734E94D3393231370 /* libRNDeviceInfo-tvOS.a in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -507,16 +600,16 @@
3DAD3EA71DF850E9000B6D8A /* libyoga.a */, 3DAD3EA71DF850E9000B6D8A /* libyoga.a */,
3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */, 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */,
3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */, 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */,
3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */,
3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */,
2DF0FFDF2056DD460020B375 /* libjsinspector.a */, 2DF0FFDF2056DD460020B375 /* libjsinspector.a */,
2DF0FFE12056DD460020B375 /* libjsinspector-tvOS.a */, 2DF0FFE12056DD460020B375 /* libjsinspector-tvOS.a */,
2DF0FFE32056DD460020B375 /* libthird-party.a */, 2DF0FFE32056DD460020B375 /* libthird-party.a */,
2DF0FFE52056DD460020B375 /* libthird-party.a */, 2DF0FFE52056DD460020B375 /* libthird-party.a */,
2DF0FFE72056DD460020B375 /* libdouble-conversion.a */, 2DF0FFE72056DD460020B375 /* libdouble-conversion.a */,
2DF0FFE92056DD460020B375 /* libdouble-conversion.a */, 2DF0FFE92056DD460020B375 /* libdouble-conversion.a */,
2DF0FFEB2056DD460020B375 /* libprivatedata.a */, 41EC7C5722809E1800779391 /* libjsi.a */,
2DF0FFED2056DD460020B375 /* libprivatedata-tvOS.a */, 41EC7C5922809E1800779391 /* libjsiexecutor.a */,
41EC7C5B22809E1800779391 /* libjsi-tvOS.a */,
41EC7C5D22809E1800779391 /* libjsiexecutor-tvOS.a */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@ -531,6 +624,52 @@
name = Frameworks; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
411712352280920E00018FD3 /* Products */ = {
isa = PBXGroup;
children = (
4117125E2280920E00018FD3 /* libReactNativeNavigation.a */,
);
name = Products;
sourceTree = "<group>";
};
41EC7C2E22809E1600779391 /* Recovered References */ = {
isa = PBXGroup;
children = (
02F6E40D13C4416C92D5A67C /* libRNCAsyncStorage.a */,
A333F2A12D224289B26028D1 /* libRNVectorIcons.a */,
7FC4807EA1FA42A4A55BDAE5 /* libRNVectorIcons-tvOS.a */,
4B6943EF54DC4C0E8C860C48 /* libRNDeviceInfo.a */,
784C7C58E2B04EECBD71EF5E /* libRNDeviceInfo-tvOS.a */,
);
name = "Recovered References";
sourceTree = "<group>";
};
41EC7C5F22809E1800779391 /* Products */ = {
isa = PBXGroup;
children = (
41EC7C6322809E1800779391 /* libRNCAsyncStorage.a */,
);
name = Products;
sourceTree = "<group>";
};
41EC7D4D22815DCA00779391 /* Products */ = {
isa = PBXGroup;
children = (
41EC7D5222815DCA00779391 /* libRNVectorIcons.a */,
41FCEABE22818DAE009A3DD7 /* libRNVectorIcons-tvOS.a */,
);
name = Products;
sourceTree = "<group>";
};
41FCEABF22818DAE009A3DD7 /* Products */ = {
isa = PBXGroup;
children = (
41FCEAC422818DAE009A3DD7 /* libRNDeviceInfo.a */,
41FCEAC622818DAE009A3DD7 /* libRNDeviceInfo-tvOS.a */,
);
name = Products;
sourceTree = "<group>";
};
5E91572E1DD0AC6500FF2AA8 /* Products */ = { 5E91572E1DD0AC6500FF2AA8 /* Products */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@ -552,6 +691,7 @@
832341AE1AAA6A7D00B99B32 /* Libraries */ = { 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
411712342280920E00018FD3 /* ReactNativeNavigation.xcodeproj */,
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */, 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */,
146833FF1AC3E56700842450 /* React.xcodeproj */, 146833FF1AC3E56700842450 /* React.xcodeproj */,
00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,
@ -564,6 +704,9 @@
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */,
00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */,
139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */,
FE0D7FAFEDE44E168687B4B2 /* RNCAsyncStorage.xcodeproj */,
000EDE6A5D7D497FB251CC09 /* RNVectorIcons.xcodeproj */,
D16AA0DE1A4348A8B86F08A1 /* RNDeviceInfo.xcodeproj */,
); );
name = Libraries; name = Libraries;
sourceTree = "<group>"; sourceTree = "<group>";
@ -585,6 +728,8 @@
00E356EF1AD99517003FC87E /* TimepillTests */, 00E356EF1AD99517003FC87E /* TimepillTests */,
83CBBA001A601CBA00E9B192 /* Products */, 83CBBA001A601CBA00E9B192 /* Products */,
2D16E6871FA4F8E400B85C8A /* Frameworks */, 2D16E6871FA4F8E400B85C8A /* Frameworks */,
41EC7C2E22809E1600779391 /* Recovered References */,
E53A65304C4E46A4856A4D78 /* Resources */,
); );
indentWidth = 2; indentWidth = 2;
sourceTree = "<group>"; sourceTree = "<group>";
@ -611,6 +756,28 @@
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
E53A65304C4E46A4856A4D78 /* Resources */ = {
isa = PBXGroup;
children = (
9B75EADE871640EF8F7DB2E4 /* AntDesign.ttf */,
81F0243DD71F467A964CAD89 /* Entypo.ttf */,
CC35BDC2C50846E0A4F98D35 /* EvilIcons.ttf */,
6D8788EB66CB42AAAE311EF6 /* Feather.ttf */,
C558ABC6E5C94D939958E5F9 /* FontAwesome.ttf */,
B067C379E8A3470390E07C13 /* FontAwesome5_Brands.ttf */,
ADD4078A795846A0BD1A4B1B /* FontAwesome5_Regular.ttf */,
958BF3F4E40A4001BAF2E744 /* FontAwesome5_Solid.ttf */,
286848A695D94FA0AC6F8B7E /* Foundation.ttf */,
126191B2E4AC47DC918127F9 /* Ionicons.ttf */,
0D4DF9EF3F764CD0BF997FD6 /* MaterialCommunityIcons.ttf */,
39A6CC5AA01844FCA6BAD7CE /* MaterialIcons.ttf */,
ADDB7A9FC7044DF48E9BA080 /* Octicons.ttf */,
E259D54DE3C4445E8CCCEE25 /* SimpleLineIcons.ttf */,
4DC49BDD3EFD4FA997BEEF58 /* Zocial.ttf */,
);
name = Resources;
sourceTree = "<group>";
};
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
@ -692,7 +859,7 @@
83CBB9F71A601CBA00E9B192 /* Project object */ = { 83CBB9F71A601CBA00E9B192 /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastUpgradeCheck = 0940; LastUpgradeCheck = 940;
ORGANIZATIONNAME = Facebook; ORGANIZATIONNAME = Facebook;
TargetAttributes = { TargetAttributes = {
00E356ED1AD99517003FC87E = { 00E356ED1AD99517003FC87E = {
@ -715,6 +882,7 @@
developmentRegion = English; developmentRegion = English;
hasScannedForEncodings = 0; hasScannedForEncodings = 0;
knownRegions = ( knownRegions = (
English,
en, en,
Base, Base,
); );
@ -770,6 +938,22 @@
ProductGroup = 146834001AC3E56700842450 /* Products */; ProductGroup = 146834001AC3E56700842450 /* Products */;
ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */;
}, },
{
ProductGroup = 411712352280920E00018FD3 /* Products */;
ProjectRef = 411712342280920E00018FD3 /* ReactNativeNavigation.xcodeproj */;
},
{
ProductGroup = 41EC7C5F22809E1800779391 /* Products */;
ProjectRef = FE0D7FAFEDE44E168687B4B2 /* RNCAsyncStorage.xcodeproj */;
},
{
ProductGroup = 41FCEABF22818DAE009A3DD7 /* Products */;
ProjectRef = D16AA0DE1A4348A8B86F08A1 /* RNDeviceInfo.xcodeproj */;
},
{
ProductGroup = 41EC7D4D22815DCA00779391 /* Products */;
ProjectRef = 000EDE6A5D7D497FB251CC09 /* RNVectorIcons.xcodeproj */;
},
); );
projectRoot = ""; projectRoot = "";
targets = ( targets = (
@ -901,20 +1085,6 @@
remoteRef = 2DF0FFE82056DD460020B375 /* PBXContainerItemProxy */; remoteRef = 2DF0FFE82056DD460020B375 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR; sourceTree = BUILT_PRODUCTS_DIR;
}; };
2DF0FFEB2056DD460020B375 /* libprivatedata.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libprivatedata.a;
remoteRef = 2DF0FFEA2056DD460020B375 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
2DF0FFED2056DD460020B375 /* libprivatedata-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libprivatedata-tvOS.a";
remoteRef = 2DF0FFEC2056DD460020B375 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = { 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = {
isa = PBXReferenceProxy; isa = PBXReferenceProxy;
fileType = archive.ar; fileType = archive.ar;
@ -992,18 +1162,74 @@
remoteRef = 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */; remoteRef = 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR; sourceTree = BUILT_PRODUCTS_DIR;
}; };
3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */ = { 4117125E2280920E00018FD3 /* libReactNativeNavigation.a */ = {
isa = PBXReferenceProxy; isa = PBXReferenceProxy;
fileType = archive.ar; fileType = archive.ar;
path = libjschelpers.a; path = libReactNativeNavigation.a;
remoteRef = 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */; remoteRef = 4117125D2280920E00018FD3 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR; sourceTree = BUILT_PRODUCTS_DIR;
}; };
3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */ = { 41EC7C5722809E1800779391 /* libjsi.a */ = {
isa = PBXReferenceProxy; isa = PBXReferenceProxy;
fileType = archive.ar; fileType = archive.ar;
path = libjschelpers.a; path = libjsi.a;
remoteRef = 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */; remoteRef = 41EC7C5622809E1800779391 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
41EC7C5922809E1800779391 /* libjsiexecutor.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libjsiexecutor.a;
remoteRef = 41EC7C5822809E1800779391 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
41EC7C5B22809E1800779391 /* libjsi-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libjsi-tvOS.a";
remoteRef = 41EC7C5A22809E1800779391 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
41EC7C5D22809E1800779391 /* libjsiexecutor-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libjsiexecutor-tvOS.a";
remoteRef = 41EC7C5C22809E1800779391 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
41EC7C6322809E1800779391 /* libRNCAsyncStorage.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNCAsyncStorage.a;
remoteRef = 41EC7C6222809E1800779391 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
41EC7D5222815DCA00779391 /* libRNVectorIcons.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNVectorIcons.a;
remoteRef = 41EC7D5122815DCA00779391 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
41FCEABE22818DAE009A3DD7 /* libRNVectorIcons-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libRNVectorIcons-tvOS.a";
remoteRef = 41FCEABD22818DAE009A3DD7 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
41FCEAC422818DAE009A3DD7 /* libRNDeviceInfo.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNDeviceInfo.a;
remoteRef = 41FCEAC322818DAE009A3DD7 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
41FCEAC622818DAE009A3DD7 /* libRNDeviceInfo-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libRNDeviceInfo-tvOS.a";
remoteRef = 41FCEAC522818DAE009A3DD7 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR; sourceTree = BUILT_PRODUCTS_DIR;
}; };
5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = { 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = {
@ -1057,6 +1283,21 @@
files = ( files = (
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
65C05FE762B34063B6F7C56A /* AntDesign.ttf in Resources */,
F343A722A8DB46C79081F2A0 /* Entypo.ttf in Resources */,
6CAEBF678D2F4D3A8D88B88A /* EvilIcons.ttf in Resources */,
9D7603B23A7F4822A211DDAE /* Feather.ttf in Resources */,
7CDD27C257FA4106B76D549E /* FontAwesome.ttf in Resources */,
93CB73C935C04E44A8FA6B25 /* FontAwesome5_Brands.ttf in Resources */,
A61FA51EAE72415DB62CBA81 /* FontAwesome5_Regular.ttf in Resources */,
D9511472069D4A7684F78795 /* FontAwesome5_Solid.ttf in Resources */,
1BB1EE3F5E2B43A3A160B05B /* Foundation.ttf in Resources */,
9DF5D161F69E45E7B193AF29 /* Ionicons.ttf in Resources */,
71E72460768C4C9EB73C5050 /* MaterialCommunityIcons.ttf in Resources */,
E039523D29354ECE80E38A03 /* MaterialIcons.ttf in Resources */,
C4A31F747A7249C4AB01212C /* Octicons.ttf in Resources */,
AAC17BBBD9A24A4391B1FBA1 /* SimpleLineIcons.ttf in Resources */,
26B1B7CC05554DA5BEF76622 /* Zocial.ttf in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -1179,9 +1420,23 @@
"DEBUG=1", "DEBUG=1",
"$(inherited)", "$(inherited)",
); );
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/@react-native-community/async-storage/ios",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
);
INFOPLIST_FILE = TimepillTests/Info.plist; INFOPLIST_FILE = TimepillTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0; IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"-ObjC", "-ObjC",
"-lc++", "-lc++",
@ -1197,9 +1452,23 @@
buildSettings = { buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)"; BUNDLE_LOADER = "$(TEST_HOST)";
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/@react-native-community/async-storage/ios",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
);
INFOPLIST_FILE = TimepillTests/Info.plist; INFOPLIST_FILE = TimepillTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0; IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"-ObjC", "-ObjC",
"-lc++", "-lc++",
@ -1216,6 +1485,12 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEAD_CODE_STRIPPING = NO; DEAD_CODE_STRIPPING = NO;
HEADER_SEARCH_PATHS = (
"$(SRCROOT)/../node_modules/react-native-navigation/ios",
"$(SRCROOT)/../node_modules/@react-native-community/async-storage/ios",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
);
INFOPLIST_FILE = Timepill/Info.plist; INFOPLIST_FILE = Timepill/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
@ -1234,6 +1509,12 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
HEADER_SEARCH_PATHS = (
"$(SRCROOT)/../node_modules/react-native-navigation/ios",
"$(SRCROOT)/../node_modules/@react-native-community/async-storage/ios",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
);
INFOPLIST_FILE = Timepill/Info.plist; INFOPLIST_FILE = Timepill/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
@ -1259,8 +1540,22 @@
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/@react-native-community/async-storage/ios",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
);
INFOPLIST_FILE = "Timepill-tvOS/Info.plist"; INFOPLIST_FILE = "Timepill-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"-ObjC", "-ObjC",
"-lc++", "-lc++",
@ -1285,8 +1580,22 @@
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/@react-native-community/async-storage/ios",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
);
INFOPLIST_FILE = "Timepill-tvOS/Info.plist"; INFOPLIST_FILE = "Timepill-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"-ObjC", "-ObjC",
"-lc++", "-lc++",
@ -1310,8 +1619,22 @@
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/@react-native-community/async-storage/ios",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
);
INFOPLIST_FILE = "Timepill-tvOSTests/Info.plist"; INFOPLIST_FILE = "Timepill-tvOSTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"-ObjC", "-ObjC",
"-lc++", "-lc++",
@ -1335,8 +1658,22 @@
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/@react-native-community/async-storage/ios",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
);
INFOPLIST_FILE = "Timepill-tvOSTests/Info.plist"; INFOPLIST_FILE = "Timepill-tvOSTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"-ObjC", "-ObjC",
"-lc++", "-lc++",

View file

@ -99,6 +99,13 @@
ReferencedContainer = "container:Timepill.xcodeproj"> ReferencedContainer = "container:Timepill.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildableProductRunnable> </BuildableProductRunnable>
<EnvironmentVariables>
<EnvironmentVariable
key = "OS_ACTIVITY_MODE"
value = "disable"
isEnabled = "YES">
</EnvironmentVariable>
</EnvironmentVariables>
<AdditionalOptions> <AdditionalOptions>
</AdditionalOptions> </AdditionalOptions>
</LaunchAction> </LaunchAction>

View file

@ -5,10 +5,9 @@
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
*/ */
#import <React/RCTBridgeDelegate.h>
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate> @interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (nonatomic, strong) UIWindow *window; @property (nonatomic, strong) UIWindow *window;

View file

@ -7,36 +7,35 @@
#import "AppDelegate.h" #import "AppDelegate.h"
#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h> #import <React/RCTBundleURLProvider.h>
// **********************************************
// *** DON'T MISS: THE NEXT LINE IS IMPORTANT ***
// **********************************************
#import "RCCManager.h"
// IMPORTANT: if you're getting an Xcode error that RCCManager.h isn't found, you've probably ran "npm install"
// with npm ver 2. You'll need to "npm install" with npm 3 (see https://github.com/wix/react-native-navigation/issues/1)
#import <React/RCTRootView.h> #import <React/RCTRootView.h>
@implementation AppDelegate @implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{ {
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; NSURL *jsCodeLocation;
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"Timepill"
initialProperties:nil];
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
// **********************************************
// *** DON'T MISS: THIS IS HOW WE BOOTSTRAP *****
// **********************************************
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new]; self.window.backgroundColor = [UIColor whiteColor];
rootViewController.view = rootView; [[RCCManager sharedInstance] initBridgeWithBundleURL:jsCodeLocation launchOptions:launchOptions];
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
return YES; return YES;
} }
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}
@end @end

View file

@ -25,7 +25,7 @@
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>NSLocationWhenInUseUsageDescription</key> <key>NSLocationWhenInUseUsageDescription</key>
<string></string> <string/>
<key>UILaunchStoryboardName</key> <key>UILaunchStoryboardName</key>
<string>LaunchScreen</string> <string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key> <key>UIRequiredDeviceCapabilities</key>
@ -40,10 +40,7 @@
</array> </array>
<key>UIViewControllerBasedStatusBarAppearance</key> <key>UIViewControllerBasedStatusBarAppearance</key>
<false/> <false/>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<key>NSAppTransportSecurity</key> <key>NSAppTransportSecurity</key>
<!--See http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/ -->
<dict> <dict>
<key>NSAllowsArbitraryLoads</key> <key>NSAllowsArbitraryLoads</key>
<true/> <true/>
@ -56,5 +53,7 @@
</dict> </dict>
</dict> </dict>
</dict> </dict>
<key>UIAppFonts</key>
<array/>
</dict> </dict>
</plist> </plist>

12817
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -7,8 +7,14 @@
"test": "jest" "test": "jest"
}, },
"dependencies": { "dependencies": {
"@react-native-community/async-storage": "^1.3.4",
"base-64": "^0.1.0",
"react": "16.8.3", "react": "16.8.3",
"react-native": "0.59.4" "react-native": "0.59.5",
"react-native-device-info": "^1.6.1",
"react-native-elements": "^1.1.0",
"react-native-navigation": "^1.1.376",
"react-native-vector-icons": "^6.4.2"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.4.3", "@babel/core": "^7.4.3",

16
prepare.js Normal file
View file

@ -0,0 +1,16 @@
const fs = require("fs");
const path = require('path')
const pagePath = './src/page';
const pageFiles = fs.readdirSync(pagePath)
.filter(x => x.endsWith('Page.js'));
const content = pageFiles.map(x => {
let key = x.substring(0, x.indexOf('Page.js'));
let value = 'require("./' + x + '").default'
return key + ': ' + value;
}).join(',\n');
fs.writeFileSync("./src/page/_list.js", 'export default {\n' + content + '\n}');

134
src/component/loginForm.js Normal file
View file

@ -0,0 +1,134 @@
import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View, InteractionManager, Alert} from 'react-native';
import {Input, Button} from "react-native-elements";
import {Navigation} from 'react-native-navigation';
import Color from '../style/color'
import Api from '../util/api'
export default class LoginForm extends Component {
constructor(props) {
super(props);
this.state = ({
username: '',
password: ''
});
}
async login() {
let isLoginSucc, errMsg = '账号或密码不正确';
this.props.setLoading(true);
try {
isLoginSucc = await Api.login(this.state.username, this.state.password);
} catch (err) {
console.log(err);
errMsg = err.message;
}
this.props.setLoading(false);
return {
isLoginSucc,
errMsg
}
}
_checkResult(result) {
InteractionManager.runAfterInteractions(() => {
if(result.isLoginSucc) {
Navigation.startSingleScreenApp({
screen: {
screen: 'Home',
title: 'Home Title',
}
});
} else {
Alert.alert(
result.errMsg,
'',
[
{text: '确定', onPress: () => {}},
],
{cancelable: false}
);
}
})
}
_clickLogin() {
this.login().then(this._checkResult);
}
_usernameSubmit() {
this.refs.loginPw.focus();
}
_passwordSubmit() {
this._clickLogin();
}
render() {return (
<View>
<Text style={localStyle.title}>{'欢迎来到胶囊日记'}</Text>
<View style={localStyle.form}>
<Input ref="loginUsername"
selectionColor={Color.primary}
underlineColorAndroid='transparent'
keyboardType='email-address'
value={this.state.username}
autoCorrect={false}
autoFocus={false}
autoCapitalize='none'
placeholderTextColor={Color.inactiveText}
placeholder='账号邮箱'
returnKeyType="next"
onChangeText={(text) => this.setState({username: text})}
onSubmitEditing={this._usernameSubmit.bind(this)}
/>
<Input ref="loginPw"
selectionColor={Color.primary}
underlineColorAndroid='transparent'
value={this.state.password}
secureTextEntry={true}
selectTextOnFocus={true}
autoCorrect={false}
placeholder='登录密码'
placeholderTextColor={Color.inactiveText}
returnKeyType='done'
onChangeText={(text) => this.setState({password: text})}
onSubmitEditing={this._passwordSubmit.bind(this)}
/>
</View>
<Button borderRadius={999} title={'登录'} backgroundColor={Color.primary}
onPress={this._clickLogin.bind(this)}
/>
</View>
);}
}
const localStyle = StyleSheet.create({
title: {
fontSize: 26,
paddingBottom: 35,
color: '#222',
textAlign: 'center'
},
form: {
paddingBottom: 20,
}
});

View file

@ -0,0 +1,147 @@
import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View, InteractionManager, Alert} from 'react-native';
import {Input, Button} from "react-native-elements";
import {Navigation} from 'react-native-navigation';
import Color from '../style/color'
import Api from '../util/api'
export default class RegisterForm extends Component {
constructor(props) {
super(props);
this.state = ({
nickname: '',
username: '',
password: ''
});
}
async register() {
let isRegisterSucc, errMsg = '注册失败';
this.props.setLoading(true);
try {
isRegisterSucc = await Api.register(this.state.nickname, this.state.username, this.state.password);
} catch (err) {
console.log(err);
errMsg = err.message;
}
this.props.setLoading(false);
return {
isRegisterSucc,
errMsg
}
}
_checkResult(result) {
InteractionManager.runAfterInteractions(() => {
if(result.isRegisterSucc) {
Navigation.startSingleScreenApp({
screen: {
screen: 'Home',
title: 'Home Title',
}
});
} else {
Alert.alert(
result.errMsg,
'',
[
{text: '确定', onPress: () => {}},
],
{cancelable: false}
)
}
})
}
_clickRegister() {
this.register().then(this._checkResult);
}
render() {return (
<View>
<Text style={localStyle.title}>{'注册胶囊日记账号'}</Text>
<View style={localStyle.form}>
<Input
selectionColor={Color.primary}
underlineColorAndroid='transparent'
keyboardType='email-address'
value={''}
autoCorrect={false}
autoFocus={false}
autoCapitalize='none'
placeholderTextColor={Color.inactiveText}
placeholder='名字'
returnKeyType='next'
onChangeText={() => {}}
onSubmitEditing={() => {}}
/>
<Input
selectionColor={Color.primary}
underlineColorAndroid='transparent'
keyboardType='email-address'
value={''}
autoCorrect={false}
autoFocus={false}
autoCapitalize='none'
placeholderTextColor={Color.inactiveText}
placeholder='账号邮箱'
returnKeyType='next'
onChangeText={() => {}}
onSubmitEditing={() => {}}
/>
<Input
selectionColor={Color.primary}
underlineColorAndroid='transparent'
value={''}
secureTextEntry={true}
selectTextOnFocus={true}
autoCorrect={false}
placeholder='登录密码'
placeholderTextColor={Color.inactiveText}
returnKeyType='done'
onChangeText={() => {}}
onSubmitEditing={() => {}}
/>
</View>
<Button borderRadius={999} title={'注册'}
backgroundColor={Color.primary}
onPress={this._clickRegister.bind(this)}
/>
</View>
);}
}
const localStyle = StyleSheet.create({
title: {
fontSize: 26,
paddingBottom: 35,
color: '#222',
textAlign: 'center'
},
form: {
paddingBottom: 20,
}
});

50
src/page/HomePage.js Normal file
View file

@ -0,0 +1,50 @@
import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View} from 'react-native';
export default class HomePage extends Component {
onPress() {
/*
this.props.navigator.push({
screen: 'Home'
});
Navigation.startSingleScreenApp({
screen: {
screen: 'Home',
title: 'Home Title',
}
});
*/
}
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>Home Page !</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});

3
src/page/_list.js Normal file
View file

@ -0,0 +1,3 @@
export default {
Home: require("./HomePage.js").default
}

20
src/style/color.js Normal file
View file

@ -0,0 +1,20 @@
export default {
primary: '#007AFF',
light: '#007AFF',
text: '#484848',
warning: '#ffdd57',
danger: '#ff3860',
inactiveText: '#9B9B9B',
darkText: '#333333',
lightText: '#7F91A7',
spaceBackground: '#f3f3ff',
navBackground: '#F9F9F9',
line: '#eee',
textSelect: '#b6d8ff',
refreshColor: '#007AFF',
iconColor:'#386DB1'
}

117
src/util/api.js Normal file
View file

@ -0,0 +1,117 @@
import TokenManager from './token'
import DeviceInfo from 'react-native-device-info';
const OS = DeviceInfo.getSystemName();
const OS_VERSION = DeviceInfo.getSystemVersion();
const DEVICE_ID = DeviceInfo.getUniqueID();
const VERSION = DeviceInfo.getVersion();
const baseUrl = 'http://open.timepill.net/api';
async function login(username, password) {
const token = TokenManager.generateToken(username, password);
await TokenManager.setUserToken(token);
try {
const userInfo = await getSelfInfo();
await TokenManager.setUserInfo(userInfo);
await TokenManager.setLoginPassword('');
return userInfo;
} catch(err) {
await TokenManager.setUserToken('');
if (err.code && err.code === 401) {
return false;
}
throw err;
}
}
async function getSelfInfo() {
return call('GET', '/users/my')
}
async function call(method, api, body, _timeout = 10000) {
let token = await TokenManager.getUserToken();
return timeout(fetch(baseUrl + api, {
method: method,
headers: {
'Authorization': token,
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-TP-OS': OS,
'X-TP-OS-Version': OS_VERSION,
'X-TP-Version': VERSION,
'X-Device-ID': DEVICE_ID,
},
body: body ? JSON.stringify(body) : null
})
.then(checkStatus)
.then(parseJSON)
.catch(handleCatch)
, _timeout);
}
function timeout(promise, time) {
return Promise.race([
promise,
new Promise(function (resolve, reject) {
setTimeout(() => reject(new Error('request timeout')), time)
})
]);
}
async function checkStatus(response) {
if (response.status >= 200 && response.status < 300) {
return response;
} else {
console.log('http error: ' + response.status + ' ' + response.body);
let errInfo;
try {
errInfo = await response.json();
console.log(errInfo);
} catch (err) {
errInfo = {
code: 0,
message: '服务器开小差了 :('
}
}
let error = new Error(errInfo.message, errInfo.code ? errInfo.code : errInfo.status_code);
error.code = errInfo.code ? errInfo.code : errInfo.status_code;
throw error
}
}
function parseJSON(response) {
if (response.headers.get('content-type') === 'application/json') {
return response.json();
} else {
return response.text();
}
}
function handleCatch(err) {
if (err.message === 'Network request failed') {
throw new Error('网络连接失败', err.id)
} else {
throw err;
}
}
export default {
login
}

104
src/util/token.js Normal file
View file

@ -0,0 +1,104 @@
import AsyncStorage from '@react-native-community/async-storage';
var base64 = require('base-64');
class TokenManager {
generateToken(username, password) {
return 'Basic ' + base64.encode(username + ":" + password);
}
async set(key, value) {
await AsyncStorage.setItem(key, value);
}
async get(key) {
return await AsyncStorage.getItem(key);
}
async setUserToken(token) {
await this.set('user_token', token);
this.token = token;
}
async getUserToken() {
if (!this.token) {
this.token = await this.get('user_token');
}
return this.token;
}
async setUserInfo(user) {
await this.set('user_info', JSON.stringify(user));
this.user = user;
}
async getUserInfo() {
if (!this.user) {
this.user = JSON.parse(await this.get('user_info'));
}
return this.user;
}
async setLoginPassword(password) {
this.set('login_password', password);
}
async getLoginPassword() {
return await this.get('login_password');
}
async setUpdateVersion(version) {
this.set('update_version', JSON.stringify(version));
}
async getUpdateVersion() {
return JSON.parse(await this.get('update_version'));
}
async setDraft(content) {
this.set('draft', JSON.stringify(content));
}
async getDraft() {
return JSON.parse(await this.get('draft'));
}
async setTempDraft(content) {
this.set('temp_draft', JSON.stringify(content));
}
async getTempDraft() {
return JSON.parse(await this.get('temp_draft'));
}
async setSetting(name, value) {
let settings = await this.getSettings();
settings[name] = value;
this.set('setting', JSON.stringify(settings));
}
async getSetting(name) {
const settings = await this.getSettings();
return settings ? (settings[name]) : null;
}
async getSettings() {
let str = await this.get('setting');
let setting = str && str.length > 0 ? JSON.parse(str) : {};
if (settings['pushMessage'] === undefined) {
settings['pushMessage'] = true;
}
return settings;
}
}
export default new TokenManager()

View file

@ -799,6 +799,11 @@
"@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-lib-coverage" "^2.0.0"
"@types/yargs" "^12.0.9" "@types/yargs" "^12.0.9"
"@react-native-community/async-storage@^1.3.4":
version "1.3.4"
resolved "https://registry.npm.taobao.org/@react-native-community/async-storage/download/@react-native-community/async-storage-1.3.4.tgz#5a664484d485bcbab79648e1a0ce775b90843f29"
integrity sha1-WmZEhNSFvLq3lkjhoM53W5CEPyk=
"@react-native-community/cli@^1.2.1": "@react-native-community/cli@^1.2.1":
version "1.8.0" version "1.8.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-1.8.0.tgz#92792e7949c963b1affedb272b3c3af87d1c73f0" resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-1.8.0.tgz#92792e7949c963b1affedb272b3c3af87d1c73f0"
@ -1267,6 +1272,11 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
base-64@^0.1.0:
version "0.1.0"
resolved "https://registry.npm.taobao.org/base-64/download/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb"
integrity sha1-eAqZyE59YAJgNhURxId2E78k9rs=
base64-js@^1.1.2, base64-js@^1.2.3: base64-js@^1.1.2, base64-js@^1.2.3:
version "1.3.0" version "1.3.0"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
@ -3643,10 +3653,10 @@ lodash.throttle@^4.1.1:
resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=
lodash@^4.17.11, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.6.1: lodash@4.x.x, lodash@^4.17.11, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.6.1:
version "4.17.11" version "4.17.11"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== integrity sha1-s56mIp72B+zYniyN8SU2iRysm40=
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
version "1.4.0" version "1.4.0"
@ -4903,10 +4913,17 @@ react-is@^16.8.1, react-is@^16.8.3, react-is@^16.8.4:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==
react-native@0.59.4: react-native-navigation@^1.1.376:
version "0.59.4" version "1.1.493"
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.59.4.tgz#c0725e2e8efdea135533794ce95fea2289fe619a" resolved "https://registry.npm.taobao.org/react-native-navigation/download/react-native-navigation-1.1.493.tgz#01d57dd9822ac603cd04d4529abacf193bbbcdac"
integrity sha512-etnXQp9IZgC8Vj5gsxZEDP4xRjJVNIj5/BSE1WcNAONG6tu6+mDBntx1jxHInwh61WYNgoQJuQGsbN5Na59ZDw== integrity sha1-AdV92YIqxgPNBNRSmrrPGTu7zaw=
dependencies:
lodash "4.x.x"
react-native@0.59.5:
version "0.59.5"
resolved "https://registry.npm.taobao.org/react-native/download/react-native-0.59.5.tgz#79500d2885a3dc83216715e1fc6effa878ad6ea9"
integrity sha1-eVANKIWj3IMhZxXh/G7/qHitbqk=
dependencies: dependencies:
"@babel/runtime" "^7.0.0" "@babel/runtime" "^7.0.0"
"@react-native-community/cli" "^1.2.1" "@react-native-community/cli" "^1.2.1"