├── .gitignore
├── BeerApp.js
├── BeerCell.js
├── BeerScreen.js
├── LICENSE
├── README.md
├── SearchScreen.js
├── beerReact.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── xcshareddata
│ └── xcschemes
│ └── beerReact.xcscheme
├── iOS
├── AppDelegate.h
├── AppDelegate.m
├── Base.lproj
│ └── LaunchScreen.xib
├── Images.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ ├── circle.imageset
│ │ ├── Contents.json
│ │ └── circle@2x.png
│ └── generic.imageset
│ │ ├── Contents.json
│ │ └── generic@2x.png
├── Info.plist
└── main.m
└── package.json
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 |
5 | # Runtime data
6 | pids
7 | *.pid
8 | *.seed
9 |
10 | # Directory for instrumented libs generated by jscoverage/JSCover
11 | lib-cov
12 |
13 | # Coverage directory used by tools like istanbul
14 | coverage
15 |
16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
17 | .grunt
18 |
19 | # node-waf configuration
20 | .lock-wscript
21 |
22 | # Compiled binary addons (http://nodejs.org/api/addons.html)
23 | build/Release
24 |
25 | # Dependency directory
26 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
27 | node_modules
28 |
29 | .DS_Store
30 | *.swp
31 | *~.nib
32 |
33 | build/
34 |
35 | *.pbxuser
36 | *.perspective
37 | *.perspectivev3
38 | xcuserdata
39 |
--------------------------------------------------------------------------------
/BeerApp.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var React = require('react-native');
4 | var {
5 | AppRegistry,
6 | NavigatorIOS,
7 | StyleSheet
8 | } = React;
9 |
10 | var SearchScreen = require('./SearchScreen');
11 |
12 | var BeerApp = React.createClass({
13 | render: function() {
14 | return (
15 |
22 | );
23 | }
24 | });
25 |
26 | var styles = StyleSheet.create({
27 | container: {
28 | flex: 1,
29 | backgroundColor: 'yellow'
30 | }
31 | });
32 |
33 | AppRegistry.registerComponent('BeerApp', ()=> BeerApp);
34 |
35 | module.exports = BeerApp;
--------------------------------------------------------------------------------
/BeerCell.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var React = require('react-native');
4 | var {
5 | Image,
6 | PixelRatio,
7 | StyleSheet,
8 | Text,
9 | TouchableHighlight,
10 | View
11 | } = React;
12 |
13 | var BeerCell = React.createClass({
14 | render: function() {
15 | var alcoholLevel = this.props.beer.alcohol;
16 | return (
17 |
18 |
19 |
20 |
21 |
22 |
23 | {this.props.beer.name}
24 |
25 |
26 | {this.props.beer.tags}
27 |
28 |
29 |
30 |
33 |
34 |
35 | {this.props.beer.alcohol}
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | );
46 | }
47 | });
48 |
49 | var styles = StyleSheet.create({
50 | textContainer: {
51 | flex: 1,
52 | flexDirection: 'row',
53 | },
54 | beerName: {
55 | flex: 1,
56 | fontSize: 16,
57 | fontWeight: '500',
58 | marginBottom: 2,
59 | },
60 | beerStyle: {
61 | color: '#999999',
62 | fontSize: 12,
63 | },
64 | row: {
65 | alignItems: 'center',
66 | backgroundColor: 'white',
67 | flexDirection: 'row',
68 | padding: 5,
69 | },
70 | cellImage: {
71 | backgroundColor: '#dddddd',
72 | height: 93,
73 | marginRight: 10,
74 | width: 60,
75 | },
76 | cellBorder: {
77 | backgroundColor: 'rgba(0, 0, 0, 0.1)',
78 | // Trick to get the thinest line the device can display
79 | height: 1 / PixelRatio.get(),
80 | marginLeft: 4,
81 | },
82 | });
83 |
84 | module.exports = BeerCell;
--------------------------------------------------------------------------------
/BeerScreen.js:
--------------------------------------------------------------------------------
1 |
2 | 'use strict';
3 |
4 | var React = require('react-native');
5 | var {
6 | Image,
7 | PixelRatio,
8 | ScrollView,
9 | StyleSheet,
10 | Text,
11 | View,
12 | } = React;
13 |
14 | var BeerScreen = React.createClass({
15 | render: function() {
16 | return (
17 |
18 |
19 |
20 |
21 | {this.props.beer.name}
22 | {this.props.beer.brewery}
23 |
24 |
25 |
26 |
30 |
31 |
33 |
36 |
38 |
39 | {this.props.beer.alcohol}
40 |
41 |
42 |
43 |
44 |
45 |
46 | {this.props.beer.brewery}
47 |
48 |
49 | {this.props.beer.tags}
50 |
51 |
52 |
53 |
54 | );
55 | },
56 | });
57 |
58 | var styles = StyleSheet.create({
59 | contentContainer: {
60 | padding: 10,
61 | },
62 | mainSection: {
63 | flexDirection: 'row',
64 | },
65 | cardSection: {
66 | flex: 1,
67 | shadowColor: '#cccccc',
68 | shadowOffset: {h: 3, w: 3},
69 | shadowRadius: 5,
70 | },
71 | cardTopSection: {
72 | flex: 1,
73 | borderWidth: 1,
74 | borderColor: '#dddddd',
75 | padding: 16,
76 | },
77 | cardBeerSection: {
78 | borderColor: '#dddddd',
79 | borderWidth: 1,
80 | marginTop: -1,
81 | flex: 1,
82 | flexDirection: 'row',
83 | },
84 | cardHomeSection: {
85 | borderColor: '#dddddd',
86 | borderWidth: 1,
87 | marginTop: -1,
88 | flex: 1,
89 | flexDirection: 'row',
90 | padding: 16,
91 | },
92 | cardTagSection: {
93 | borderColor: '#dddddd',
94 | borderWidth: 1,
95 | marginTop: -1,
96 | flex: 1,
97 | flexDirection: 'row',
98 | padding: 16,
99 | },
100 | beerName: {
101 | flex: 1,
102 | fontSize: 16,
103 | marginTop: 0,
104 | marginRight: 0,
105 | marginLeft: 0,
106 | marginBottom: 2,
107 | color: 'black',
108 | fontWeight: 'normal',
109 | fontFamily: "Helvetica Neue",
110 | },
111 | beerBrewery: {
112 | flex: 1,
113 | color: '#666666',
114 | fontSize: 14,
115 | fontWeight: 'normal',
116 | fontFamily: "Helvetica Neue",
117 | },
118 | beerImage: {
119 | width: 100,
120 | height: 200,
121 | // backgroundColor: '#eaeaea',
122 | resizeMode: 'contain',
123 | },
124 | alcoholPercentage: {
125 | flex: 1,
126 | justifyContent: 'space-between',
127 | fontSize: 20,
128 | },
129 | });
130 |
131 | module.exports = BeerScreen;
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Murat Sutunc
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | #Belgian Beer Explorer in react-native
2 | A Belgian Beer Explorer app based on the movie sample from react-native examples.
3 |
4 | 
--------------------------------------------------------------------------------
/SearchScreen.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var React = require('react-native');
4 |
5 | var {
6 | ActivityIndicatorIOS,
7 | ListView,
8 | StyleSheet,
9 | Text,
10 | TextInput,
11 | View,
12 | } = React;
13 | var TimerMixin = require('react-timer-mixin');
14 |
15 | var BeerCell = require('./BeerCell');
16 | var BeerScreen = require('./BeerScreen');
17 |
18 | var fetch = require('fetch');
19 |
20 | var API_URL = 'http://belgianbeerexplorer.coenraets.org/products';
21 |
22 | // Results should be cached keyed by the query
23 | // with values of null meaning "being fetched"
24 | // and anything besides null and undefined
25 | // as the result of a valid query
26 | var resultsCache = {
27 | dataForQuery: {},
28 | nextPageNumberForQuery: {},
29 | totalForQuery: {},
30 | };
31 |
32 | var LOADING = {};
33 |
34 | var SearchScreen = React.createClass({
35 | mixins: [TimerMixin],
36 |
37 | timeoutID: (null: any),
38 |
39 | getInitialState: function() {
40 | return {
41 | isLoading: false,
42 | isLoadingTail: false,
43 | dataSource: new ListView.DataSource({
44 | rowHasChanged: (row1, row2) => row1 !== row2,
45 | }),
46 | filter: '',
47 | queryNumber: 0,
48 | };
49 | },
50 |
51 | componentDidMount: function() {
52 | this.searchBeers('');
53 | },
54 |
55 | _urlForQueryAndPage: function(query: string, pageNumber: ?number): string {
56 | if (query) {
57 | return (
58 | API_URL + '?search=' + encodeURIComponent(query) +
59 | '&page_limit=20&page=' + pageNumber
60 | );
61 | } else {
62 | return (
63 | API_URL + '?pageSize=20&page=' + pageNumber
64 | );
65 | }
66 | },
67 |
68 | searchBeers: function(query: string) {
69 | this.timeoutID = null;
70 |
71 | this.setState({filter: query});
72 |
73 | var cachedResultsForQuery = resultsCache.dataForQuery[query];
74 | if (cachedResultsForQuery) {
75 | if (!LOADING[query]) {
76 | this.setState({
77 | dataSource: this.getDataSource(cachedResultsForQuery),
78 | isLoading: false
79 | });
80 | } else {
81 | this.setState({isLoading: true});
82 | }
83 | return;
84 | }
85 |
86 | LOADING[query] = true;
87 | resultsCache.dataForQuery[query] = null;
88 | this.setState({
89 | isLoading: true,
90 | queryNumber: this.state.queryNumber + 1,
91 | isLoadingTail: false,
92 | });
93 |
94 | fetch(this._urlForQueryAndPage(query, 1))
95 | .then((response) => response.json())
96 | .then((responseData) => {
97 | LOADING[query] = false;
98 | resultsCache.totalForQuery[query] = responseData.total;
99 | resultsCache.dataForQuery[query] = responseData.products;
100 | resultsCache.nextPageNumberForQuery[query] = 2;
101 |
102 | if (this.state.filter !== query) {
103 | // do not update state if the query is stale
104 | return;
105 | }
106 |
107 | this.setState({
108 | isLoading: false,
109 | dataSource: this.getDataSource(responseData.products),
110 | });
111 | })
112 | .catch((error) => {
113 | LOADING[query] = false;
114 | resultsCache.dataForQuery[query] = undefined;
115 |
116 | this.setState({
117 | dataSource: this.getDataSource([]),
118 | isLoading: false,
119 | });
120 | })
121 | .done();
122 | },
123 |
124 | hasMore: function(): boolean {
125 | var query = this.state.filter;
126 | if (!resultsCache.dataForQuery[query]) {
127 | return true;
128 | }
129 | return (
130 | resultsCache.totalForQuery[query] !==
131 | resultsCache.dataForQuery[query].length
132 | );
133 | },
134 |
135 | onEndReached: function() {
136 | var query = this.state.filter;
137 | if (!this.hasMore() || this.state.isLoadingTail) {
138 | // We're already fetching or have all the elements so noop
139 | return;
140 | }
141 |
142 | if (LOADING[query]) {
143 | return;
144 | }
145 |
146 | LOADING[query] = true;
147 | this.setState({
148 | queryNumber: this.state.queryNumber + 1,
149 | isLoadingTail: true,
150 | });
151 |
152 | var page = resultsCache.nextPageNumberForQuery[query];
153 | fetch(this._urlForQueryAndPage(query, page))
154 | .then((response) => response.json())
155 | .catch((error) => {
156 | console.error(error);
157 | LOADING[query] = false;
158 | this.setState({
159 | isLoadingTail: false,
160 | });
161 | })
162 | .then((responseData) => {
163 | var beersForQuery = resultsCache.dataForQuery[query].slice();
164 |
165 | LOADING[query] = false;
166 | // We reached the end of the list before the expected number of results
167 | if (!responseData.products) {
168 | resultsCache.totalForQuery[query] = beersForQuery.length;
169 | } else {
170 | for (var i in responseData.products) {
171 | beersForQuery.push(responseData.products[i]);
172 | }
173 | resultsCache.dataForQuery[query] = beersForQuery;
174 | resultsCache.nextPageNumberForQuery[query] += 1;
175 | }
176 |
177 | if (this.state.filter !== query) {
178 | // do not update state if the query is stale
179 | return;
180 | }
181 |
182 | this.setState({
183 | isLoadingTail: false,
184 | dataSource: this.getDataSource(resultsCache.dataForQuery[query]),
185 | });
186 | })
187 | .done();
188 | },
189 |
190 | getDataSource: function(beers: Array): ListView.DataSource {
191 | return this.state.dataSource.cloneWithRows(beers);
192 | },
193 |
194 | selectBeer: function(beer: Object) {
195 | this.props.navigator.push({
196 | title: beer.name,
197 | component: BeerScreen,
198 | passProps: {beer},
199 | });
200 | },
201 |
202 | onSearchChange: function(event: Object) {
203 | var filter = event.nativeEvent.text.toLowerCase();
204 |
205 | this.clearTimeout(this.timeoutID);
206 | this.timeoutID = this.setTimeout(() => this.searchBeers(filter), 100);
207 | },
208 |
209 | renderFooter: function() {
210 | if (!this.hasMore() || !this.state.isLoadingTail) {
211 | return ;
212 | }
213 | return ;
214 | },
215 |
216 | renderRow: function(beer: Object) {
217 | return (
218 | this.selectBeer(beer)}
220 | beer={beer}
221 | />
222 | );
223 | },
224 |
225 | render: function() {
226 | var content = this.state.dataSource.getRowCount() === 0 ?
227 | :
231 | ;
242 |
243 | return (
244 |
245 | this.refs.listview.getScrollResponder().scrollTo(0, 0)}
249 | />
250 |
251 | {content}
252 |
253 | );
254 | },
255 | });
256 |
257 | var NoBeers = React.createClass({
258 | render: function() {
259 | var text = '';
260 | if (this.props.filter) {
261 | text = `No results for “${this.props.filter}”`;
262 | } else if (!this.props.isLoading) {
263 | // no results, show a message
264 | text = 'No beers found';
265 | }
266 |
267 | return (
268 |
269 | {text}
270 |
271 | );
272 | }
273 | });
274 |
275 | var SearchBar = React.createClass({
276 | render: function() {
277 | return (
278 |
279 |
287 |
291 |
292 | );
293 | }
294 | });
295 |
296 | var styles = StyleSheet.create({
297 | container: {
298 | flex: 1,
299 | backgroundColor: 'white',
300 | },
301 | centerText: {
302 | alignItems: 'center',
303 | },
304 | noBeersText: {
305 | marginTop: 80,
306 | color: '#888888',
307 | },
308 | searchBar: {
309 | marginTop: 64,
310 | padding: 3,
311 | paddingLeft: 8,
312 | flexDirection: 'row',
313 | alignItems: 'center',
314 | },
315 | searchBarInput: {
316 | fontSize: 15,
317 | flex: 1,
318 | height: 30,
319 | },
320 | separator: {
321 | height: 1,
322 | backgroundColor: '#eeeeee',
323 | },
324 | spinner: {
325 | width: 30,
326 | },
327 | scrollSpinner: {
328 | marginVertical: 20,
329 | },
330 | });
331 |
332 | module.exports = SearchScreen;
--------------------------------------------------------------------------------
/beerReact.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 00481BE81AC0C86700671115 /* libRCTWebSocketDebugger.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00481BE61AC0C7FA00671115 /* libRCTWebSocketDebugger.a */; };
11 | 00481BEA1AC0C89D00671115 /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 00481BE91AC0C89D00671115 /* libicucore.dylib */; };
12 | 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
13 | 00C302E61ABCBA2D00DB3ED1 /* libRCTAdSupport.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302B41ABCB8E700DB3ED1 /* libRCTAdSupport.a */; };
14 | 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
15 | 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; };
16 | 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; };
17 | 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; };
18 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
19 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
20 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
21 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
22 | 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
23 | 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
24 | /* End PBXBuildFile section */
25 |
26 | /* Begin PBXContainerItemProxy section */
27 | 00481BE51AC0C7FA00671115 /* PBXContainerItemProxy */ = {
28 | isa = PBXContainerItemProxy;
29 | containerPortal = 00481BDB1AC0C7FA00671115 /* RCTWebSocketDebugger.xcodeproj */;
30 | proxyType = 2;
31 | remoteGlobalIDString = 832C81801AAF6DEF007FA2F7;
32 | remoteInfo = RCTWebSocketDebugger;
33 | };
34 | 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = {
35 | isa = PBXContainerItemProxy;
36 | containerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */;
37 | proxyType = 2;
38 | remoteGlobalIDString = 134814201AA4EA6300B7C361;
39 | remoteInfo = RCTActionSheet;
40 | };
41 | 00C302B31ABCB8E700DB3ED1 /* PBXContainerItemProxy */ = {
42 | isa = PBXContainerItemProxy;
43 | containerPortal = 00C302AF1ABCB8E700DB3ED1 /* RCTAdSupport.xcodeproj */;
44 | proxyType = 2;
45 | remoteGlobalIDString = 832C81801AAF6DEF007FA2F7;
46 | remoteInfo = RCTAdSupport;
47 | };
48 | 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = {
49 | isa = PBXContainerItemProxy;
50 | containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;
51 | proxyType = 2;
52 | remoteGlobalIDString = 134814201AA4EA6300B7C361;
53 | remoteInfo = RCTGeolocation;
54 | };
55 | 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = {
56 | isa = PBXContainerItemProxy;
57 | containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
58 | proxyType = 2;
59 | remoteGlobalIDString = 58B5115D1A9E6B3D00147676;
60 | remoteInfo = RCTImage;
61 | };
62 | 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = {
63 | isa = PBXContainerItemProxy;
64 | containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;
65 | proxyType = 2;
66 | remoteGlobalIDString = 58B511DB1A9E6C8500147676;
67 | remoteInfo = RCTNetwork;
68 | };
69 | 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = {
70 | isa = PBXContainerItemProxy;
71 | containerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */;
72 | proxyType = 2;
73 | remoteGlobalIDString = 832C81801AAF6DEF007FA2F7;
74 | remoteInfo = RCTVibration;
75 | };
76 | 146834031AC3E56700842450 /* PBXContainerItemProxy */ = {
77 | isa = PBXContainerItemProxy;
78 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
79 | proxyType = 2;
80 | remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192;
81 | remoteInfo = React;
82 | };
83 | 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = {
84 | isa = PBXContainerItemProxy;
85 | containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */;
86 | proxyType = 2;
87 | remoteGlobalIDString = 58B5119B1A9E6C1200147676;
88 | remoteInfo = RCTText;
89 | };
90 | /* End PBXContainerItemProxy section */
91 |
92 | /* Begin PBXFileReference section */
93 | 00481BDB1AC0C7FA00671115 /* RCTWebSocketDebugger.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocketDebugger.xcodeproj; path = "node_modules/react-native/Libraries/RCTWebSocketDebugger/RCTWebSocketDebugger.xcodeproj"; sourceTree = ""; };
94 | 00481BE91AC0C89D00671115 /* libicucore.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.dylib; path = usr/lib/libicucore.dylib; sourceTree = SDKROOT; };
95 | 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; };
96 | 00C302AF1ABCB8E700DB3ED1 /* RCTAdSupport.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAdSupport.xcodeproj; path = "node_modules/react-native/Libraries/AdSupport/RCTAdSupport.xcodeproj"; sourceTree = ""; };
97 | 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; };
98 | 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; };
99 | 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; };
100 | 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; };
101 | 13B07F961A680F5B00A75B9A /* beerReact.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = beerReact.app; sourceTree = BUILT_PRODUCTS_DIR; };
102 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = iOS/AppDelegate.h; sourceTree = ""; };
103 | 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = iOS/AppDelegate.m; sourceTree = ""; };
104 | 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; };
105 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = iOS/Images.xcassets; sourceTree = ""; };
106 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = iOS/Info.plist; sourceTree = ""; };
107 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = iOS/main.m; sourceTree = ""; };
108 | 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; };
109 | 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; };
110 | /* End PBXFileReference section */
111 |
112 | /* Begin PBXFrameworksBuildPhase section */
113 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
114 | isa = PBXFrameworksBuildPhase;
115 | buildActionMask = 2147483647;
116 | files = (
117 | 00481BEA1AC0C89D00671115 /* libicucore.dylib in Frameworks */,
118 | 146834051AC3E58100842450 /* libReact.a in Frameworks */,
119 | 00481BE81AC0C86700671115 /* libRCTWebSocketDebugger.a in Frameworks */,
120 | 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
121 | 00C302E61ABCBA2D00DB3ED1 /* libRCTAdSupport.a in Frameworks */,
122 | 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */,
123 | 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */,
124 | 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */,
125 | 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
126 | 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
127 | );
128 | runOnlyForDeploymentPostprocessing = 0;
129 | };
130 | /* End PBXFrameworksBuildPhase section */
131 |
132 | /* Begin PBXGroup section */
133 | 00481BDC1AC0C7FA00671115 /* Products */ = {
134 | isa = PBXGroup;
135 | children = (
136 | 00481BE61AC0C7FA00671115 /* libRCTWebSocketDebugger.a */,
137 | );
138 | name = Products;
139 | sourceTree = "";
140 | };
141 | 00C302A81ABCB8CE00DB3ED1 /* Products */ = {
142 | isa = PBXGroup;
143 | children = (
144 | 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */,
145 | );
146 | name = Products;
147 | sourceTree = "";
148 | };
149 | 00C302B01ABCB8E700DB3ED1 /* Products */ = {
150 | isa = PBXGroup;
151 | children = (
152 | 00C302B41ABCB8E700DB3ED1 /* libRCTAdSupport.a */,
153 | );
154 | name = Products;
155 | sourceTree = "";
156 | };
157 | 00C302B61ABCB90400DB3ED1 /* Products */ = {
158 | isa = PBXGroup;
159 | children = (
160 | 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */,
161 | );
162 | name = Products;
163 | sourceTree = "";
164 | };
165 | 00C302BC1ABCB91800DB3ED1 /* Products */ = {
166 | isa = PBXGroup;
167 | children = (
168 | 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */,
169 | );
170 | name = Products;
171 | sourceTree = "";
172 | };
173 | 00C302D41ABCB9D200DB3ED1 /* Products */ = {
174 | isa = PBXGroup;
175 | children = (
176 | 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */,
177 | );
178 | name = Products;
179 | sourceTree = "";
180 | };
181 | 00C302E01ABCB9EE00DB3ED1 /* Products */ = {
182 | isa = PBXGroup;
183 | children = (
184 | 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */,
185 | );
186 | name = Products;
187 | sourceTree = "";
188 | };
189 | 13B07FAE1A68108700A75B9A /* beerReact */ = {
190 | isa = PBXGroup;
191 | children = (
192 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
193 | 13B07FB01A68108700A75B9A /* AppDelegate.m */,
194 | 13B07FB51A68108700A75B9A /* Images.xcassets */,
195 | 13B07FB61A68108700A75B9A /* Info.plist */,
196 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */,
197 | 13B07FB71A68108700A75B9A /* main.m */,
198 | );
199 | name = beerReact;
200 | sourceTree = "";
201 | };
202 | 146834001AC3E56700842450 /* Products */ = {
203 | isa = PBXGroup;
204 | children = (
205 | 146834041AC3E56700842450 /* libReact.a */,
206 | );
207 | name = Products;
208 | sourceTree = "";
209 | };
210 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
211 | isa = PBXGroup;
212 | children = (
213 | 146833FF1AC3E56700842450 /* React.xcodeproj */,
214 | 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */,
215 | 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,
216 | 00C302AF1ABCB8E700DB3ED1 /* RCTAdSupport.xcodeproj */,
217 | 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */,
218 | 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */,
219 | 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */,
220 | 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */,
221 | 00481BDB1AC0C7FA00671115 /* RCTWebSocketDebugger.xcodeproj */,
222 | 00481BE91AC0C89D00671115 /* libicucore.dylib */,
223 | );
224 | name = Libraries;
225 | sourceTree = "";
226 | };
227 | 832341B11AAA6A8300B99B32 /* Products */ = {
228 | isa = PBXGroup;
229 | children = (
230 | 832341B51AAA6A8300B99B32 /* libRCTText.a */,
231 | );
232 | name = Products;
233 | sourceTree = "";
234 | };
235 | 83CBB9F61A601CBA00E9B192 = {
236 | isa = PBXGroup;
237 | children = (
238 | 13B07FAE1A68108700A75B9A /* beerReact */,
239 | 832341AE1AAA6A7D00B99B32 /* Libraries */,
240 | 83CBBA001A601CBA00E9B192 /* Products */,
241 | );
242 | sourceTree = "";
243 | };
244 | 83CBBA001A601CBA00E9B192 /* Products */ = {
245 | isa = PBXGroup;
246 | children = (
247 | 13B07F961A680F5B00A75B9A /* beerReact.app */,
248 | );
249 | name = Products;
250 | sourceTree = "";
251 | };
252 | /* End PBXGroup section */
253 |
254 | /* Begin PBXNativeTarget section */
255 | 13B07F861A680F5B00A75B9A /* beerReact */ = {
256 | isa = PBXNativeTarget;
257 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "beerReact" */;
258 | buildPhases = (
259 | 13B07F871A680F5B00A75B9A /* Sources */,
260 | 13B07F8C1A680F5B00A75B9A /* Frameworks */,
261 | 13B07F8E1A680F5B00A75B9A /* Resources */,
262 | );
263 | buildRules = (
264 | );
265 | dependencies = (
266 | );
267 | name = beerReact;
268 | productName = "Hello World";
269 | productReference = 13B07F961A680F5B00A75B9A /* beerReact.app */;
270 | productType = "com.apple.product-type.application";
271 | };
272 | /* End PBXNativeTarget section */
273 |
274 | /* Begin PBXProject section */
275 | 83CBB9F71A601CBA00E9B192 /* Project object */ = {
276 | isa = PBXProject;
277 | attributes = {
278 | LastUpgradeCheck = 0610;
279 | ORGANIZATIONNAME = Facebook;
280 | };
281 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "beerReact" */;
282 | compatibilityVersion = "Xcode 3.2";
283 | developmentRegion = English;
284 | hasScannedForEncodings = 0;
285 | knownRegions = (
286 | en,
287 | Base,
288 | );
289 | mainGroup = 83CBB9F61A601CBA00E9B192;
290 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
291 | projectDirPath = "";
292 | projectReferences = (
293 | {
294 | ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */;
295 | ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */;
296 | },
297 | {
298 | ProductGroup = 00C302B01ABCB8E700DB3ED1 /* Products */;
299 | ProjectRef = 00C302AF1ABCB8E700DB3ED1 /* RCTAdSupport.xcodeproj */;
300 | },
301 | {
302 | ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */;
303 | ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;
304 | },
305 | {
306 | ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */;
307 | ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
308 | },
309 | {
310 | ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */;
311 | ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;
312 | },
313 | {
314 | ProductGroup = 832341B11AAA6A8300B99B32 /* Products */;
315 | ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */;
316 | },
317 | {
318 | ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */;
319 | ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */;
320 | },
321 | {
322 | ProductGroup = 00481BDC1AC0C7FA00671115 /* Products */;
323 | ProjectRef = 00481BDB1AC0C7FA00671115 /* RCTWebSocketDebugger.xcodeproj */;
324 | },
325 | {
326 | ProductGroup = 146834001AC3E56700842450 /* Products */;
327 | ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */;
328 | },
329 | );
330 | projectRoot = "";
331 | targets = (
332 | 13B07F861A680F5B00A75B9A /* beerReact */,
333 | );
334 | };
335 | /* End PBXProject section */
336 |
337 | /* Begin PBXReferenceProxy section */
338 | 00481BE61AC0C7FA00671115 /* libRCTWebSocketDebugger.a */ = {
339 | isa = PBXReferenceProxy;
340 | fileType = archive.ar;
341 | path = libRCTWebSocketDebugger.a;
342 | remoteRef = 00481BE51AC0C7FA00671115 /* PBXContainerItemProxy */;
343 | sourceTree = BUILT_PRODUCTS_DIR;
344 | };
345 | 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = {
346 | isa = PBXReferenceProxy;
347 | fileType = archive.ar;
348 | path = libRCTActionSheet.a;
349 | remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */;
350 | sourceTree = BUILT_PRODUCTS_DIR;
351 | };
352 | 00C302B41ABCB8E700DB3ED1 /* libRCTAdSupport.a */ = {
353 | isa = PBXReferenceProxy;
354 | fileType = archive.ar;
355 | path = libRCTAdSupport.a;
356 | remoteRef = 00C302B31ABCB8E700DB3ED1 /* PBXContainerItemProxy */;
357 | sourceTree = BUILT_PRODUCTS_DIR;
358 | };
359 | 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = {
360 | isa = PBXReferenceProxy;
361 | fileType = archive.ar;
362 | path = libRCTGeolocation.a;
363 | remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */;
364 | sourceTree = BUILT_PRODUCTS_DIR;
365 | };
366 | 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = {
367 | isa = PBXReferenceProxy;
368 | fileType = archive.ar;
369 | path = libRCTImage.a;
370 | remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */;
371 | sourceTree = BUILT_PRODUCTS_DIR;
372 | };
373 | 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = {
374 | isa = PBXReferenceProxy;
375 | fileType = archive.ar;
376 | path = libRCTNetwork.a;
377 | remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */;
378 | sourceTree = BUILT_PRODUCTS_DIR;
379 | };
380 | 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = {
381 | isa = PBXReferenceProxy;
382 | fileType = archive.ar;
383 | path = libRCTVibration.a;
384 | remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */;
385 | sourceTree = BUILT_PRODUCTS_DIR;
386 | };
387 | 146834041AC3E56700842450 /* libReact.a */ = {
388 | isa = PBXReferenceProxy;
389 | fileType = archive.ar;
390 | path = libReact.a;
391 | remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */;
392 | sourceTree = BUILT_PRODUCTS_DIR;
393 | };
394 | 832341B51AAA6A8300B99B32 /* libRCTText.a */ = {
395 | isa = PBXReferenceProxy;
396 | fileType = archive.ar;
397 | path = libRCTText.a;
398 | remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */;
399 | sourceTree = BUILT_PRODUCTS_DIR;
400 | };
401 | /* End PBXReferenceProxy section */
402 |
403 | /* Begin PBXResourcesBuildPhase section */
404 | 13B07F8E1A680F5B00A75B9A /* Resources */ = {
405 | isa = PBXResourcesBuildPhase;
406 | buildActionMask = 2147483647;
407 | files = (
408 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
409 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
410 | );
411 | runOnlyForDeploymentPostprocessing = 0;
412 | };
413 | /* End PBXResourcesBuildPhase section */
414 |
415 | /* Begin PBXSourcesBuildPhase section */
416 | 13B07F871A680F5B00A75B9A /* Sources */ = {
417 | isa = PBXSourcesBuildPhase;
418 | buildActionMask = 2147483647;
419 | files = (
420 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
421 | 13B07FC11A68108700A75B9A /* main.m in Sources */,
422 | );
423 | runOnlyForDeploymentPostprocessing = 0;
424 | };
425 | /* End PBXSourcesBuildPhase section */
426 |
427 | /* Begin PBXVariantGroup section */
428 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = {
429 | isa = PBXVariantGroup;
430 | children = (
431 | 13B07FB21A68108700A75B9A /* Base */,
432 | );
433 | name = LaunchScreen.xib;
434 | path = iOS;
435 | sourceTree = "";
436 | };
437 | /* End PBXVariantGroup section */
438 |
439 | /* Begin XCBuildConfiguration section */
440 | 13B07F941A680F5B00A75B9A /* Debug */ = {
441 | isa = XCBuildConfiguration;
442 | buildSettings = {
443 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
444 | HEADER_SEARCH_PATHS = (
445 | "$(inherited)",
446 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
447 | "$(SRCROOT)/node_modules/react-native/React/**",
448 | );
449 | INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
450 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
451 | OTHER_LDFLAGS = "-ObjC";
452 | PRODUCT_NAME = beerReact;
453 | };
454 | name = Debug;
455 | };
456 | 13B07F951A680F5B00A75B9A /* Release */ = {
457 | isa = XCBuildConfiguration;
458 | buildSettings = {
459 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
460 | HEADER_SEARCH_PATHS = (
461 | "$(inherited)",
462 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
463 | "$(SRCROOT)/node_modules/react-native/React/**",
464 | );
465 | INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
466 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
467 | OTHER_LDFLAGS = "-ObjC";
468 | PRODUCT_NAME = beerReact;
469 | };
470 | name = Release;
471 | };
472 | 83CBBA201A601CBA00E9B192 /* Debug */ = {
473 | isa = XCBuildConfiguration;
474 | buildSettings = {
475 | ALWAYS_SEARCH_USER_PATHS = NO;
476 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
477 | CLANG_CXX_LIBRARY = "libc++";
478 | CLANG_ENABLE_MODULES = YES;
479 | CLANG_ENABLE_OBJC_ARC = YES;
480 | CLANG_WARN_BOOL_CONVERSION = YES;
481 | CLANG_WARN_CONSTANT_CONVERSION = YES;
482 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
483 | CLANG_WARN_EMPTY_BODY = YES;
484 | CLANG_WARN_ENUM_CONVERSION = YES;
485 | CLANG_WARN_INT_CONVERSION = YES;
486 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
487 | CLANG_WARN_UNREACHABLE_CODE = YES;
488 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
489 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
490 | COPY_PHASE_STRIP = NO;
491 | ENABLE_STRICT_OBJC_MSGSEND = YES;
492 | GCC_C_LANGUAGE_STANDARD = gnu99;
493 | GCC_DYNAMIC_NO_PIC = NO;
494 | GCC_OPTIMIZATION_LEVEL = 0;
495 | GCC_PREPROCESSOR_DEFINITIONS = (
496 | "DEBUG=1",
497 | "$(inherited)",
498 | );
499 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
500 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
501 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
502 | GCC_WARN_UNDECLARED_SELECTOR = YES;
503 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
504 | GCC_WARN_UNUSED_FUNCTION = YES;
505 | GCC_WARN_UNUSED_VARIABLE = YES;
506 | HEADER_SEARCH_PATHS = (
507 | "$(inherited)",
508 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
509 | "$(SRCROOT)/node_modules/react-native/React/**",
510 | );
511 | IPHONEOS_DEPLOYMENT_TARGET = 7.0;
512 | MTL_ENABLE_DEBUG_INFO = YES;
513 | ONLY_ACTIVE_ARCH = YES;
514 | SDKROOT = iphoneos;
515 | };
516 | name = Debug;
517 | };
518 | 83CBBA211A601CBA00E9B192 /* Release */ = {
519 | isa = XCBuildConfiguration;
520 | buildSettings = {
521 | ALWAYS_SEARCH_USER_PATHS = NO;
522 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
523 | CLANG_CXX_LIBRARY = "libc++";
524 | CLANG_ENABLE_MODULES = YES;
525 | CLANG_ENABLE_OBJC_ARC = YES;
526 | CLANG_WARN_BOOL_CONVERSION = YES;
527 | CLANG_WARN_CONSTANT_CONVERSION = YES;
528 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
529 | CLANG_WARN_EMPTY_BODY = YES;
530 | CLANG_WARN_ENUM_CONVERSION = YES;
531 | CLANG_WARN_INT_CONVERSION = YES;
532 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
533 | CLANG_WARN_UNREACHABLE_CODE = YES;
534 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
535 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
536 | COPY_PHASE_STRIP = YES;
537 | ENABLE_NS_ASSERTIONS = NO;
538 | ENABLE_STRICT_OBJC_MSGSEND = YES;
539 | GCC_C_LANGUAGE_STANDARD = gnu99;
540 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
541 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
542 | GCC_WARN_UNDECLARED_SELECTOR = YES;
543 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
544 | GCC_WARN_UNUSED_FUNCTION = YES;
545 | GCC_WARN_UNUSED_VARIABLE = YES;
546 | HEADER_SEARCH_PATHS = (
547 | "$(inherited)",
548 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
549 | "$(SRCROOT)/node_modules/react-native/React/**",
550 | );
551 | IPHONEOS_DEPLOYMENT_TARGET = 7.0;
552 | MTL_ENABLE_DEBUG_INFO = NO;
553 | SDKROOT = iphoneos;
554 | VALIDATE_PRODUCT = YES;
555 | };
556 | name = Release;
557 | };
558 | /* End XCBuildConfiguration section */
559 |
560 | /* Begin XCConfigurationList section */
561 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "beerReact" */ = {
562 | isa = XCConfigurationList;
563 | buildConfigurations = (
564 | 13B07F941A680F5B00A75B9A /* Debug */,
565 | 13B07F951A680F5B00A75B9A /* Release */,
566 | );
567 | defaultConfigurationIsVisible = 0;
568 | defaultConfigurationName = Release;
569 | };
570 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "beerReact" */ = {
571 | isa = XCConfigurationList;
572 | buildConfigurations = (
573 | 83CBBA201A601CBA00E9B192 /* Debug */,
574 | 83CBBA211A601CBA00E9B192 /* Release */,
575 | );
576 | defaultConfigurationIsVisible = 0;
577 | defaultConfigurationName = Release;
578 | };
579 | /* End XCConfigurationList section */
580 | };
581 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
582 | }
583 |
--------------------------------------------------------------------------------
/beerReact.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/beerReact.xcodeproj/xcshareddata/xcschemes/beerReact.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
51 |
53 |
59 |
60 |
61 |
62 |
63 |
64 |
70 |
72 |
78 |
79 |
80 |
81 |
83 |
84 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/iOS/AppDelegate.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2015-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree. An additional grant
7 | * of patent rights can be found in the PATENTS file in the same directory.
8 | */
9 |
10 | #import
11 |
12 | @interface AppDelegate : UIResponder
13 |
14 | @property (nonatomic, strong) UIWindow *window;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/iOS/AppDelegate.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2015-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree. An additional grant
7 | * of patent rights can be found in the PATENTS file in the same directory.
8 | */
9 |
10 | #import "AppDelegate.h"
11 |
12 | #import "RCTRootView.h"
13 |
14 | @implementation AppDelegate
15 |
16 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
17 | {
18 | NSURL *jsCodeLocation;
19 |
20 | // Loading JavaScript code - uncomment the one you want.
21 |
22 | // OPTION 1
23 | // Load from development server. Start the server from the repository root:
24 | //
25 | // $ npm start
26 | //
27 | // To run on device, change `localhost` to the IP address of your computer, and make sure your computer and
28 | // iOS device are on the same Wi-Fi network.
29 | jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/BeerApp.bundle"];
30 |
31 | // OPTION 2
32 | // Load from pre-bundled file on disk. To re-generate the static bundle, run
33 | //
34 | // $ curl http://localhost:8081/index.ios.bundle -o main.jsbundle
35 | //
36 | // and uncomment the next following line
37 | //jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
38 |
39 | RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
40 | moduleName:@"BeerApp"
41 | launchOptions:launchOptions];
42 |
43 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
44 | UIViewController *rootViewController = [[UIViewController alloc] init];
45 | rootViewController.view = rootView;
46 | self.window.rootViewController = rootViewController;
47 | [self.window makeKeyAndVisible];
48 | return YES;
49 | }
50 |
51 | @end
52 |
--------------------------------------------------------------------------------
/iOS/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
21 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/iOS/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/iOS/Images.xcassets/circle.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "scale" : "2x",
10 | "filename" : "circle@2x.png"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/iOS/Images.xcassets/circle.imageset/circle@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/muratsu/react-native-beer/5b882a7ba31561cc4c211a65adb94aefdc0fe55a/iOS/Images.xcassets/circle.imageset/circle@2x.png
--------------------------------------------------------------------------------
/iOS/Images.xcassets/generic.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "scale" : "2x",
10 | "filename" : "generic@2x.png"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/iOS/Images.xcassets/generic.imageset/generic@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/muratsu/react-native-beer/5b882a7ba31561cc4c211a65adb94aefdc0fe55a/iOS/Images.xcassets/generic.imageset/generic@2x.png
--------------------------------------------------------------------------------
/iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 | UIViewControllerBasedStatusBarAppearance
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/iOS/main.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2015-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree. An additional grant
7 | * of patent rights can be found in the PATENTS file in the same directory.
8 | */
9 |
10 | #import
11 |
12 | #import "AppDelegate.h"
13 |
14 | int main(int argc, char * argv[]) {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "beerReact",
3 | "version": "0.0.1",
4 | "private": true,
5 | "scripts": {
6 | "start": "node_modules/react-native/packager/packager.sh"
7 | },
8 | "dependencies": {
9 | "react-native": "^0.3.0"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------