be-components 2.6.5 → 2.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/lib/commonjs/MarketComponents/api/index.js +8 -0
  2. package/lib/commonjs/MarketComponents/api/index.js.map +1 -1
  3. package/lib/commonjs/MarketComponents/components/AthleteMarket/index.js +2 -0
  4. package/lib/commonjs/MarketComponents/components/AthleteMarket/index.js.map +1 -1
  5. package/lib/commonjs/MarketComponents/components/TournamentList/api/index.js +69 -0
  6. package/lib/commonjs/MarketComponents/components/TournamentList/api/index.js.map +1 -0
  7. package/lib/commonjs/MarketComponents/components/TournamentList/index.js +173 -0
  8. package/lib/commonjs/MarketComponents/components/TournamentList/index.js.map +1 -0
  9. package/lib/commonjs/MarketComponents/components/TournamentMarket/api/index.js +2 -2
  10. package/lib/commonjs/MarketComponents/components/TournamentMarket/api/index.js.map +1 -1
  11. package/lib/commonjs/MarketComponents/components/TournamentMarket/index.js +18 -3
  12. package/lib/commonjs/MarketComponents/components/TournamentMarket/index.js.map +1 -1
  13. package/lib/commonjs/MarketComponents/index.js +3 -1
  14. package/lib/commonjs/MarketComponents/index.js.map +1 -1
  15. package/lib/module/MarketComponents/api/index.js +8 -0
  16. package/lib/module/MarketComponents/api/index.js.map +1 -1
  17. package/lib/module/MarketComponents/components/AthleteMarket/index.js +2 -0
  18. package/lib/module/MarketComponents/components/AthleteMarket/index.js.map +1 -1
  19. package/lib/module/MarketComponents/components/TournamentList/api/index.js +64 -0
  20. package/lib/module/MarketComponents/components/TournamentList/api/index.js.map +1 -0
  21. package/lib/module/MarketComponents/components/TournamentList/index.js +164 -0
  22. package/lib/module/MarketComponents/components/TournamentList/index.js.map +1 -0
  23. package/lib/module/MarketComponents/components/TournamentMarket/api/index.js +2 -2
  24. package/lib/module/MarketComponents/components/TournamentMarket/api/index.js.map +1 -1
  25. package/lib/module/MarketComponents/components/TournamentMarket/index.js +18 -3
  26. package/lib/module/MarketComponents/components/TournamentMarket/index.js.map +1 -1
  27. package/lib/module/MarketComponents/index.js +3 -1
  28. package/lib/module/MarketComponents/index.js.map +1 -1
  29. package/lib/typescript/src/MarketComponents/api/index.d.ts +2 -1
  30. package/lib/typescript/src/MarketComponents/api/index.d.ts.map +1 -1
  31. package/lib/typescript/src/MarketComponents/components/AthleteMarket/index.d.ts +3 -2
  32. package/lib/typescript/src/MarketComponents/components/AthleteMarket/index.d.ts.map +1 -1
  33. package/lib/typescript/src/MarketComponents/components/TournamentList/api/index.d.ts +14 -0
  34. package/lib/typescript/src/MarketComponents/components/TournamentList/api/index.d.ts.map +1 -0
  35. package/lib/typescript/src/MarketComponents/components/TournamentList/index.d.ts +28 -0
  36. package/lib/typescript/src/MarketComponents/components/TournamentList/index.d.ts.map +1 -0
  37. package/lib/typescript/src/MarketComponents/components/TournamentMarket/api/index.d.ts.map +1 -1
  38. package/lib/typescript/src/MarketComponents/components/TournamentMarket/index.d.ts +5 -1
  39. package/lib/typescript/src/MarketComponents/components/TournamentMarket/index.d.ts.map +1 -1
  40. package/lib/typescript/src/MarketComponents/index.d.ts +30 -2
  41. package/lib/typescript/src/MarketComponents/index.d.ts.map +1 -1
  42. package/package.json +1 -1
  43. package/src/MarketComponents/api/index.ts +9 -1
  44. package/src/MarketComponents/components/AthleteMarket/index.tsx +4 -2
  45. package/src/MarketComponents/components/TournamentList/api/index.ts +41 -0
  46. package/src/MarketComponents/components/TournamentList/index.tsx +163 -0
  47. package/src/MarketComponents/components/TournamentMarket/api/index.ts +2 -3
  48. package/src/MarketComponents/components/TournamentMarket/index.tsx +16 -3
  49. package/src/MarketComponents/index.tsx +3 -1
@@ -0,0 +1,163 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { View, FlatList, ActivityIndicator } from 'react-native';
3
+ import type { BestAvailableOrderProps, BestAvailableResponseProps, EventOrderStatProps, LeagueProps, MarketProps, MatchProps, OrderProps, TournamentProps, TradeProps } from '../../../types';
4
+ import { MarketComponentApi } from '../../api';
5
+ import SocketManager from '../../../Socket';
6
+ import Colors from '../../../constants/colors';
7
+ import TournamentMarket from '../TournamentMarket';
8
+ import { TournamentListHelpers } from './api';
9
+ import moment from 'moment-mini';
10
+
11
+ type TournamentListProps = {
12
+ list_key:string //Change key to reload data
13
+ tournaments:TournamentProps[],
14
+ distinct_id?:string,
15
+ show_grades?:boolean,
16
+ hide_liquidity?:boolean,
17
+ hide_match_liquidity?:boolean,
18
+ hide_participant_liquidity?:boolean,
19
+ show_id?:boolean,
20
+ init_expanded_ids?:string[],
21
+ onTeamSelect?:(team_id:string) => void,
22
+ onActivate?:(event_id:string, event_type:string) => void,
23
+ onViewEvent?:(data:{ event_id:string, event_type:string, market_id:string, side_id?:string, side_type?:string }) => void,
24
+ onOrder?:(o:OrderProps) => void,
25
+ onTradeLongPress?:(trade:TradeProps) => void,
26
+ onViewAdditionalMarkets?:(event_id:string, event_type:string) => void
27
+ }
28
+
29
+ const TournamentList = ({ tournaments, hide_liquidity, hide_match_liquidity, hide_participant_liquidity, show_grades, list_key, distinct_id, onViewEvent, onOrder, onTradeLongPress, onViewAdditionalMarkets, onActivate }:TournamentListProps) => {
30
+ const [ needs_reload, setNeedsReload ] = useState(false);
31
+ const [ socket_response, setSocketResponse ] = useState<{ tournament_ids:string[], matches:MatchProps[], ba_response:BestAvailableResponseProps } | undefined>(undefined);
32
+ const [ event_data, setListData ] = useState<{
33
+ loading:boolean,
34
+ markets:MarketProps[],
35
+ leagues:LeagueProps[],
36
+ tournament_latest_trades: TradeProps[],
37
+ tournament_available_orders: BestAvailableOrderProps[],
38
+ tournament_order_stats:EventOrderStatProps[],
39
+ match_latest_trades:TradeProps[],
40
+ match_available_orders:BestAvailableOrderProps[],
41
+ match_order_stats:EventOrderStatProps[]
42
+ }>({
43
+ loading:false,
44
+ leagues:[],
45
+ tournament_latest_trades: [],
46
+ match_latest_trades:[],
47
+ markets:[],
48
+ tournament_available_orders: [],
49
+ match_available_orders:[],
50
+ tournament_order_stats: [],
51
+ match_order_stats:[]
52
+ });
53
+ const { loading, leagues, tournament_available_orders, tournament_order_stats, tournament_latest_trades, match_available_orders, match_order_stats, match_latest_trades, markets } = event_data;
54
+
55
+ useEffect(() => {
56
+ MarketComponentApi.setEnvironment();
57
+ if(tournaments.length > 0){ getDataFromServer() }
58
+ },[list_key, tournaments.length]);
59
+
60
+ useEffect(() => {
61
+ if(!socket_response){ return }
62
+ const updated_data = TournamentListHelpers.getMarketDataFromBestAvailable(socket_response.ba_response, tournaments, socket_response.matches);
63
+ if(!updated_data.updated){ return }
64
+ let socket_match_ids = socket_response.matches.map(m => m.match_id);
65
+ setListData({
66
+ ...event_data,
67
+ tournament_order_stats: tournament_order_stats.filter(os => !socket_response.tournament_ids.find(new_id => new_id == os.event_id)).concat(updated_data.event_order_stats),
68
+ tournament_available_orders: tournament_available_orders.filter(os => !socket_response.tournament_ids.find(new_id => new_id == os.event_id)).concat(updated_data.available_orders),
69
+ tournament_latest_trades: tournament_latest_trades.filter(lt => !socket_response.tournament_ids.find(new_id => new_id == lt.event_id)).concat(updated_data.latest_trades),
70
+ match_order_stats: match_order_stats.filter(os => !socket_match_ids.find(new_id => new_id == os.event_id)).concat(updated_data.m_event_order_stats),
71
+ match_available_orders: match_available_orders.filter(os => !socket_match_ids.find(new_id => new_id == os.event_id)).concat(updated_data.m_available_orders),
72
+ match_latest_trades: match_latest_trades.filter(os => !socket_match_ids.find(new_id => new_id == os.event_id)).concat(updated_data.m_latest_trades)
73
+ })
74
+ },[socket_response])
75
+
76
+ const getDataFromServer = async() => {
77
+ setListData({ ...event_data, loading:true });
78
+ const ba = await MarketComponentApi.getBestAvailableOrders();
79
+ if(!ba){ return }
80
+ const lt = await MarketComponentApi.getLatestTradesByEvents('tournament', tournaments.map(e => e.tournament_id));
81
+ const ev_data = TournamentListHelpers.getMarketDataFromBestAvailable(ba, tournaments, []);
82
+ const maks = await MarketComponentApi.getMarkets();
83
+ const lgs = await MarketComponentApi.getLeagues();
84
+
85
+ setListData({
86
+ ...event_data,
87
+ loading:false,
88
+ leagues:lgs,
89
+ tournament_latest_trades: lt,
90
+ markets: maks,
91
+ tournament_order_stats: ev_data.event_order_stats,
92
+ tournament_available_orders: ev_data.available_orders,
93
+ match_latest_trades: ev_data.m_latest_trades,
94
+ match_available_orders: ev_data.m_available_orders,
95
+ match_order_stats: ev_data.m_event_order_stats
96
+ });
97
+ }
98
+
99
+ const renderTournaments = (data: { item:TournamentProps, index:number }) => {
100
+ const t_ba = tournament_available_orders.filter(o => o.event_id == data.item.tournament_id && o.event_type == 'tournament');
101
+ const t_order_st = tournament_order_stats.filter(os => os.event_id == data.item.tournament_id && os.event_type == 'tournament');
102
+ const t_lts = tournament_latest_trades.filter(lt => lt.event_id == data.item.tournament_id && lt.event_type == 'tournament');
103
+ const league = leagues.find(l => l.league_id == data.item.league_id);
104
+ return (
105
+ <TournamentMarket
106
+ tournament={data.item}
107
+ markets={markets}
108
+ latest_trades={t_lts}
109
+ league={league}
110
+ show_grades={show_grades}
111
+ match_available_orders={match_available_orders}
112
+ match_latest_trades={match_latest_trades}
113
+ hide_liquidity={hide_liquidity}
114
+ hide_match_liquidity={hide_match_liquidity}
115
+ hide_participant_liquidity={hide_participant_liquidity}
116
+ match_order_stats={match_order_stats}
117
+ best_available_orders={t_ba}
118
+ event_order_stats={t_order_st}
119
+ onActivate={onActivate ? onActivate : undefined}
120
+ onView={(ev) => {
121
+ if(onViewEvent){ onViewEvent(ev) }
122
+ }}
123
+ onOrder={(o) => onOrder ? onOrder(o) : console.log('')}
124
+ onViewAdditionalMarkets={(event_id, event_type) => onViewAdditionalMarkets ? onViewAdditionalMarkets(event_id, event_type) : console.log('')}
125
+ onTradeLongPress={(t) => onTradeLongPress ? onTradeLongPress(t) : console.log(t)}
126
+ />
127
+ )
128
+ }
129
+
130
+ return (
131
+ <View>
132
+ {loading ?
133
+ <ActivityIndicator style={{ padding:20, alignSelf:'center' }} size='large' color={Colors.brand.midnight} />
134
+ :<></>}
135
+ {markets.length > 0 ?
136
+ <FlatList
137
+ key={'tournament_list'}
138
+ data={tournaments.sort((a,b) => moment(a.scheduled_datetime).unix() - moment(b.scheduled_datetime).unix())}
139
+ renderItem={renderTournaments}
140
+ keyExtractor={(item) => item.tournament_id.toString()}
141
+ />
142
+ :<></>}
143
+ <SocketManager
144
+ distinct_id={distinct_id}
145
+ onConnect={() => {
146
+ if(needs_reload){
147
+ getDataFromServer();
148
+ setNeedsReload(false);
149
+ }
150
+ }}
151
+ onDisconnect={() => setNeedsReload(true)}
152
+ onSocketEvent={(ev) => {
153
+ if(ev.type != 'V1_LOAD_BEST_AVAILABLE'){ return }
154
+ let tournament_ids = ev.data.tournaments.map((e:TournamentProps) => e.tournament_id);
155
+ setSocketResponse({ tournament_ids, matches:ev.data.matches, ba_response: ev.data });
156
+ }}
157
+ subscribed_events={['V1_LOAD_BEST_AVAILABLE']}
158
+ />
159
+ </View>
160
+ )
161
+ }
162
+
163
+ export default TournamentList
@@ -47,9 +47,8 @@ const TournamentMarketHelpers = {
47
47
  if(a_trade){ a_prob = a_trade.probability }
48
48
  let b_trade = latest_trades.find(os => os.market_id == market?.market_id && os.side == market?.trade_side && os.side_type == 'team' && os.side_id == b.team_id);
49
49
  if(b_trade){ b_prob = b_trade.probability }
50
- let a_stats = event_order_stats.filter(os => os.market_id == market?.market_id && os.side_type == 'athlete' && os.side_id == a.team_id).reduce((a,b) => a + b.open_order_amount, 0);
51
- let b_stats = event_order_stats.filter(os => os.market_id == market?.market_id && os.side_type == 'athlete' && os.side_id == b.team_id).reduce((a,b) => a + b.open_order_amount, 0);
52
-
50
+ let a_stats = event_order_stats.filter(os => os.market_id == market?.market_id && os.side_type == 'team' && os.side_id == a.team_id).reduce((a,b) => a + b.open_order_amount, 0);
51
+ let b_stats = event_order_stats.filter(os => os.market_id == market?.market_id && os.side_type == 'team' && os.side_id == b.team_id).reduce((a,b) => a + b.open_order_amount, 0);
53
52
  if(a_stats > 0){ a_prob += a_stats }
54
53
  if(b_stats > 0){ b_prob += b_stats }
55
54
  return b_prob - a_prob
@@ -17,6 +17,10 @@ type TournamentMarketProps = {
17
17
  tournament:TournamentProps,
18
18
  league?:LeagueProps,
19
19
  markets:MarketProps[],
20
+ hide_liquidity?:boolean,
21
+ hide_match_liquidity?:boolean,
22
+ show_grades?:boolean,
23
+ hide_participant_liquidity?:boolean,
20
24
  latest_trades:TradeProps[],
21
25
  best_available_orders:BestAvailableOrderProps[],
22
26
  match_available_orders:BestAvailableOrderProps[],
@@ -31,7 +35,7 @@ type TournamentMarketProps = {
31
35
  }
32
36
 
33
37
 
34
- const TournamentMarket = ({ tournament, league, markets, latest_trades, best_available_orders, event_order_stats, match_available_orders, match_latest_trades, match_order_stats, onView, onTradeLongPress, onViewAdditionalMarkets, onOrder }:TournamentMarketProps) => {
38
+ const TournamentMarket = ({ tournament, hide_match_liquidity, show_grades, hide_participant_liquidity, league, markets, latest_trades, hide_liquidity, best_available_orders, event_order_stats, match_available_orders, match_latest_trades, match_order_stats, onView, onTradeLongPress, onViewAdditionalMarkets, onOrder }:TournamentMarketProps) => {
35
39
  const [ tournament_data, setTournamentData ] = useState<{
36
40
  loaded:boolean,
37
41
  loading:boolean,
@@ -56,7 +60,7 @@ const TournamentMarket = ({ tournament, league, markets, latest_trades, best_ava
56
60
 
57
61
  const supported_markets = markets.filter(m => tournament.supported_markets.find(sm => sm.market_id == m.market_id));
58
62
  const { show_athletes, show_teams, show_matches } = TournamentMarketHelpers.visibleMarketTypes(tournament, active_market);
59
- const { liquidity, open_order_count } = MarketComponentHelpers.getLiqudity(event_order_stats.concat(match_order_stats));
63
+ const { liquidity, open_order_count } = MarketComponentHelpers.getLiqudity(event_order_stats.concat(match_order_stats.filter(m => matches.find(nm => nm.match_id == m.event_id))));
60
64
  const sorted_athletes = TournamentMarketHelpers.sortAthletes(event_order_stats, latest_trades, athletes, active_market);
61
65
  const sorted_teams = TournamentMarketHelpers.sortTeams(event_order_stats, latest_trades, teams, active_market);
62
66
  const sorted_matches = TournamentMarketHelpers.sortMatches(match_order_stats, matches, active_market);
@@ -85,7 +89,6 @@ const TournamentMarket = ({ tournament, league, markets, latest_trades, best_ava
85
89
  let market = markets.find(m => m.market_id == sm?.market_id);
86
90
  const aths = await MarketComponentApi.getAthletesByIds(a_ids);
87
91
  const tms = await MarketComponentApi.getTeamsByIds(t_ids);
88
-
89
92
  setTournamentData({
90
93
  ...tournament_data,
91
94
  loaded: true,
@@ -129,7 +132,9 @@ const TournamentMarket = ({ tournament, league, markets, latest_trades, best_ava
129
132
  away_athlete={away_athlete}
130
133
  home_athlete={home_athlete}
131
134
  away_team={away_team}
135
+ show_grades={show_grades}
132
136
  home_team={home_team}
137
+ hide_liquidity={hide_match_liquidity ? true : false}
133
138
  market={active_market}
134
139
  latest_trades={m_trades}
135
140
  best_available_orders={m_available_orders}
@@ -144,6 +149,7 @@ const TournamentMarket = ({ tournament, league, markets, latest_trades, best_ava
144
149
  }
145
150
 
146
151
  const renderTeams = (data:{ item:TeamProps, index:number }) => {
152
+ console.log('rendering team!!!!')
147
153
  if(!active_market){ return <></> }
148
154
  let team_available_orders = best_available_orders.filter(ba => ba.side_type == 'team' && ba.side_id == data.item.team_id);
149
155
  let team_trades = latest_trades.filter(t => t.side_type == 'team' && t.side_id == data.item.team_id);
@@ -154,6 +160,8 @@ const TournamentMarket = ({ tournament, league, markets, latest_trades, best_ava
154
160
  event_type='tournament'
155
161
  onTradeLongPress={onTradeLongPress}
156
162
  onView={onView}
163
+ show_grades={show_grades}
164
+ hide_liquidity={hide_participant_liquidity ? true : false}
157
165
  tournament={tournament}
158
166
  event_order_stats={team_order_stats}
159
167
  best_available_orders={team_available_orders}
@@ -176,6 +184,8 @@ const TournamentMarket = ({ tournament, league, markets, latest_trades, best_ava
176
184
  event_type='tournament'
177
185
  onTradeLongPress={onTradeLongPress}
178
186
  onView={onView}
187
+ show_grades={show_grades}
188
+ hide_liquidity={hide_participant_liquidity ? true : false}
179
189
  tournament={tournament}
180
190
  event_order_stats={team_order_stats}
181
191
  best_available_orders={team_available_orders}
@@ -240,7 +250,9 @@ const TournamentMarket = ({ tournament, league, markets, latest_trades, best_ava
240
250
  :<></>}
241
251
  </View>
242
252
  }
253
+
243
254
  <View style={{ backgroundColor:Colors.shades.shade100, padding:10, flexDirection:'row', alignItems:'center', flexWrap:'wrap', borderBottomLeftRadius:8, borderBottomRightRadius:8 }}>
255
+ {!hide_liquidity ?
244
256
  <TouchableOpacity style={{ flex:1, flexDirection:'row', minWidth:115 }} onPress={() => {
245
257
  if(!active_market){ return }
246
258
  onViewAdditionalMarkets(tournament.tournament_id, 'tournament');
@@ -253,6 +265,7 @@ const TournamentMarket = ({ tournament, league, markets, latest_trades, best_ava
253
265
  <Text size={12} color={Colors.brand.electric} weight='semibold'>${liquidity.toFixed()} {open_order_count} Orders</Text>
254
266
  </View>
255
267
  </TouchableOpacity>
268
+ :<View style={{flex:1}} />}
256
269
  <TouchableOpacity style={{ flexDirection:'row', alignItems:'center', backgroundColor:Colors.shades.white, borderWidth:1, borderColor:Colors.shades.shade600, borderRadius:4, padding:10, ...view_styles.float }} onPress={() => setShowMarkets(!show_markets)}>
257
270
  <Text style={{ marginRight:10 }} size={14} color={Colors.brand.midnight}>{active_market?.type == 'Stat' ? active_market.stat_label : active_market?.type}</Text>
258
271
  <Icons.ChevronIcon color={Colors.brand.midnight} size={14} />
@@ -5,6 +5,7 @@ import AthleteTournamentMarket from './components/AthleteTournamentMarket';
5
5
  import TeamEventList from './components/TeamEventList';
6
6
  import TournamentMarket from './components/TournamentMarket';
7
7
  import MatchMarket from './components/MatchMarket';
8
+ import TournamentList from './components/TournamentList';
8
9
 
9
10
  export default {
10
11
  TeamEventMarket,
@@ -13,5 +14,6 @@ export default {
13
14
  AthleteTournamentMarket,
14
15
  TeamEventList,
15
16
  TournamentMarket,
16
- MatchMarket
17
+ MatchMarket,
18
+ TournamentList
17
19
  }