- implementing immutable.js

This commit is contained in:
2019-07-17 03:21:23 -04:00
parent 8ecf036cc4
commit 434a1ded24
39 changed files with 1123 additions and 187 deletions

View File

@@ -164,6 +164,7 @@ android {
}
dependencies {
implementation project(':react-native-vector-icons')
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.facebook.react:react-native:+" // From node_modules

View File

@@ -4,6 +4,7 @@ import android.app.Application;
import com.facebook.react.PackageList;
import com.facebook.react.ReactApplication;
import com.oblador.vectoricons.VectorIconsPackage;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.soloader.SoLoader;

View File

@@ -1,3 +1,5 @@
rootProject.name = 'Eventment'
include ':react-native-vector-icons'
project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android')
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
include ':app'

View File

@@ -7,46 +7,10 @@
*/
import React, {Fragment} from 'react';
import {
SafeAreaView,
StyleSheet,
ScrollView,
View,
Text,
StatusBar,
} from 'react-native';
import { createAppContainer } from 'react-navigation';
import { Tabs } from './router.js';
const App = () => {
return <Tabs />;
};
const styles = StyleSheet.create({
scrollView: {
backgroundColor: Colors.lighter,
},
body: {
backgroundColor: Colors.white,
},
sectionContainer: {
marginTop: 32,
paddingHorizontal: 24,
},
sectionTitle: {
fontSize: 24,
fontWeight: '600',
color: Colors.black,
},
sectionDescription: {
marginTop: 8,
fontSize: 18,
fontWeight: '400',
color: Colors.dark,
},
highlight: {
fontWeight: '700',
},
});
const App = createAppContainer(Tabs);
export default App;

View File

@@ -1,29 +1,82 @@
import { List } from 'immutable';
import { getEndpointUrl } from '../api/index.js';
import Auction from '../domain/Auction.js';
import Event from '../domain/Event.js';
import Item from '../domain/Item.js';
import {
AUCTIONS_UPDATED,
BLOCK_UI,
EVENTS_LOADED,
GET_EVENTS,
GET_ITEMS,
ITEMS_LOADED,
UNBLOCK_UI,
} from '../constants/actionTypes.js';
import { API_ENDPOINTS } from '../constants/constants.js';
export const getEvents = () => (dispatch) => {
return fetch(getEndpointUrl[API_ENDPOINTS.GET_EVENTS])
dispatch(blockUI());
fetch(getEndpointUr(API_ENDPOINTS.GET_EVENTS))
.then(response => response.json())
.then(payload => {
dispatch({ type: EVENTS_LOADED, payload });
.then((payload) => {
const events = List(payload).map((i) => Event.fromJS(i));
dispatch({ type: EVENTS_LOADED, payload: events });
dispatch(unblockUI);
});
};
export const getItems = () => (dispatch, getState) => {
const { activeEvent } = getState();
let apiUrl = getEndpointUrl[API_ENDPOINTS.GET_ITEMS];
apiUrl = apiUrl.replace(/:event_id/, activeEvent);
const state = getState();
const activeEvent = state.get('activeEvent');
let apiUrl = getEndpointUrl(API_ENDPOINTS.GET_ITEMS);
apiUrl = apiUrl.replace(/:event_id$/, '');
if (activeEvent) {
apiUrl = `${apiUrl}${activeEvent}`;
}
dispatch(blockUI());
fetch(apiUrl)
.then(response => response.json())
.then(payload => {
const items = List(payload).map(i => Item.fromJS(i));
dispatch({ type: ITEMS_LOADED, payload: items });
dispatch(unblockUI());
})
.catch(err => console.error('[actions::getItems]', err));
};
export const getStatus = () => (dispatch, getState) => {
const state = getState();
const activeEvent = state.get('activeEvent');
let apiUrl = getEndpointUrl(API_ENDPOINTS.GET_STATUS);
apiUrl = apiUrl.replace(/:event_id$/, '');
if (activeEvent) {
apiUrl = `${apiUrl}${activeEvent}`;
}
dispatch(blockUI());
return fetch(apiUrl)
.then(response => response.json())
.then(payload => {
dispatch({ type: ITEMS_LOADED, payload });
});
const auctions = List(payload).map(i => Auction.fromJS(i));
dispatch(unblockUI());
dispatch({ type: AUCTIONS_UPDATED, payload: auctions });
})
.catch(err => console.error('[actions::getStatus]', err));
};
export const blockUI = () => ({
type: BLOCK_UI,
});
export const unblockUI = () => ({
type: UNBLOCK_UI,
});

View File

@@ -3,9 +3,11 @@ const apiUrl = 'http://localhost:3001';
const endpoints = {
// Events and Items
GET_EVENTS: '/events',
GET_ITEMS: '/items?eventId=:event_id',
// GET_ITEMS: '/items?eventId=:event_id',
GET_ITEMS: '/items',
// Auction Interactions
// GET_STATUS: '/auction/:event_id',
GET_STATUS: '/auction',
PLACE_BID: '/bids/:item_id',
PURCHASE_ITEM: '/sales',
@@ -30,8 +32,8 @@ const cacheBuster = () => {
export const getEndpointUrl = (endpoint) => {
if (!endpoints[endpoint]) {
return throw new Error('Invalid API endpoint specified');
throw new Error('Invalid API endpoint specified');
}
return `${apiUrl}${endpoints[endpoint]}${cacheBuster()}`;
return `${apiUrl}${endpoints[endpoint]}`; //`${cacheBuster()}`;
};

View File

@@ -17,8 +17,15 @@ const AuctionPriceAndBidCount = ({ bidCount, currentPrice }) => {
};
AuctionPriceAndBidCount.propTypes = {
itemId: PropTypes.string.isRequired,
bidCount: PropTypes.number.isRequired,
currentPrice: PropTypes.number.isRequired,
};
const styles = StyleSheet.create({
currentPriceAndBidCount: {
color: '#000',
},
});
export default AuctionPriceAndBidCount;

View File

@@ -3,10 +3,10 @@ import PropTypes from 'prop-types';
import {
StyleSheet,
View,
Text,
} from 'react-native';
const BidStatus = ({ bidCount, currentPrice, isBidding, isWinning }) => {
const BidStatus = ({ isBidding, isWinning }) => {
if (!isBidding) {
return null;
}
@@ -17,16 +17,16 @@ const BidStatus = ({ bidCount, currentPrice, isBidding, isWinning }) => {
return (
<Text style={statusBarStyle} numberOfLines={1}>
{`${currentPrice} (${bidCount} bids)`}
{isWinning && `Oh no! You have been outbid!`}
{!isWinning && isBidding && `You have the winning bid! (for now...)`}
</Text>
);
};
BidStatus.propTypes = {
bidCount: PropTypes.number.isRequired,
currentPrice: PropTypes.number.isRequired,
isBidding: PropTypes.bool.isRequired,
isWinning: PropTypes.bool.isRequired,
itemId: PropTypes.string.isRequired,
};
const styles = StyleSheet.create({

View File

@@ -0,0 +1,42 @@
import React from 'react';
import PropTypes from 'prop-types';
import {
StyleSheet,
Text,
View,
} from 'react-native';
const FilterBar = ({ changeFilterer, changeViewMode, filterMode, viewMode }) => (
<View style={styles.filterBar}>
<Text style={styles.filter}>Filter</Text>
<Text style={styles.view}>View</Text>
</View>
);
FilterBar.propTypes = {
changeFilterer: PropTypes.func.isRequired,
changeViewMode: PropTypes.func.isRequired,
filterMode: PropTypes.string,
viewMode: PropTypes.string,
};
FilterBar.defaultProps = {
filterMode: null,
viewMode: null,
};
const styles = StyleSheet.create({
filterBar: {
backgroundColor: '#0F0',
flexDirection: 'row',
},
filter: {
flex: 2,
},
view: {
flex: 2,
},
});
export default FilterBar;

View File

@@ -1,4 +1,6 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import {
StyleSheet,
TouchableOpacity,
@@ -7,6 +9,8 @@ import {
View
} from 'react-native';
import GallerySwiper from 'react-native-gallery-swiper';
import AuctionPriceAndBidCount from '../../containers/Auction/AuctionPriceAndBidCount.js';
import BidStatus from '../../containers/Auction/BidStatus.js';
@@ -25,21 +29,34 @@ export default class ItemRow extends Component {
url: PropTypes.string,
}),
),
start: PropTytpes.string.isRequired,
startPrice: PropTypes.number,
start: PropTypes.string.isRequired,
startingPrice: PropTypes.number.isRequired,
subtitle: PropTypes.string,
title: PropTypes.string.isRequired,
type: PropTypes.string.isRequired,
};
}
static get defaultProps() {
return {
description: null,
donor: null,
images: null,
subtitle: null,
};
}
constructor(props) {
super(props);
}
_getBidTime = () => {
const { end, start } = this.props;
return getAuctionTime({ end, start });
}
_viewItemDetail = () => {
const { id } = this.props.details;
const { _id: id } = this.props.details;
this.props.navigation.navigate('Item', { id });
}
@@ -48,9 +65,10 @@ export default class ItemRow extends Component {
description,
donor,
end,
id,
images,
start,
startPrice,
startingPrice,
subtitle,
title,
type,
@@ -59,13 +77,18 @@ export default class ItemRow extends Component {
return(
<TouchableOpacity onPress={this._viewItemDetail}>
<View style={styles.rowContainer}>
<Image
source={{uri: images[0].url}}
style={styles.image}
resizeMode="contain"
{images !== null && images.length > 0 && (
<GallerySwiper
enableScale={false}
images={images}
initialNumToRender={2}
resizeMode="cover"
sensitiveScroll={false}
style={{height: 280}}
/>
)}
<View style={styles.rowText}>
{type === ITEM_TYPES.AUCTION && <BidStatus id={item.id} />}
{type === ITEM_TYPES.AUCTION && <BidStatus itemId={id} />}
<Text style={styles.title} numberOfLines={2} ellipsizeMode={'tail'}>
{title}
</Text>
@@ -78,10 +101,10 @@ export default class ItemRow extends Component {
</Text>
)}
{type === ITEM_TYPES.AUCTION ? (
<AuctionPriceAndBidCount id={item.id} />
<AuctionPriceAndBidCount itemId={id} />
) : (
<Text style={styles.price} numberOfLines={1} ellipsizeMode={'tail'}>
{formatPrice(startPrice)}
{formatPrice(startingPrice)}
</Text>
)}
<Text style={styles.timeline} numberOfLines={1}>
@@ -126,14 +149,17 @@ const styles = StyleSheet.create({
rowContainer: {
backgroundColor: '#FFF',
borderRadius: 4,
flexDirection: 'row',
height: 100,
flex: 1,
flexDirection: 'column',
marginRight: 10,
marginLeft: 10,
marginTop: 10,
padding: 10,
shadowColor: '#CCC',
shadowOffset:{ width: 1, height: 1, },
shadowOffset: {
width: 1,
height: 1
},
shadowOpacity: 1.0,
shadowRadius: 1,
},

View File

@@ -7,6 +7,7 @@ export const ITEMS_LOADED = 'ITEMS_LOADED';
export const ITEMS_LOAD_FAILED = 'ITEMS_LOAD_FAILED';
export const UPDATE_AUCTIONS = 'UPDATE_AUCTIONS';
export const AUCTIONS_UPDATED = 'AUCTIONS_UPDATED';
export const SET_TICKET_PURCHASE_FLOW = 'SET_TICKET_PURCHASE_FLOW';
@@ -34,6 +35,7 @@ export const LINK_FACEBOOK_SUCCESS = 'LINK_FACEBOOK_SUCCESS';
export const LINK_GOOGLE_FAILURE = 'LINK_GOOGLE_FAILURE';
export const LINK_GOOGLE_SUCCESS = 'LINK_GOOGLE_SUCCESS';
export const SET_PROFILE = 'SET_PROFILE';
export const UPDATE_PROFILE = 'UPDATE_PROFILE';
export const SET_NOM_DE_BID = 'SET_NOM_DE_BID';
@@ -41,3 +43,9 @@ export const SET_PASSWORD = 'SET_PASSWORD';
export const ADD_PAYMENT_DATA = 'ADD_PAYMENT_DATA';
export const DO_CHECKOUT = 'DO_CHECKOUT';
export const BLOCK_UI = 'BLOCK_UI';
export const UNBLOCK_UI = 'UNBLOCK_UI';
export const SET_ACTIVE_EVENT = 'SET_ACTIVE_EVENT';
export const UNSET_ACTIVE_EVENT = 'UNSET_ACTIVE_EVENT';

18
app/containers/Auction.js Normal file
View File

@@ -0,0 +1,18 @@
import { connect } from 'react-redux';
import { getItems, getStatus } from '../actions/index.js';
import { getAuctionItemsAsList } from '../selectors/items.js';
import Auction from '../screens/Auction.js';
const matchStateToProps = (state) => ({
items: getAuctionItemsAsList(state),
});
const mapDispatchToProps = (dispatch) => ({
fetchItems: () => dispatch(getItems(dispatch)),
fetchStatus: () => dispatch(getStatus(dispatch)),
});
export default connect(matchStateToProps, mapDispatchToProps)(Auction);

View File

@@ -1,13 +1,15 @@
import { connect } from 'react-redux';
import { getItemBidCount, getItemPrice } from '../../selectors/auctions.js';
import AuctionPriceAndBidCount from '../../components/Auction/AuctionPriceAndBidCount.js';
function mapStateToProps(state, ownProps) {
const { bidCount, currentPrice } = getAuctionItemStatus(state, ownProps.id);
const { itemId } = ownProps;
return {
bidCount,
currentPrice,
bidCount: getItemBidCount(state, itemId),
currentPrice: getItemPrice(state, itemId),
};
}

View File

@@ -1,20 +1,15 @@
import { connect } from 'react-redux';
import { isBiddingItem, isWinningItem } from '../../selectors/auctions.js';
import AuctionPriceAndBidCount from '../../components/Auction/BidStatus.js';
function mapStateToProps(state, ownProps) {
const {
bidCount,
currentPrice,
isBidding,
isWinning,
} = getAuctionItemStatus(state, ownProps.id);
const { itemId } = ownProps;
return {
bidCount,
currentPrice,
isBidding,
isWinning,
isBidding: isBiddingItem(state, itemId),
isWinning: isWinningItem(state, itemId),
};
}

16
app/domain/Auction.js Normal file
View File

@@ -0,0 +1,16 @@
import { Record } from 'immutable';
export default class Auction extends Record({
id: null,
bidCount: 0,
isBidding: false,
isWinning: false,
itemPrice: 0,
}) {}
Auction.fromJS = (data = {}) => {
return new Auction({
id: data._id,
...data,
});
};

39
app/domain/Event.js Normal file
View File

@@ -0,0 +1,39 @@
import { List, Record } from 'immutable';
import Post from './Post.js';
import TicketClass from './TicketClass.js';
export default class Event extends Record({
id: null,
isTicketed: false,
requireLoginToSeeAuction: false,
description: null,
endTime: null,
images: new List(),
posts: new List(),
showFrom: null,
showUntil: null,
startTime: null,
tagline: null,
title: null,
url: null,
ticketClasses: new List(),
}) {
get isSoldOut() {
if (this.isTicketed) {
return false;
}
return this.ticketClasses.find(t => t.available > 0) || false;
}
}
Event.fromJS = (data = {}) => {
return new Event({
id: data._id,
...data,
images: new List(data.images),
posts: new List(data.posts.map(p => Post.fromJS(p))),
ticketClasses: new List(data.ticketClasses.map(t => TicketClass.fromJS(t))),
});
};

43
app/domain/Item.js Normal file
View File

@@ -0,0 +1,43 @@
import { List, Record } from 'immutable';
export default class Item extends Record({
bidCount: 0,
bidIncrement: 10,
catalogNumber: null,
currentPrice: 0,
description: null,
donor: null,
end: null,
estimatedValue: null,
eventId: null,
hideAfterEnd: false,
hideBeforeStart: false,
id: null,
images: new List(),
isShippable: false,
notifyOnAvailable: false,
quantityAvailable: 1,
soldCount: 0,
start: null,
startingPrice: null,
subtitle: null,
title: null,
type: null,
shippingCost: 0,
}) {
get isSoldOut() {
return this.quantityAvailable > this.soldCount;
}
get totalWithShipping() {
return this.currentPrice + this.shippingCost;
}
}
Item.fromJS = (data = {}) => {
return new Item({
id: data._id,
...data,
images: List(data.images),
});
};

20
app/domain/Post.js Normal file
View File

@@ -0,0 +1,20 @@
import { Record } from 'immutable';
export default class Post extends Record({
author: null,
content: null,
id: null,
isPublic: false,
scheduledPost: false,
sendNotification: false,
timestamp: null,
title: null,
}) {};
Post.fromJS = (data = {}) => {
return new TicketClass({
id: data._id,
...data,
});
};

39
app/domain/Profile.js Normal file
View File

@@ -0,0 +1,39 @@
import { List, Record } from 'immutable';
export default class Profile extends Record({
addresses: new List(),
avatar: null,
email: null,
firstName: null,
generatedNomDeBid: false,
hasLinkedApple: false,
hasLinkedFacebook: false,
hasLinkedGoogle: false,
hasLocalAccount: false,
id: null,
isAllowedToBid: false,
isOrganizationEmployee: false,
isVerified: false,
lastName: null,
nomDeBid: null,
organizationIdentifier: null,
paymentToken: null,
phones: new List(),
}) {
get canBid() {
return this.isAllowedToBid && this.paymentToken !== null;
}
get fullName() {
return `${this.firstName} ${this.lastName}`;
}
}
Profile.fromJS = (data = {}) => {
return new Profile({
id: data._id,
...data,
addresses: new List(data.addresses),
phones: new List(data.phones),
});
};

27
app/domain/TicketClass.js Normal file
View File

@@ -0,0 +1,27 @@
import { List, Record } from 'immutable';
export default class TicketClass extends Record({
available: 0,
capacity: 0,
endSale: null,
id: null,
itemId: null,
name: null,
price: 0,
startSale: null,
}) {
get isAlmostGone() {
return this.available < (this.capacity * 0.20);
}
get isSoldOut() {
return this.available === 0;
}
}
TicketClass.fromJS = (data = {}) => {
return new TicketClass({
id: data._id,
...data,
});
};

View File

@@ -0,0 +1,12 @@
import { SET_ACTIVE_EVENT, UNSET_ACTIVE_EVENT } from '../constants/actionTypes.js';
export const activeEvent = (state = null, action) => {
switch (action.type) {
case SET_ACTIVE_EVENT:
return action.payload;
case UNSET_ACTIVE_EVENT:
return null;
default:
return state;
}
};

18
app/reducers/auctions.js Normal file
View File

@@ -0,0 +1,18 @@
import { Map } from 'immutable';
import { AUCTIONS_UPDATED, UPDATE_AUCTIONS } from '../constants/actionTypes.js';
export const auctions = (state = new Map(), action) => {
switch (action.type) {
case AUCTIONS_UPDATED:
return state.merge(
action.payload.toMap().mapEntries((entry) => {
const [, item] = entry;
return [`${item.id}`, item];
}),
);
case UPDATE_AUCTIONS:
default:
return state;
}
};

12
app/reducers/blockUI.js Normal file
View File

@@ -0,0 +1,12 @@
import { BLOCK_UI, UNBLOCK_UI } from '../constants/actionTypes.js';
export const blockUI = (state = false, action) => {
switch (action.type) {
case BLOCK_UI:
return true;
case UNBLOCK_UI:
return false;
default:
return state;
}
};

View File

@@ -1,16 +1,17 @@
import { Map } from 'immutable';
import { EVENTS_LOADED, GET_EVENTS } from '../constants/actionTypes.js';
export const events = (state = {}, action) => {
export const events = (state = new Map(), action) => {
switch (action.type) {
case GET_EVENTS:
return Object.assign({}, state, {
isFetching: true,
});
case EVENTS_LOADED:
return Object.assign({}, state, {
events: action.payload,
isFetching: false,
});
return state.merge(
action.payload.toMap().mapEntries((entry) => {
const [, event] = entry;
return [`${event.id}`, event];
}),
);
case GET_EVENTS:
default:
return state;
}

View File

@@ -1,17 +1,15 @@
import { combineReducers } from 'redux';
import { combineReducers } from 'redux-immutable';
import { activeEvent } from './activeEvent.js';
import { auctions } from './auctions.js';
import { blockUI } from './blockUI.js';
import { events } from './events.js';
import { items } from './items.js';
const initialState = {
auction: {},
cart: [],
isFetching: false,
items: [],
profile: {},
};
const rootReducer = combineReducers({
activeEvent,
auctions,
blockUI,
events,
items,
});

View File

@@ -1,16 +1,19 @@
import { ITEMS_LOADED, GET_ITEMS } from '../constants/actionTypes.js';
import { Map } from 'immutable';
export const items = (state = {}, action) => {
import {
GET_ITEMS,
ITEMS_LOADED,
} from '../constants/actionTypes.js';
export const items = (state = new Map(), action) => {
switch (action.type) {
case GET_ITEMS:
return Object.assign({}, state, {
isFetching: true,
});
case ITEMS_LOADED:
return Object.assign({}, state, {
items: action.payload,
isFetching: false,
const mapped = action.payload.toMap().mapEntries((entry) => {
const [, item] = entry;
return [`${item.id}`, item];
});
return state.merge(mapped);
case GET_ITEMS:
default:
return state;
}

17
app/reducers/profile.js Normal file
View File

@@ -0,0 +1,17 @@
import { Map } from 'immutable';
import {
SET_PROFILE,
UPDATE_PROFILE,
} from '../constants/actionTypes.js';
export const profile = (state = new Map(), action) => {
switch (action.type) {
case SET_PROFILE:
return action.payload;
case UPDATE_PROFILE:
return action.payload;
default:
return state;
}
};

View File

@@ -3,7 +3,7 @@ import { Dimensions, Platform } from 'react-native';
import { createBottomTabNavigator, createStackNavigator } from 'react-navigation';
import { Icon } from 'react-native-elements';
import Auction from './screens/Auction.js';
import Auction from './containers/Auction.js';
import Checkout from './screens/Checkout.js';
import Event from './screens/Event.js';
import Events from './screens/Events.js';
@@ -19,28 +19,28 @@ export const Tabs = createBottomTabNavigator({
screen: Event,
navigationOptions: {
tabBarLabel: 'Event',
tabBarIcon: ({ tintColor }) => <Icon name="black-tie" type="fontawesome" size={28} color={tintColor} />,
tabBarIcon: ({ tintColor }) => <Icon name="black-tie" type="font-awesome" size={28} color={tintColor} />,
},
},
'Auction': {
screen: Auction,
navigationOptions: {
tabBarLabel: 'Silent Auction',
tabBarIcon: ({ tintColor }) => <Icon name="gavel" type="fontawesome" size={28} color={tintColor} />,
tabBarIcon: ({ tintColor }) => <Icon name="gavel" type="font-awesome" size={28} color={tintColor} />,
},
},
'Bazaar': {
screen: Marketplace,
navigationOptions: {
tabBarLabel: 'Bazaar',
tabBarIcon: ({ tintColor }) => <Icon name="shopping-store" type="fontisto" size={28} color={tintColor} />,
tabBarIcon: ({ tintColor }) => <Icon name="store" type="fontisto" size={28} color={tintColor} />,
},
},
'Profile': {
screen: Profile,
navigationOptions: {
tabBarLabel: 'Profile',
tabBarIcon: ({ tintColor }) => <Icon name="ios-person-outline" type="ionicon" size={28} color={tintColor} />,
tabBarIcon: ({ tintColor }) => <Icon name="ios-person" type="font-awesome" size={28} color={tintColor} />,
},
},
});

View File

@@ -10,6 +10,7 @@ import {
import { SORT_MODES, VIEW_MODES } from '../constants/constants.js';
import FilterBar from '../components/Auction/FilterBar.js';
import GridItem from '../components/Item/Grid.js';
import ListItem from '../components/Item/List.js';
@@ -17,14 +18,16 @@ export default class Auction extends Component {
static get propTypes() {
return {
changeFilter: PropTypes.func,
items: PropTypes.array.isRequired,
fetchItems: PropTypes.func.isRequired,
fetchStatus: PropTypes.func.isRequired,
items: PropTypes.array,
};
}
static get defaultProps() {
return {
changeFilter: () => { console.log('Change Filter Default Prop', arguments); },
header: null,
items: [],
};
}
@@ -40,6 +43,11 @@ export default class Auction extends Component {
};
}
componentDidMount() {
this.props.fetchStatus();
this.props.fetchItems();
}
changeFilter(filter) {
this.props.changeFilter('auction', filter);
}
@@ -48,18 +56,20 @@ export default class Auction extends Component {
this.setState({ view: mode });
}
_keyExtractor = (item, index) => item.id;
_keyExtractor = (item, index) => `${item._id}_${index}`;
_renderItem = (view) => ({ item }) => {
console.log('_renderItem', item);
if (view === VIEW_MODES.GRID) {
return <GridItem details={item} />;
return <GridItem {...item} />;
}
return <ListItem details={item} />;
return <ListItem {...item} />;
}
render() {
const { items, view } = this.state;
const { items } = this.props;
const { sort, view } = this.state;
return (
<View style={styles.container}>
@@ -67,11 +77,15 @@ export default class Auction extends Component {
changeFilterer={this.changeFilter}
changeViewMode={this.changeViewMode}
/>
{items.size > 0 && (
<FlatList
data={items}
keyExtractor={this._keyExtractor}
renderItem={this.renderItem(view)}
renderItem={this._renderItem(view)}
contentContainerStyle={styles.itemListContentContainer}
style={styles.itemList}
/>
)}
</View>
);
}
@@ -84,9 +98,11 @@ const styles = StyleSheet.create({
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
title: {
fontSize: 20,
textAlign: 'center',
margin: 10,
}
itemList: {
width: '100%',
},
itemListContentContainer: {
alignItems: 'stretch',
justifyContent: 'flex-start',
},
});

View File

@@ -1,4 +1,6 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import {
StyleSheet,
Text,
@@ -6,6 +8,21 @@ import {
} from 'react-native';
export default class Events extends Component {
static get propTypes() {
return {
events: PropTypes.array.isRequired,
fetchEvents: PropTypes.func.isRequired,
};
}
constructor(props) {
super(props);
}
componentDidMount() {
}
render() {
return (
<View style={styles.container}>

13
app/selectors/auctions.js Normal file
View File

@@ -0,0 +1,13 @@
import { createSelector } from 'reselect';
//import { getItemsIdsWithNoBids, getMyBidItemIds, getMyWinningItemIds } from './auctions.js';
const getState = (state) => state;
export const getItemBidCount = (state, itemId) => state.getIn(['auctions', itemId, 'bidCount'], 0);
export const getItemPrice = (state, itemId) => state.getIn(['auctions', itemId, 'currentPrice'], 0);
export const isBiddingItem = (state, itemId) => state.getIn(['auctions', itemId, 'isBidding'], false);
export const isWinningItem = (state, itemId) => state.getIn(['auctions', itemId, 'isWinning'], false);

42
app/selectors/items.js Normal file
View File

@@ -0,0 +1,42 @@
import { createSelector } from 'reselect';
//import { getItemsIdsWithNoBids, getMyBidItemIds, getMyWinningItemIds } from './auctions.js';
const getState = (state) => state;
export const getItem = (state, itemId) => state.getIn(['items', itemId], false);
export const getItems = createSelector(
[getState],
(state) => state.get('items') || new Map(),
);
export const getItemsAsList = createSelector(
[getItems],
(itemsAsMap) => itemsAsMap.toList(),
);
export const getAuctionItems = createSelector(
[getState],
(state) => state.get('items').filter(i => i.type === 'auction') || new Map(),
);
export const getAuctionItemsAsList = createSelector(
[getAuctionItems],
(auctionItemsAsMap) => auctionItemsAsMap.toList(),
);
export const getTicketItems = createSelector(
[getState],
(state) => state.get('items').filter(i => i.type === 'ticket') || new Map(),
);
export const getTicketItemsAsList = createSelector(
[getTicketItems],
(ticketItemsAsMap) => ticketItemsAsMap.toList(),
);
export const getAuctionItemsWithNoBids = createSelector(
[getAuctionItems],
(auctionItemsAsMap) => auctionItemsAsMap.filter(i => i.bidCount),
);

View File

@@ -1,9 +1,14 @@
import { Map } from 'immutable';
import { applyMiddleware, compose, createStore } from 'redux';
import { composeWithDevTools } from 'remote-redux-devtools';
import thunk from 'redux-thunk';
import rootReducer from '../reducers/index.js';
const composeEnhancers = composeWithDevTools({ port: 8000, realtime: true, suppressConnectErrors: false });
export const store = createStore(
rootReducer,
compose(applyMiddleware(thunk)),
Map(),
composeEnhancers(applyMiddleware(thunk)),
);

View File

@@ -12,30 +12,30 @@
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
1D7F90ED22D4672E0006EDF4 /* libRNGestureHandler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D7F90E722D464690006EDF4 /* libRNGestureHandler.a */; };
1DAE268E22D4762C004C6DA5 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DAE268D22D4762C004C6DA5 /* libReact.a */; };
1D0FF8D822DB4FE40025F1BB /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D0FF8D522DB4FCB0025F1BB /* libRNVectorIcons.a */; };
1DBE5D4822D6F91E00F6E1D3 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DBE5D4722D6F91000F6E1D3 /* libc++.tbd */; };
2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
2DCD954D1E0B4F2C00145EB5 /* EventmentTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* EventmentTests.m */; };
3A3269E1B6D6D06F72B241D8 /* libPods-EventmentTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAD62987D2A5499F328ADEE2 /* libPods-EventmentTests.a */; };
424086B4B7AB4FDBAFAD27A2 /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2022E63B77564B27848F25D8 /* SimpleLineIcons.ttf */; };
46E6D73BB7B44EEB81FDA0C8 /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3B1F1508DEB34A2D82A9D161 /* FontAwesome5_Solid.ttf */; };
4DD467F8FBF94D40A51DCD92 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 74C126D4D76B4C999FEFC22B /* MaterialCommunityIcons.ttf */; };
586CF9D2C39C4DC0A46789DD /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9251381650BB49089909910A /* Ionicons.ttf */; };
603E02CDE31345D68CAA1478 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 06DB0AAEC3524CA3B9B50E29 /* Feather.ttf */; };
682F28F289304A12821DF68E /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E0A54F8A8B184AAFA7B8E830 /* FontAwesome5_Brands.ttf */; };
76AAD9E7974A6376D567BA38 /* libPods-Eventment-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 76BDA2713B94C290F5160207 /* libPods-Eventment-tvOSTests.a */; };
87BCA2F7FF774EC1AFA7269D /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3BC30329DB444504966B99EE /* MaterialIcons.ttf */; };
8DF805F5C42A4E1E95C74489 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C0F2FD0EDB3E4909B87E6AE8 /* Foundation.ttf */; };
A6FE30176BED40AA9C54678F /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2B5D73883C3E469289AC135B /* EvilIcons.ttf */; };
AA04415FB2F7466C8B4DBAE5 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 205CDE118CBE44B3BB3200BE /* Entypo.ttf */; };
B136264F709787A4ED944BF9 /* libPods-Eventment.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 95CCBED3A2131D8443B2A7FF /* libPods-Eventment.a */; };
B6448097D15C2F76F3877523 /* libPods-Eventment-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6842142FC8ED4380770BB1DF /* libPods-Eventment-tvOSTests.a */; };
BC88AA5047D2497CA0B624F7 /* Fontisto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 989F5DACBE66407EB79943CF /* Fontisto.ttf */; };
CB252ABBEF174E99B96004C4 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F66208AB65A848BEB4335799 /* Octicons.ttf */; };
CEB2DE8972FC482D2D07BC0A /* libPods-EventmentTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F256D73C36A1F18D3745FDC /* libPods-EventmentTests.a */; };
D70DFACB347A40788ACB38F1 /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C9BF2621C0334B15B136E000 /* FontAwesome5_Regular.ttf */; };
D92F7EC399764DE48E3C0EEE /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B0AD7DC59D14427381008950 /* FontAwesome.ttf */; };
DFE4DD0CB0107AA6C8FDAA61 /* libPods-Eventment.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F5F70445D5E6E006AF93604 /* libPods-Eventment.a */; };
E177D0F8B0D577D291BFE3A8 /* libPods-Eventment-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F8C7A360952455A79EFC8C12 /* libPods-Eventment-tvOS.a */; };
EB9A3171312615B9FC0019A4 /* libPods-Eventment-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A8CE2A63074927A673C4087 /* libPods-Eventment-tvOS.a */; };
ECF71F46F59B4448B8B57C5E /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E894DEEE56C44931A45F69EF /* AntDesign.ttf */; };
F18C203DA63F4F948D5DB6E7 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2B8A826188544A67BF3D91D9 /* Zocial.ttf */; };
/* End PBXBuildFile section */
@@ -48,6 +48,20 @@
remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
remoteInfo = Eventment;
};
1D0FF8D422DB4FCB0025F1BB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 1D0FF8CF22DB4FCB0025F1BB /* RNVectorIcons.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 5DBEB1501B18CEA900B34395;
remoteInfo = RNVectorIcons;
};
1D0FF8D622DB4FCB0025F1BB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 1D0FF8CF22DB4FCB0025F1BB /* RNVectorIcons.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = A39873CE1EA65EE60051E01A;
remoteInfo = "RNVectorIcons-tvOS";
};
1D7F90E622D464690006EDF4 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 1D7F90E122D464690006EDF4 /* RNGestureHandler.xcodeproj */;
@@ -203,24 +217,28 @@
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Eventment/Images.xcassets; sourceTree = "<group>"; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Eventment/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Eventment/main.m; sourceTree = "<group>"; };
1D0FF8CF22DB4FCB0025F1BB /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = "<group>"; };
1D7F90E122D464690006EDF4 /* RNGestureHandler.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNGestureHandler.xcodeproj; path = "../node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj"; sourceTree = "<group>"; };
1DAE268D22D4762C004C6DA5 /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; };
1DAE26C222D47855004C6DA5 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = "<group>"; };
1DBE5D4722D6F91000F6E1D3 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
2022E63B77564B27848F25D8 /* 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>"; };
205CDE118CBE44B3BB3200BE /* 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>"; };
2B5D73883C3E469289AC135B /* 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>"; };
2B8A826188544A67BF3D91D9 /* 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>"; };
2D02E47B1E0B4A5D006451C7 /* Eventment-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Eventment-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2D02E4901E0B4A5D006451C7 /* Eventment-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Eventment-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
2F256D73C36A1F18D3745FDC /* libPods-EventmentTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-EventmentTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
3B1F1508DEB34A2D82A9D161 /* 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>"; };
3BC30329DB444504966B99EE /* 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>"; };
4EAF8EE9684C55A54CB05FC0 /* Pods-Eventment.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Eventment.debug.xcconfig"; path = "Target Support Files/Pods-Eventment/Pods-Eventment.debug.xcconfig"; sourceTree = "<group>"; };
5A40140E6486505E9C4A9D2D /* Pods-EventmentTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EventmentTests.debug.xcconfig"; path = "Target Support Files/Pods-EventmentTests/Pods-EventmentTests.debug.xcconfig"; sourceTree = "<group>"; };
6842142FC8ED4380770BB1DF /* libPods-Eventment-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Eventment-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
74C126D4D76B4C999FEFC22B /* 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>"; };
76BDA2713B94C290F5160207 /* libPods-Eventment-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Eventment-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
8F5F70445D5E6E006AF93604 /* libPods-Eventment.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Eventment.a"; sourceTree = BUILT_PRODUCTS_DIR; };
9251381650BB49089909910A /* 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>"; };
95CCBED3A2131D8443B2A7FF /* libPods-Eventment.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Eventment.a"; sourceTree = BUILT_PRODUCTS_DIR; };
989F5DACBE66407EB79943CF /* Fontisto.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Fontisto.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf"; sourceTree = "<group>"; };
9A8CE2A63074927A673C4087 /* libPods-Eventment-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Eventment-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
A2020AC52A44798F168742B5 /* Pods-Eventment-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Eventment-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-Eventment-tvOS/Pods-Eventment-tvOS.debug.xcconfig"; sourceTree = "<group>"; };
B0AD7DC59D14427381008950 /* 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>"; };
B54614FC2A59A9A8E69686BF /* Pods-Eventment-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Eventment-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-Eventment-tvOSTests/Pods-Eventment-tvOSTests.debug.xcconfig"; sourceTree = "<group>"; };
@@ -228,7 +246,6 @@
C16C897DC77F76058902BC56 /* Pods-Eventment-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Eventment-tvOS.release.xcconfig"; path = "Target Support Files/Pods-Eventment-tvOS/Pods-Eventment-tvOS.release.xcconfig"; sourceTree = "<group>"; };
C1FB632CE816F883355AD2FF /* Pods-Eventment-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Eventment-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-Eventment-tvOSTests/Pods-Eventment-tvOSTests.release.xcconfig"; sourceTree = "<group>"; };
C9BF2621C0334B15B136E000 /* 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>"; };
DAD62987D2A5499F328ADEE2 /* libPods-EventmentTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-EventmentTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
E0A54F8A8B184AAFA7B8E830 /* 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>"; };
E77FDFD5E804505749111821 /* Pods-EventmentTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EventmentTests.release.xcconfig"; path = "Target Support Files/Pods-EventmentTests/Pods-EventmentTests.release.xcconfig"; sourceTree = "<group>"; };
E894DEEE56C44931A45F69EF /* 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>"; };
@@ -236,7 +253,6 @@
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; };
EE9B3A7C9E845F18B5A9C843 /* Pods-Eventment.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Eventment.release.xcconfig"; path = "Target Support Files/Pods-Eventment/Pods-Eventment.release.xcconfig"; sourceTree = "<group>"; };
F66208AB65A848BEB4335799 /* 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>"; };
F8C7A360952455A79EFC8C12 /* libPods-Eventment-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Eventment-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -244,7 +260,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
3A3269E1B6D6D06F72B241D8 /* libPods-EventmentTests.a in Frameworks */,
CEB2DE8972FC482D2D07BC0A /* libPods-EventmentTests.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -252,9 +268,9 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
1DAE268E22D4762C004C6DA5 /* libReact.a in Frameworks */,
1D7F90ED22D4672E0006EDF4 /* libRNGestureHandler.a in Frameworks */,
DFE4DD0CB0107AA6C8FDAA61 /* libPods-Eventment.a in Frameworks */,
1DBE5D4822D6F91E00F6E1D3 /* libc++.tbd in Frameworks */,
1D0FF8D822DB4FE40025F1BB /* libRNVectorIcons.a in Frameworks */,
B136264F709787A4ED944BF9 /* libPods-Eventment.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -262,7 +278,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
E177D0F8B0D577D291BFE3A8 /* libPods-Eventment-tvOS.a in Frameworks */,
EB9A3171312615B9FC0019A4 /* libPods-Eventment-tvOS.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -270,7 +286,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
76AAD9E7974A6376D567BA38 /* libPods-Eventment-tvOSTests.a in Frameworks */,
B6448097D15C2F76F3877523 /* libPods-Eventment-tvOSTests.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -308,6 +324,15 @@
name = Eventment;
sourceTree = "<group>";
};
1D0FF8D022DB4FCB0025F1BB /* Products */ = {
isa = PBXGroup;
children = (
1D0FF8D522DB4FCB0025F1BB /* libRNVectorIcons.a */,
1D0FF8D722DB4FCB0025F1BB /* libRNVectorIcons-tvOS.a */,
);
name = Products;
sourceTree = "<group>";
};
1D7F90E222D464690006EDF4 /* Products */ = {
isa = PBXGroup;
children = (
@@ -343,13 +368,14 @@
2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
isa = PBXGroup;
children = (
1DBE5D4722D6F91000F6E1D3 /* libc++.tbd */,
1DAE268D22D4762C004C6DA5 /* libReact.a */,
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
8F5F70445D5E6E006AF93604 /* libPods-Eventment.a */,
F8C7A360952455A79EFC8C12 /* libPods-Eventment-tvOS.a */,
76BDA2713B94C290F5160207 /* libPods-Eventment-tvOSTests.a */,
DAD62987D2A5499F328ADEE2 /* libPods-EventmentTests.a */,
95CCBED3A2131D8443B2A7FF /* libPods-Eventment.a */,
9A8CE2A63074927A673C4087 /* libPods-Eventment-tvOS.a */,
6842142FC8ED4380770BB1DF /* libPods-Eventment-tvOSTests.a */,
2F256D73C36A1F18D3745FDC /* libPods-EventmentTests.a */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -357,6 +383,7 @@
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
isa = PBXGroup;
children = (
1D0FF8CF22DB4FCB0025F1BB /* RNVectorIcons.xcodeproj */,
1DAE26C222D47855004C6DA5 /* React.xcodeproj */,
1D7F90E122D464690006EDF4 /* RNGestureHandler.xcodeproj */,
);
@@ -460,7 +487,7 @@
13B07F8C1A680F5B00A75B9A /* Frameworks */,
13B07F8E1A680F5B00A75B9A /* Resources */,
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
E2780F98BD5B6F4FF7BBD851 /* [CP] Copy Pods Resources */,
93B31A921E2ADA01E0063E8B /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -555,6 +582,10 @@
ProductGroup = 1D7F90E222D464690006EDF4 /* Products */;
ProjectRef = 1D7F90E122D464690006EDF4 /* RNGestureHandler.xcodeproj */;
},
{
ProductGroup = 1D0FF8D022DB4FCB0025F1BB /* Products */;
ProjectRef = 1D0FF8CF22DB4FCB0025F1BB /* RNVectorIcons.xcodeproj */;
},
);
projectRoot = "";
targets = (
@@ -567,6 +598,20 @@
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
1D0FF8D522DB4FCB0025F1BB /* libRNVectorIcons.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNVectorIcons.a;
remoteRef = 1D0FF8D422DB4FCB0025F1BB /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
1D0FF8D722DB4FCB0025F1BB /* libRNVectorIcons-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libRNVectorIcons-tvOS.a";
remoteRef = 1D0FF8D622DB4FCB0025F1BB /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
1D7F90E722D464690006EDF4 /* libRNGestureHandler.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
@@ -758,7 +803,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
};
2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = {
isa = PBXShellScriptBuildPhase;
@@ -796,6 +841,22 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
93B31A921E2ADA01E0063E8B /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Eventment/Pods-Eventment-resources.sh",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Eventment/Pods-Eventment-resources.sh\"\n";
showEnvVarsInLog = 0;
};
960D8C95C68024594BCD09D0 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -840,22 +901,6 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
E2780F98BD5B6F4FF7BBD851 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Eventment/Pods-Eventment-resources.sh",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Eventment/Pods-Eventment-resources.sh\"\n";
showEnvVarsInLog = 0;
};
F99AE85D220DBCB12BF37E80 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;

View File

@@ -38,7 +38,7 @@
</dict>
</dict>
<key>NSLocationWhenInUseUsageDescription</key>
<string/>
<string></string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>

View File

@@ -2,7 +2,34 @@ platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
target 'Eventment' do
# Pods for Eventment
# Pods for HelloWorld
pod 'React', :path => '../node_modules/react-native/'
pod 'React-Core', :path => '../node_modules/react-native/React'
pod 'React-DevSupport', :path => '../node_modules/react-native/React'
pod 'React-fishhook', :path => '../node_modules/react-native/Libraries/fishhook'
pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
pod 'React-RCTWebSocket', :path => '../node_modules/react-native/Libraries/WebSocket'
pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'
target 'EventmentTests' do
inherit! :search_paths
# Pods for testing
@@ -12,7 +39,7 @@ target 'Eventment' do
end
target 'Eventment-tvOS' do
# Pods for Eventment-tvOS
# Pods for HelloWorld-tvOS
target 'Eventment-tvOSTests' do
inherit! :search_paths

View File

@@ -1,37 +1,205 @@
PODS:
- React (0.11.0):
- React/Core (= 0.11.0)
- React/Core (0.11.0)
- boost-for-react-native (1.63.0)
- DoubleConversion (1.1.6)
- Folly (2018.10.22.00):
- boost-for-react-native
- DoubleConversion
- Folly/Default (= 2018.10.22.00)
- glog
- Folly/Default (2018.10.22.00):
- boost-for-react-native
- DoubleConversion
- glog
- glog (0.3.5)
- React (0.60.0):
- React-Core (= 0.60.0)
- React-DevSupport (= 0.60.0)
- React-RCTActionSheet (= 0.60.0)
- React-RCTAnimation (= 0.60.0)
- React-RCTBlob (= 0.60.0)
- React-RCTImage (= 0.60.0)
- React-RCTLinking (= 0.60.0)
- React-RCTNetwork (= 0.60.0)
- React-RCTSettings (= 0.60.0)
- React-RCTText (= 0.60.0)
- React-RCTVibration (= 0.60.0)
- React-RCTWebSocket (= 0.60.0)
- React-Core (0.60.0):
- Folly (= 2018.10.22.00)
- React-cxxreact (= 0.60.0)
- React-jsiexecutor (= 0.60.0)
- yoga (= 0.60.0.React)
- React-cxxreact (0.60.0):
- boost-for-react-native (= 1.63.0)
- DoubleConversion
- Folly (= 2018.10.22.00)
- glog
- React-jsinspector (= 0.60.0)
- React-DevSupport (0.60.0):
- React-Core (= 0.60.0)
- React-RCTWebSocket (= 0.60.0)
- React-fishhook (0.60.0)
- React-jsi (0.60.0):
- boost-for-react-native (= 1.63.0)
- DoubleConversion
- Folly (= 2018.10.22.00)
- glog
- React-jsi/Default (= 0.60.0)
- React-jsi/Default (0.60.0):
- boost-for-react-native (= 1.63.0)
- DoubleConversion
- Folly (= 2018.10.22.00)
- glog
- React-jsiexecutor (0.60.0):
- DoubleConversion
- Folly (= 2018.10.22.00)
- glog
- React-cxxreact (= 0.60.0)
- React-jsi (= 0.60.0)
- React-jsinspector (0.60.0)
- React-RCTActionSheet (0.60.0):
- React-Core (= 0.60.0)
- React-RCTAnimation (0.60.0):
- React-Core (= 0.60.0)
- React-RCTBlob (0.60.0):
- React-Core (= 0.60.0)
- React-RCTNetwork (= 0.60.0)
- React-RCTWebSocket (= 0.60.0)
- React-RCTImage (0.60.0):
- React-Core (= 0.60.0)
- React-RCTNetwork (= 0.60.0)
- React-RCTLinking (0.60.0):
- React-Core (= 0.60.0)
- React-RCTNetwork (0.60.0):
- React-Core (= 0.60.0)
- React-RCTSettings (0.60.0):
- React-Core (= 0.60.0)
- React-RCTText (0.60.0):
- React-Core (= 0.60.0)
- React-RCTVibration (0.60.0):
- React-Core (= 0.60.0)
- React-RCTWebSocket (0.60.0):
- React-Core (= 0.60.0)
- React-fishhook (= 0.60.0)
- RNGestureHandler (1.3.0):
- React
- RNScreens (1.0.0-alpha.23):
- React
- RNVectorIcons (6.6.0):
- React
- yoga (0.60.0.React)
DEPENDENCIES:
- RNGestureHandler (from `/Users/mifi/Library/CloudStorage/iCloud Drive/Documents/Projects/wEvent/code/app/node_modules/react-native-gesture-handler`)
- RNScreens (from `/Users/mifi/Library/CloudStorage/iCloud Drive/Documents/Projects/wEvent/code/app/node_modules/react-native-screens`)
- RNVectorIcons (from `/Users/mifi/Library/CloudStorage/iCloud Drive/Documents/Projects/wEvent/code/app/node_modules/react-native-vector-icons`)
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- React (from `../node_modules/react-native/`)
- React-Core (from `../node_modules/react-native/React`)
- React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
- React-DevSupport (from `../node_modules/react-native/React`)
- React-fishhook (from `../node_modules/react-native/Libraries/fishhook`)
- React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
- React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
- React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
- React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
- React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
- React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
- React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
- React-RCTText (from `../node_modules/react-native/Libraries/Text`)
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
- React-RCTWebSocket (from `../node_modules/react-native/Libraries/WebSocket`)
- RNGestureHandler (from `/Users/mifi/Temporary Projects/eventment-app/node_modules/react-native-gesture-handler`)
- RNScreens (from `/Users/mifi/Temporary Projects/eventment-app/node_modules/react-native-screens`)
- RNVectorIcons (from `/Users/mifi/Temporary Projects/eventment-app/node_modules/react-native-vector-icons`)
- yoga (from `../node_modules/react-native/ReactCommon/yoga`)
SPEC REPOS:
https://github.com/cocoapods/specs.git:
- React
- boost-for-react-native
EXTERNAL SOURCES:
DoubleConversion:
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
Folly:
:podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec"
glog:
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
React:
:path: "../node_modules/react-native/"
React-Core:
:path: "../node_modules/react-native/React"
React-cxxreact:
:path: "../node_modules/react-native/ReactCommon/cxxreact"
React-DevSupport:
:path: "../node_modules/react-native/React"
React-fishhook:
:path: "../node_modules/react-native/Libraries/fishhook"
React-jsi:
:path: "../node_modules/react-native/ReactCommon/jsi"
React-jsiexecutor:
:path: "../node_modules/react-native/ReactCommon/jsiexecutor"
React-jsinspector:
:path: "../node_modules/react-native/ReactCommon/jsinspector"
React-RCTActionSheet:
:path: "../node_modules/react-native/Libraries/ActionSheetIOS"
React-RCTAnimation:
:path: "../node_modules/react-native/Libraries/NativeAnimation"
React-RCTBlob:
:path: "../node_modules/react-native/Libraries/Blob"
React-RCTImage:
:path: "../node_modules/react-native/Libraries/Image"
React-RCTLinking:
:path: "../node_modules/react-native/Libraries/LinkingIOS"
React-RCTNetwork:
:path: "../node_modules/react-native/Libraries/Network"
React-RCTSettings:
:path: "../node_modules/react-native/Libraries/Settings"
React-RCTText:
:path: "../node_modules/react-native/Libraries/Text"
React-RCTVibration:
:path: "../node_modules/react-native/Libraries/Vibration"
React-RCTWebSocket:
:path: "../node_modules/react-native/Libraries/WebSocket"
RNGestureHandler:
:path: "/Users/mifi/Library/CloudStorage/iCloud Drive/Documents/Projects/wEvent/code/app/node_modules/react-native-gesture-handler"
:path: "/Users/mifi/Temporary Projects/eventment-app/node_modules/react-native-gesture-handler"
RNScreens:
:path: "/Users/mifi/Library/CloudStorage/iCloud Drive/Documents/Projects/wEvent/code/app/node_modules/react-native-screens"
:path: "/Users/mifi/Temporary Projects/eventment-app/node_modules/react-native-screens"
RNVectorIcons:
:path: "/Users/mifi/Library/CloudStorage/iCloud Drive/Documents/Projects/wEvent/code/app/node_modules/react-native-vector-icons"
:path: "/Users/mifi/Temporary Projects/eventment-app/node_modules/react-native-vector-icons"
yoga:
:path: "../node_modules/react-native/ReactCommon/yoga"
SPEC CHECKSUMS:
React: ab1a2e21deb34965c38328d5ec40cc7d12c6050a
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2
Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
glog: 1f3da668190260b06b429bb211bfbee5cd790c28
React: 4b3c068e793e96672dcd186a2b572fac43e4b031
React-Core: 3dc86b22920597f813c62a96db3165950b64826b
React-cxxreact: 0dacb291e59b81e7c3f22a2118bee853ba8a60d2
React-DevSupport: 4eb4135386acd10c2586cc9c759bf96b4dac035e
React-fishhook: 86ca737527bb9d860efbb943c11c729a5b69aa3d
React-jsi: 8e128c4d0d8febc2977ef617d1c09bb54326069c
React-jsiexecutor: 7a3554f703a58963ec80b860144ea0f0e9b910e1
React-jsinspector: d4ed52225912efe0019bb7f1a225aec20f23049a
React-RCTActionSheet: b27ff3cf3a68f917c46d2b94abf938b625b96570
React-RCTAnimation: 9e4708e5bd65fca8285ce7c0aa076f3f4fa5c2f8
React-RCTBlob: 6eafcc3a24f33785692a7be24918ade607bc8719
React-RCTImage: 46b965d7225b428ea11580ead08a4318aef1d6be
React-RCTLinking: d65b9f56cf0b8e171575a86764df7bb019ac28d6
React-RCTNetwork: 783ee2f430740e58f724e46adc79fe7feff64202
React-RCTSettings: aa28315aadfbfaf94206d865673ae509f1e97c07
React-RCTText: 685fca2e13b024271048e7e247ef24476f28a41e
React-RCTVibration: 4ee1cf208ab17a50fafb1c16ffe28fe594a64e4f
React-RCTWebSocket: fca087d583724aa0e5fef7d911f0f2a28d0f2736
RNGestureHandler: 5329a942fce3d41c68b84c2c2276ce06a696d8b0
RNScreens: f28b48b8345f2f5f39ed6195518291515032a788
RNVectorIcons: 0bb4def82230be1333ddaeee9fcba45f0b288ed4
yoga: 616fde658be980aa60a2158835170f3f9c2d04b4
PODFILE CHECKSUM: 2e73b972f32915fd0bd074c1c1e918e49b2312a7
PODFILE CHECKSUM: 26223b0d86281b1c70ae009fe120443ad6ad9bf9
COCOAPODS: 1.7.3
COCOAPODS: 1.7.4

View File

@@ -13,14 +13,20 @@
"prop-types": "^15.7.2",
"react": "16.8.6",
"react-native": "0.60.0",
"react-native-debugger": "^1.1.0",
"react-native-elements": "^1.1.0",
"react-native-gallery-swiper": "^1.22.1",
"react-native-gesture-handler": "^1.3.0",
"react-native-screens": "^1.0.0-alpha.23",
"react-native-vector-icons": "^6.6.0",
"react-navigation": "^3.11.0",
"react-redux": "^7.1.0",
"redux": "^4.0.2",
"redux-devtools-extension": "^2.13.8",
"redux-immutable": "^4.0.0",
"redux-thunk": "^2.3.0",
"remote-redux-devtools": "^0.5.16",
"reselect": "^4.0.0",
"thunk": "^0.0.1"
},
"devDependencies": {

235
yarn.lock
View File

@@ -1449,7 +1449,7 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
base64-js@^1.1.2, base64-js@^1.2.3:
base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.2.3:
version "1.3.0"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
@@ -1553,6 +1553,14 @@ buffer-from@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
buffer@^5.2.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6"
integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==
dependencies:
base64-js "^1.0.2"
ieee754 "^1.1.4"
bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
@@ -1713,6 +1721,11 @@ cliui@^5.0.0:
strip-ansi "^5.2.0"
wrap-ansi "^5.1.0"
clone@2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb"
integrity sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=
clone@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
@@ -1806,6 +1819,11 @@ commondir@^1.0.1:
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
component-emitter@1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
component-emitter@^1.2.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
@@ -2789,6 +2807,11 @@ get-caller-file@^2.0.1:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
get-params@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/get-params/-/get-params-0.1.2.tgz#bae0dfaba588a0c60d7834c0d8dc2ff60eeef2fe"
integrity sha1-uuDfq6WIoMYNeDTA2Nwv9g7u8v4=
get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
@@ -2984,6 +3007,11 @@ http-signature@~1.2.0:
jsprim "^1.2.2"
sshpk "^1.7.0"
humps@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/humps/-/humps-2.0.1.tgz#dd02ea6081bd0568dc5d073184463957ba9ef9aa"
integrity sha1-3QLqYIG9BWjcXQcxhEY5V7qe+ao=
iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
@@ -2991,6 +3019,11 @@ iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, ic
dependencies:
safer-buffer ">= 2.1.2 < 3"
ieee754@^1.1.4:
version "1.1.13"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
ignore-walk@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
@@ -3760,6 +3793,11 @@ js-yaml@^3.13.1:
argparse "^1.0.7"
esprima "^4.0.0"
jsan@^3.1.13:
version "3.1.13"
resolved "https://registry.yarnpkg.com/jsan/-/jsan-3.1.13.tgz#4de8c7bf8d1cfcd020c313d438f930cec4b91d86"
integrity sha512-9kGpCsGHifmw6oJet+y8HaCl14y7qgAsxVdV3pCHDySNR3BfDC30zgkssd7x5LRVAT22dnpbe9JdzzmXZnq9/g==
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
@@ -3961,6 +3999,11 @@ levn@^0.3.0, levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
linked-list@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/linked-list/-/linked-list-0.1.0.tgz#798b0ff97d1b92a4fd08480f55aea4e9d49d37bf"
integrity sha1-eYsP+X0bkqT9CEgPVa6k6dSdN78=
load-json-file@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
@@ -4017,6 +4060,11 @@ lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5,
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
lodash@^4.2.0:
version "4.17.14"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba"
integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==
log-symbols@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
@@ -4512,6 +4560,11 @@ nan@^2.12.1:
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
nanoid@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.0.3.tgz#dde999e173bc9d7bd2ee2746b89909ade98e075e"
integrity sha512-NbaoqdhIYmY6FXDRB4eYtDVC9Z9eCbn8TyaiC16LNKtpPv/aqa0tOPD8y6gNE4yUNnaZ7LLhYtXOev/6+cBtfw==
nanomatch@^1.2.9:
version "1.2.13"
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
@@ -5188,6 +5241,11 @@ query-string@^6.4.2:
split-on-first "^1.0.0"
strict-uri-encode "^2.0.0"
querystring@0.2.0, querystring@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
@@ -5226,6 +5284,37 @@ react-lifecycles-compat@^3.0.4:
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
react-native-debugger@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/react-native-debugger/-/react-native-debugger-1.1.0.tgz#88ae36c229a7da6c8e97e0e98e366eca55d4736a"
integrity sha512-ckFI3QztvmLUVE/TCA++V5apVWrsARejSXqSFdTtiKmTNOsHhF+KjiVzwBYk1TegiSCjDU0LHO4m5b+HjN0Ncg==
dependencies:
humps "^2.0.1"
lodash "^4.17.5"
react-native-device-info "^0.10.2"
redux-create-reducer "^1.1.1"
react-native-device-info@^0.10.2:
version "0.10.2"
resolved "https://registry.yarnpkg.com/react-native-device-info/-/react-native-device-info-0.10.2.tgz#350cd68ed43839022ddea0a3a423439f16fa4fba"
integrity sha1-NQzWjtQ4OQIt3qCjpCNDnxb6T7o=
react-native-easy-guesture-responder@^1.0.0, react-native-easy-guesture-responder@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/react-native-easy-guesture-responder/-/react-native-easy-guesture-responder-1.1.2.tgz#5e74fe61f22216b76c0e2bc7d12132e1df0c44b0"
integrity sha512-edUUD1VCa45VwSAwz0BdYmH2I4zk9AqXyFN9VNfHGgNux7ciLRc+fwpi98LCo9oKEBUBGpUwfMLmoZKj+VOn5g==
dependencies:
prop-types "^15.6.2"
react-native-easy-view-transformer@^1.0.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/react-native-easy-view-transformer/-/react-native-easy-view-transformer-1.1.1.tgz#cf5e5d7ecba4154c9110a7e992bfe58dfd22d646"
integrity sha512-14mdrLsv108Mm4a210E1QlXyWdFvsnXnVccTpd7iZqgLoVPDulWbE2vbfT5zTsSxnE3Srq6tuUzUGy3G11o9pg==
dependencies:
prop-types "^15.6.2"
react-native-easy-guesture-responder "^1.0.0"
react-native-scrolling "^1.0.0"
react-native-elements@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/react-native-elements/-/react-native-elements-1.1.0.tgz#f99bcda4459a886f3ab4591c684c099d37aedf2b"
@@ -5239,6 +5328,16 @@ react-native-elements@^1.1.0:
react-native-ratings "^6.3.0"
react-native-status-bar-height "^2.2.0"
react-native-gallery-swiper@^1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/react-native-gallery-swiper/-/react-native-gallery-swiper-1.22.1.tgz#a1b400d6f2e3faff28c66e8c6a968756c73e5294"
integrity sha512-8JwhmXJHyOF/1q076qh/UxpMemq1uC11wbwhLQ8nko3HlZ+WHqRYMCd3GT19ry9/n4LU2cGzKf2XG/2TBLFPiw==
dependencies:
prop-types "^15.6.2"
react-native-easy-guesture-responder "^1.1.1"
react-native-image-transformer "^1.0.5"
react-native-page-list "^1.0.1"
react-native-gesture-handler@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-1.3.0.tgz#d0386f565928ccc1849537f03f2e37fd5f6ad43f"
@@ -5248,6 +5347,23 @@ react-native-gesture-handler@^1.3.0:
invariant "^2.2.2"
prop-types "^15.5.10"
react-native-image-transformer@^1.0.5:
version "1.0.6"
resolved "https://registry.yarnpkg.com/react-native-image-transformer/-/react-native-image-transformer-1.0.6.tgz#9f387643d500568e51454dfe6d340cf84ae12622"
integrity sha512-QhOZryorU9Khm48Dko4TkBQfuU+bliM+cvLMAErGDDZ77kp24TMAdIDQKhMnp6T5cUVqIFc+tpEGzZQG5GAQ6Q==
dependencies:
prop-types "^15.6.2"
react-native-easy-view-transformer "^1.0.1"
react-native-page-list@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/react-native-page-list/-/react-native-page-list-1.0.3.tgz#0ae9eb86f78f86c960d49d90da610158029e053c"
integrity sha512-SFP45eaML1CBucyH1qjjaq2m7qg10xeuEv0wLauGc6Dy4BJbsD3trdSCxY+BVENKYuiYZGgSTjWWA8acuFNLnw==
dependencies:
prop-types "^15.6.2"
react-native-easy-guesture-responder "^1.0.0"
react-native-scrolling "^1.0.0"
react-native-ratings@^6.3.0:
version "6.3.1"
resolved "https://registry.yarnpkg.com/react-native-ratings/-/react-native-ratings-6.3.1.tgz#4e4bd87f376423dc62c933f570fc1932c78adaa4"
@@ -5270,6 +5386,13 @@ react-native-safe-area-view@^0.14.1:
dependencies:
debounce "^1.2.0"
react-native-scrolling@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/react-native-scrolling/-/react-native-scrolling-1.0.2.tgz#15016d2f57493a96847e90ea4effc71984d1a39d"
integrity sha512-XjchTkZFKN8gFC9h39lFWhkLfkAtkuAvNhkwgPrr7Hwb1Ef92wFcyLfy/I3Kb9Z1AZ6zyOzNYikHyX1yq5KJAw==
dependencies:
prop-types "^15.6.2"
react-native-status-bar-height@^2.2.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/react-native-status-bar-height/-/react-native-status-bar-height-2.3.1.tgz#b92ce9112c2367290847ac11284d9d84a6330169"
@@ -5463,6 +5586,40 @@ realpath-native@^1.1.0:
dependencies:
util.promisify "^1.0.0"
redux-create-reducer@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/redux-create-reducer/-/redux-create-reducer-1.2.0.tgz#accdd7f36509b202c7602f14c0fb827a4d1c3dde"
integrity sha512-H+bi4NCgw253xVVGHRnQQyWVkl2v0MDUiWRzFrSexcSgZ84JOa9Phsso1IRKKkrqGvBqQn2+oLZYdB3/qG99FQ==
redux-devtools-core@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/redux-devtools-core/-/redux-devtools-core-0.2.1.tgz#4e43cbe590a1f18c13ee165d2d42e0bc77a164d8"
integrity sha512-RAGOxtUFdr/1USAvxrWd+Gq/Euzgw7quCZlO5TgFpDfG7rB5tMhZUrNyBjpzgzL2yMk0eHnPYIGm7NkIfRzHxQ==
dependencies:
get-params "^0.1.2"
jsan "^3.1.13"
lodash "^4.17.11"
nanoid "^2.0.0"
remotedev-serialize "^0.1.8"
redux-devtools-extension@^2.13.8:
version "2.13.8"
resolved "https://registry.yarnpkg.com/redux-devtools-extension/-/redux-devtools-extension-2.13.8.tgz#37b982688626e5e4993ff87220c9bbb7cd2d96e1"
integrity sha512-8qlpooP2QqPtZHQZRhx3x3OP5skEV1py/zUdMY28WNAocbafxdG2tRD1MWE7sp8obGMNYuLWanhhQ7EQvT1FBg==
redux-devtools-instrument@^1.9.4:
version "1.9.6"
resolved "https://registry.yarnpkg.com/redux-devtools-instrument/-/redux-devtools-instrument-1.9.6.tgz#6b412595f74b9d48cfd4ecc13e585b1588ed6e7e"
integrity sha512-MwvY4cLEB2tIfWWBzrUR02UM9qRG2i7daNzywRvabOSVdvAY7s9BxSwMmVRH1Y/7QWjplNtOwgT0apKhHg2Qew==
dependencies:
lodash "^4.2.0"
symbol-observable "^1.0.2"
redux-immutable@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/redux-immutable/-/redux-immutable-4.0.0.tgz#3a1a32df66366462b63691f0e1dc35e472bbc9f3"
integrity sha1-Ohoy32Y2ZGK2NpHw4dw15HK7yfM=
redux-thunk@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622"
@@ -5537,6 +5694,25 @@ regjsparser@^0.6.0:
dependencies:
jsesc "~0.5.0"
remote-redux-devtools@^0.5.16:
version "0.5.16"
resolved "https://registry.yarnpkg.com/remote-redux-devtools/-/remote-redux-devtools-0.5.16.tgz#95b1a4a1988147ca04f3368f3573b661748b3717"
integrity sha512-xZ2D1VRIWzat5nsvcraT6fKEX9Cfi+HbQBCwzNnUAM8Uicm/anOc60XGalcaDPrVmLug7nhDl2nimEa3bL3K9w==
dependencies:
jsan "^3.1.13"
querystring "^0.2.0"
redux-devtools-core "^0.2.1"
redux-devtools-instrument "^1.9.4"
rn-host-detect "^1.1.5"
socketcluster-client "^14.2.1"
remotedev-serialize@^0.1.8:
version "0.1.8"
resolved "https://registry.yarnpkg.com/remotedev-serialize/-/remotedev-serialize-0.1.8.tgz#c99cb184e7f71a906162abc404be8ce33810205f"
integrity sha512-3YG/FDcOmiK22bl5oMRM8RRnbGrFEuPGjbcDG+z2xi5aQaNQNZ8lqoRnZTwXVfaZtutXuiAQOgPRrogzQk8edg==
dependencies:
jsan "^3.1.13"
remove-trailing-separator@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
@@ -5609,6 +5785,11 @@ require-main-filename@^2.0.0:
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
reselect@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7"
integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==
resolve-cwd@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
@@ -5668,6 +5849,11 @@ rimraf@~2.2.6:
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=
rn-host-detect@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/rn-host-detect/-/rn-host-detect-1.1.5.tgz#fbecb982b73932f34529e97932b9a63e58d8deb6"
integrity sha512-ufk2dFT3QeP9HyZ/xTuMtW27KnFy815CYitJMqQm+pgG3ZAtHBsrU8nXizNKkqXGy3bQmhEoloVbrfbvMJMqkg==
rsvp@^4.8.4:
version "4.8.5"
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
@@ -5753,6 +5939,23 @@ sax@~1.1.1:
resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.6.tgz#5d616be8a5e607d54e114afae55b7eaf2fcc3240"
integrity sha1-XWFr6KXmB9VOEUr65Vt+ry/MMkA=
sc-channel@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/sc-channel/-/sc-channel-1.2.0.tgz#d9209f3a91e3fa694c66b011ce55c4ad8c3087d9"
integrity sha512-M3gdq8PlKg0zWJSisWqAsMmTVxYRTpVRqw4CWAdKBgAfVKumFcTjoCV0hYu7lgUXccCtCD8Wk9VkkE+IXCxmZA==
dependencies:
component-emitter "1.2.1"
sc-errors@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/sc-errors/-/sc-errors-1.4.1.tgz#53e80030fe647e133d73b51eaa7d2b0f7591fd5b"
integrity sha512-dBn92iIonpChTxYLgKkIT/PCApvmYT6EPIbRvbQKTgY6tbEbIy8XVUv4pGyKwEK4nCmvX4TKXcN0iXC6tNW6rQ==
sc-formatter@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/sc-formatter/-/sc-formatter-3.0.2.tgz#9abdb14e71873ce7157714d3002477bbdb33c4e6"
integrity sha512-9PbqYBpCq+OoEeRQ3QfFIGE6qwjjBcd2j7UjgDlhnZbtSnuGgHdcRklPKYGuYFH82V/dwd+AIpu8XvA1zqTd+A==
scheduler@0.14.0:
version "0.14.0"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.14.0.tgz#b392c23c9c14bfa2933d4740ad5603cc0d59ea5b"
@@ -5945,6 +6148,22 @@ snapdragon@^0.8.1:
source-map-resolve "^0.5.0"
use "^3.1.0"
socketcluster-client@^14.2.1:
version "14.2.2"
resolved "https://registry.yarnpkg.com/socketcluster-client/-/socketcluster-client-14.2.2.tgz#60b31318abe6828ba7233f5a9a32540263fd23b6"
integrity sha512-vofmFcTaHaIf+MqAR0OZS7e30X4jxbDPJl+taCe8kLGJ5rVOrKeuU0sGyHyHyqW87AIR6jqc4KODl4WQJ4SsAA==
dependencies:
buffer "^5.2.1"
clone "2.1.1"
component-emitter "1.2.1"
linked-list "0.1.0"
querystring "0.2.0"
sc-channel "^1.2.0"
sc-errors "^1.4.1"
sc-formatter "^3.0.1"
uuid "3.2.1"
ws "5.1.1"
source-map-resolve@^0.5.0:
version "0.5.2"
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
@@ -6178,7 +6397,7 @@ symbol-observable@1.0.1:
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=
symbol-observable@^1.2.0:
symbol-observable@^1.0.2, symbol-observable@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
@@ -6497,6 +6716,11 @@ utils-merge@1.0.1:
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
uuid@3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14"
integrity sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==
uuid@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
@@ -6661,6 +6885,13 @@ write@1.0.3:
dependencies:
mkdirp "^0.5.1"
ws@5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/ws/-/ws-5.1.1.tgz#1d43704689711ac1942fd2f283e38f825c4b8b95"
integrity sha512-bOusvpCb09TOBLbpMKszd45WKC2KPtxiyiHanv+H2DE3Az+1db5a/L7sVJZVDPUC1Br8f0SKRr1KjLpD1U/IAw==
dependencies:
async-limiter "~1.0.0"
ws@^1.1.0, ws@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51"