diff --git a/android/app/build.gradle b/android/app/build.gradle
index c89f0a9..e053b60 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -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
diff --git a/android/app/src/main/java/com/eventment/MainApplication.java b/android/app/src/main/java/com/eventment/MainApplication.java
index 3ca84c9..ba3f82c 100644
--- a/android/app/src/main/java/com/eventment/MainApplication.java
+++ b/android/app/src/main/java/com/eventment/MainApplication.java
@@ -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;
diff --git a/android/settings.gradle b/android/settings.gradle
index d77d561..7eee7c1 100644
--- a/android/settings.gradle
+++ b/android/settings.gradle
@@ -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'
diff --git a/app/App.js b/app/App.js
index 2427abe..5f821e9 100644
--- a/app/App.js
+++ b/app/App.js
@@ -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 ;
-};
-
-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;
diff --git a/app/actions/index.js b/app/actions/index.js
index 9ea9e55..716381c 100644
--- a/app/actions/index.js
+++ b/app/actions/index.js
@@ -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,
+});
diff --git a/app/api/index.js b/app/api/index.js
index c10e92b..16c05f7 100644
--- a/app/api/index.js
+++ b/app/api/index.js
@@ -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()}`;
};
diff --git a/app/components/Auction/AuctionPriceAndBidCount.js b/app/components/Auction/AuctionPriceAndBidCount.js
index 979bb53..94c8aa9 100644
--- a/app/components/Auction/AuctionPriceAndBidCount.js
+++ b/app/components/Auction/AuctionPriceAndBidCount.js
@@ -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;
diff --git a/app/components/Auction/BidStatus.js b/app/components/Auction/BidStatus.js
index 0a7d265..64c012d 100644
--- a/app/components/Auction/BidStatus.js
+++ b/app/components/Auction/BidStatus.js
@@ -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 (
- {`${currentPrice} (${bidCount} bids)`}
+ {isWinning && `Oh no! You have been outbid!`}
+ {!isWinning && isBidding && `You have the winning bid! (for now...)`}
);
};
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({
diff --git a/app/components/Auction/FilterBar.js b/app/components/Auction/FilterBar.js
new file mode 100644
index 0000000..2da7503
--- /dev/null
+++ b/app/components/Auction/FilterBar.js
@@ -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 }) => (
+
+ Filter
+ 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;
diff --git a/app/components/Item/List.js b/app/components/Item/List.js
index 53c20fc..c7b0f95 100644
--- a/app/components/Item/List.js
+++ b/app/components/Item/List.js
@@ -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(
-
+ {images !== null && images.length > 0 && (
+
+ )}
- {type === ITEM_TYPES.AUCTION && }
+ {type === ITEM_TYPES.AUCTION && }
{title}
@@ -78,10 +101,10 @@ export default class ItemRow extends Component {
)}
{type === ITEM_TYPES.AUCTION ? (
-
+
) : (
- {formatPrice(startPrice)}
+ {formatPrice(startingPrice)}
)}
@@ -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,
},
diff --git a/app/constants/actionTypes.js b/app/constants/actionTypes.js
index 66d8ea1..bb1958e 100644
--- a/app/constants/actionTypes.js
+++ b/app/constants/actionTypes.js
@@ -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';
diff --git a/app/containers/Auction.js b/app/containers/Auction.js
new file mode 100644
index 0000000..368f407
--- /dev/null
+++ b/app/containers/Auction.js
@@ -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);
diff --git a/app/containers/Auction/AuctionPriceAndBidCount.js b/app/containers/Auction/AuctionPriceAndBidCount.js
index 002e456..36e085b 100644
--- a/app/containers/Auction/AuctionPriceAndBidCount.js
+++ b/app/containers/Auction/AuctionPriceAndBidCount.js
@@ -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),
};
}
diff --git a/app/containers/Auction/BidStatus.js b/app/containers/Auction/BidStatus.js
index 205d5a3..8a1fba8 100644
--- a/app/containers/Auction/BidStatus.js
+++ b/app/containers/Auction/BidStatus.js
@@ -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),
};
}
diff --git a/app/domain/Auction.js b/app/domain/Auction.js
new file mode 100644
index 0000000..36b930c
--- /dev/null
+++ b/app/domain/Auction.js
@@ -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,
+ });
+};
diff --git a/app/domain/Event.js b/app/domain/Event.js
new file mode 100644
index 0000000..b2bfa1c
--- /dev/null
+++ b/app/domain/Event.js
@@ -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))),
+ });
+};
diff --git a/app/domain/Item.js b/app/domain/Item.js
new file mode 100644
index 0000000..f04543b
--- /dev/null
+++ b/app/domain/Item.js
@@ -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),
+ });
+};
diff --git a/app/domain/Post.js b/app/domain/Post.js
new file mode 100644
index 0000000..6aa0b26
--- /dev/null
+++ b/app/domain/Post.js
@@ -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,
+ });
+};
diff --git a/app/domain/Profile.js b/app/domain/Profile.js
new file mode 100644
index 0000000..857e7e4
--- /dev/null
+++ b/app/domain/Profile.js
@@ -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),
+ });
+};
diff --git a/app/domain/TicketClass.js b/app/domain/TicketClass.js
new file mode 100644
index 0000000..b80ab80
--- /dev/null
+++ b/app/domain/TicketClass.js
@@ -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,
+ });
+};
diff --git a/app/reducers/activeEvent.js b/app/reducers/activeEvent.js
new file mode 100644
index 0000000..9e1358c
--- /dev/null
+++ b/app/reducers/activeEvent.js
@@ -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;
+ }
+};
diff --git a/app/reducers/auctions.js b/app/reducers/auctions.js
new file mode 100644
index 0000000..5045915
--- /dev/null
+++ b/app/reducers/auctions.js
@@ -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;
+ }
+};
diff --git a/app/reducers/blockUI.js b/app/reducers/blockUI.js
new file mode 100644
index 0000000..97ec8fc
--- /dev/null
+++ b/app/reducers/blockUI.js
@@ -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;
+ }
+};
diff --git a/app/reducers/events.js b/app/reducers/events.js
index ed39633..7d9571f 100644
--- a/app/reducers/events.js
+++ b/app/reducers/events.js
@@ -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;
}
diff --git a/app/reducers/index.js b/app/reducers/index.js
index a29cccc..6d4a27f 100644
--- a/app/reducers/index.js
+++ b/app/reducers/index.js
@@ -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,
});
diff --git a/app/reducers/items.js b/app/reducers/items.js
index 10965e1..d4c6940 100644
--- a/app/reducers/items.js
+++ b/app/reducers/items.js
@@ -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;
}
diff --git a/app/reducers/profile.js b/app/reducers/profile.js
new file mode 100644
index 0000000..d4f3b7f
--- /dev/null
+++ b/app/reducers/profile.js
@@ -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;
+ }
+};
diff --git a/app/router.js b/app/router.js
index 414f087..e7e06b2 100644
--- a/app/router.js
+++ b/app/router.js
@@ -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 }) => ,
+ tabBarIcon: ({ tintColor }) => ,
},
},
'Auction': {
screen: Auction,
navigationOptions: {
tabBarLabel: 'Silent Auction',
- tabBarIcon: ({ tintColor }) => ,
+ tabBarIcon: ({ tintColor }) => ,
},
},
'Bazaar': {
screen: Marketplace,
navigationOptions: {
tabBarLabel: 'Bazaar',
- tabBarIcon: ({ tintColor }) => ,
+ tabBarIcon: ({ tintColor }) => ,
},
},
'Profile': {
screen: Profile,
navigationOptions: {
tabBarLabel: 'Profile',
- tabBarIcon: ({ tintColor }) => ,
+ tabBarIcon: ({ tintColor }) => ,
},
},
});
diff --git a/app/screens/Auction.js b/app/screens/Auction.js
index 1319bd0..8c00674 100644
--- a/app/screens/Auction.js
+++ b/app/screens/Auction.js
@@ -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 ;
+ return ;
}
- return ;
+ return ;
}
render() {
- const { items, view } = this.state;
+ const { items } = this.props;
+ const { sort, view } = this.state;
return (
@@ -67,11 +77,15 @@ export default class Auction extends Component {
changeFilterer={this.changeFilter}
changeViewMode={this.changeViewMode}
/>
-
+ {items.size > 0 && (
+
+ )}
);
}
@@ -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',
+ },
});
diff --git a/app/screens/Events.js b/app/screens/Events.js
index 6664a52..5d3560a 100644
--- a/app/screens/Events.js
+++ b/app/screens/Events.js
@@ -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 (
diff --git a/app/selectors/auctions.js b/app/selectors/auctions.js
new file mode 100644
index 0000000..cb90519
--- /dev/null
+++ b/app/selectors/auctions.js
@@ -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);
diff --git a/app/selectors/items.js b/app/selectors/items.js
new file mode 100644
index 0000000..340cad3
--- /dev/null
+++ b/app/selectors/items.js
@@ -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),
+);
diff --git a/app/store/index.js b/app/store/index.js
index c72e666..f1748ca 100644
--- a/app/store/index.js
+++ b/app/store/index.js
@@ -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)),
);
diff --git a/ios/Eventment.xcodeproj/project.pbxproj b/ios/Eventment.xcodeproj/project.pbxproj
index 15608e4..cdba7cd 100644
--- a/ios/Eventment.xcodeproj/project.pbxproj
+++ b/ios/Eventment.xcodeproj/project.pbxproj
@@ -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 = ""; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Eventment/Info.plist; sourceTree = ""; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Eventment/main.m; sourceTree = ""; };
+ 1D0FF8CF22DB4FCB0025F1BB /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; };
1D7F90E122D464690006EDF4 /* RNGestureHandler.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNGestureHandler.xcodeproj; path = "../node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj"; sourceTree = ""; };
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 = ""; };
+ 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 = ""; };
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 = ""; };
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 = ""; };
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 = ""; };
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 = ""; };
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 = ""; };
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 = ""; };
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 = ""; };
+ 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 = ""; };
- 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 = ""; };
+ 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 = ""; };
+ 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 = ""; };
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 = ""; };
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 = ""; };
@@ -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 = ""; };
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 = ""; };
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 = ""; };
- 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 = ""; };
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 = ""; };
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 = ""; };
@@ -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 = ""; };
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 = ""; };
- 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 = "";
};
+ 1D0FF8D022DB4FCB0025F1BB /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 1D0FF8D522DB4FCB0025F1BB /* libRNVectorIcons.a */,
+ 1D0FF8D722DB4FCB0025F1BB /* libRNVectorIcons-tvOS.a */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
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 = "";
@@ -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;
diff --git a/ios/Eventment/Info.plist b/ios/Eventment/Info.plist
index 65b85c6..4f5df81 100644
--- a/ios/Eventment/Info.plist
+++ b/ios/Eventment/Info.plist
@@ -38,7 +38,7 @@
NSLocationWhenInUseUsageDescription
-
+
UILaunchStoryboardName
LaunchScreen
UIRequiredDeviceCapabilities
diff --git a/ios/Podfile b/ios/Podfile
index ea07673..71afe90 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -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
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 0c25033..e060d51 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -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
diff --git a/package.json b/package.json
index 03692ea..c6c1f8f 100644
--- a/package.json
+++ b/package.json
@@ -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": {
diff --git a/yarn.lock b/yarn.lock
index 5874685..c015963 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -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"