be-components 3.0.3 → 3.0.5
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.
- package/lib/commonjs/Components/Button.js +6 -4
- package/lib/commonjs/Components/Button.js.map +1 -1
- package/lib/commonjs/Components/ConfirmationModal.js +83 -0
- package/lib/commonjs/Components/ConfirmationModal.js.map +1 -0
- package/lib/commonjs/MarketComponents/api/index.js +107 -20
- package/lib/commonjs/MarketComponents/api/index.js.map +1 -1
- package/lib/commonjs/MarketComponents/components/BestAvailableOrderCard.js +152 -0
- package/lib/commonjs/MarketComponents/components/BestAvailableOrderCard.js.map +1 -0
- package/lib/commonjs/MarketComponents/components/ContestOrderStatsCard.js +241 -0
- package/lib/commonjs/MarketComponents/components/ContestOrderStatsCard.js.map +1 -0
- package/lib/commonjs/MarketComponents/components/MyOrderList/api/index.js +503 -0
- package/lib/commonjs/MarketComponents/components/MyOrderList/api/index.js.map +1 -0
- package/lib/commonjs/MarketComponents/components/MyOrderList/index.js +276 -0
- package/lib/commonjs/MarketComponents/components/MyOrderList/index.js.map +1 -0
- package/lib/commonjs/MarketComponents/components/OrderBook.js +200 -0
- package/lib/commonjs/MarketComponents/components/OrderBook.js.map +1 -0
- package/lib/commonjs/MarketComponents/components/OrderBookChart.js +276 -0
- package/lib/commonjs/MarketComponents/components/OrderBookChart.js.map +1 -0
- package/lib/commonjs/MarketComponents/components/OrderGradeBar.js +2 -1
- package/lib/commonjs/MarketComponents/components/OrderGradeBar.js.map +1 -1
- package/lib/commonjs/MarketComponents/index.js +11 -1
- package/lib/commonjs/MarketComponents/index.js.map +1 -1
- package/lib/commonjs/Socket/index.js +0 -1
- package/lib/commonjs/Socket/index.js.map +1 -1
- package/lib/module/Components/Button.js +6 -4
- package/lib/module/Components/Button.js.map +1 -1
- package/lib/module/Components/ConfirmationModal.js +76 -0
- package/lib/module/Components/ConfirmationModal.js.map +1 -0
- package/lib/module/MarketComponents/api/index.js +107 -20
- package/lib/module/MarketComponents/api/index.js.map +1 -1
- package/lib/module/MarketComponents/components/BestAvailableOrderCard.js +145 -0
- package/lib/module/MarketComponents/components/BestAvailableOrderCard.js.map +1 -0
- package/lib/module/MarketComponents/components/ContestOrderStatsCard.js +232 -0
- package/lib/module/MarketComponents/components/ContestOrderStatsCard.js.map +1 -0
- package/lib/module/MarketComponents/components/MyOrderList/api/index.js +496 -0
- package/lib/module/MarketComponents/components/MyOrderList/api/index.js.map +1 -0
- package/lib/module/MarketComponents/components/MyOrderList/index.js +268 -0
- package/lib/module/MarketComponents/components/MyOrderList/index.js.map +1 -0
- package/lib/module/MarketComponents/components/OrderBook.js +193 -0
- package/lib/module/MarketComponents/components/OrderBook.js.map +1 -0
- package/lib/module/MarketComponents/components/OrderBookChart.js +267 -0
- package/lib/module/MarketComponents/components/OrderBookChart.js.map +1 -0
- package/lib/module/MarketComponents/components/OrderGradeBar.js +2 -1
- package/lib/module/MarketComponents/components/OrderGradeBar.js.map +1 -1
- package/lib/module/MarketComponents/index.js +11 -1
- package/lib/module/MarketComponents/index.js.map +1 -1
- package/lib/module/Socket/index.js +0 -1
- package/lib/module/Socket/index.js.map +1 -1
- package/lib/typescript/src/Components/Button.d.ts.map +1 -1
- package/lib/typescript/src/Components/ConfirmationModal.d.ts +13 -0
- package/lib/typescript/src/Components/ConfirmationModal.d.ts.map +1 -0
- package/lib/typescript/src/MarketComponents/api/index.d.ts +9 -2
- package/lib/typescript/src/MarketComponents/api/index.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/components/BestAvailableOrderCard.d.ts +13 -0
- package/lib/typescript/src/MarketComponents/components/BestAvailableOrderCard.d.ts.map +1 -0
- package/lib/typescript/src/MarketComponents/components/ContestOrderStatsCard.d.ts +15 -0
- package/lib/typescript/src/MarketComponents/components/ContestOrderStatsCard.d.ts.map +1 -0
- package/lib/typescript/src/MarketComponents/components/MyOrderList/api/index.d.ts +18 -0
- package/lib/typescript/src/MarketComponents/components/MyOrderList/api/index.d.ts.map +1 -0
- package/lib/typescript/src/MarketComponents/components/MyOrderList/index.d.ts +10 -0
- package/lib/typescript/src/MarketComponents/components/MyOrderList/index.d.ts.map +1 -0
- package/lib/typescript/src/MarketComponents/components/OrderBook.d.ts +13 -0
- package/lib/typescript/src/MarketComponents/components/OrderBook.d.ts.map +1 -0
- package/lib/typescript/src/MarketComponents/components/OrderBookChart.d.ts +16 -0
- package/lib/typescript/src/MarketComponents/components/OrderBookChart.d.ts.map +1 -0
- package/lib/typescript/src/MarketComponents/components/OrderGradeBar.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/index.d.ts +57 -0
- package/lib/typescript/src/MarketComponents/index.d.ts.map +1 -1
- package/lib/typescript/src/Socket/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Components/Button.tsx +2 -3
- package/src/Components/ConfirmationModal.tsx +57 -0
- package/src/MarketComponents/api/index.ts +80 -15
- package/src/MarketComponents/components/BestAvailableOrderCard.tsx +84 -0
- package/src/MarketComponents/components/ContestOrderStatsCard.tsx +154 -0
- package/src/MarketComponents/components/MyOrderList/api/index.ts +406 -0
- package/src/MarketComponents/components/MyOrderList/index.tsx +192 -0
- package/src/MarketComponents/components/OrderBook.tsx +99 -0
- package/src/MarketComponents/components/OrderBookChart.tsx +139 -0
- package/src/MarketComponents/components/OrderGradeBar.tsx +2 -1
- package/src/MarketComponents/index.tsx +11 -1
- package/src/Socket/index.tsx +0 -1
- package/src/types.d.ts +56 -0
|
@@ -34,6 +34,30 @@ declare const _default: {
|
|
|
34
34
|
onActivate?: (event_id: string, event_type: string) => void;
|
|
35
35
|
activate_loading?: boolean;
|
|
36
36
|
}) => import("react").JSX.Element>;
|
|
37
|
+
TeamTournamentMarket: ({ tournament, show_event, hide_liquidity, hide_stat_banner, width, team, market, event_order_stats, default_price_view, latest_trades, show_grades, best_available_orders, onOrder, onView, onTradeLongPress }: {
|
|
38
|
+
tournament: import("../types").TournamentProps;
|
|
39
|
+
event_type: "team" | "tournament" | "match";
|
|
40
|
+
team: import("../types").TeamProps;
|
|
41
|
+
hide_stat_banner?: boolean;
|
|
42
|
+
width?: number;
|
|
43
|
+
market: import("../types").MarketProps;
|
|
44
|
+
show_event?: boolean;
|
|
45
|
+
hide_liquidity?: boolean;
|
|
46
|
+
latest_trades: import("../types").TradeProps[];
|
|
47
|
+
best_available_orders: import("../types").BestAvailableOrderProps[];
|
|
48
|
+
event_order_stats: import("../types").EventOrderStatProps[];
|
|
49
|
+
default_price_view: "last_trade" | "best_available";
|
|
50
|
+
onOrder: (order: import("../types").OrderProps) => void;
|
|
51
|
+
show_grades?: boolean;
|
|
52
|
+
onView: (data: {
|
|
53
|
+
event_id: string;
|
|
54
|
+
event_type: string;
|
|
55
|
+
market_id: string;
|
|
56
|
+
side_type: "team";
|
|
57
|
+
side_id: string;
|
|
58
|
+
}) => void;
|
|
59
|
+
onTradeLongPress: (trade: import("../types").TradeProps) => void;
|
|
60
|
+
}) => import("react").JSX.Element;
|
|
37
61
|
AthleteMarket: import("react").MemoExoticComponent<({ event, show_event, league, hide_liquidity, hide_stat_banner, width, athlete, market, event_order_stats, default_price_view, latest_trades, show_grades, best_available_orders, onOrder, onView, onTradeLongPress }: {
|
|
38
62
|
event: import("../types").EventProps;
|
|
39
63
|
event_type: "team" | "tournament" | "match";
|
|
@@ -59,6 +83,14 @@ declare const _default: {
|
|
|
59
83
|
}) => void;
|
|
60
84
|
onTradeLongPress: (trade: import("../types").TradeProps) => void;
|
|
61
85
|
}) => import("react").JSX.Element>;
|
|
86
|
+
BestAvailableOrderCard: ({ order, player_id, show_grade, onBuyNow, onShareOrder, onCancelOrder }: {
|
|
87
|
+
player_id?: string;
|
|
88
|
+
order: import("../types").BestAvailableOrderProps;
|
|
89
|
+
show_grade?: boolean;
|
|
90
|
+
onShareOrder?: (order: import("../types").BestAvailableOrderProps) => void;
|
|
91
|
+
onBuyNow?: (order: import("../types").OrderProps) => void;
|
|
92
|
+
onCancelOrder?: (order_id: string) => void;
|
|
93
|
+
}) => import("react").JSX.Element;
|
|
62
94
|
EventMarket: ({ width, event, hide_liquidity, market, latest_trades, best_available_orders, hide_market_banner, event_order_stats, show_grades, default_price_view, onOrder, onView, onTradeLongPress }: {
|
|
63
95
|
event: import("../types").EventProps;
|
|
64
96
|
width?: number;
|
|
@@ -78,6 +110,25 @@ declare const _default: {
|
|
|
78
110
|
}) => void;
|
|
79
111
|
onTradeLongPress: (trade: import("../types").TradeProps) => void;
|
|
80
112
|
}) => import("react").JSX.Element;
|
|
113
|
+
OrderBookCard: ({ player_id, orders, market, show_orders, show_grades, onBuy }: {
|
|
114
|
+
player_id?: string;
|
|
115
|
+
orders: import("../types").OrderProps[];
|
|
116
|
+
market: import("../types").MarketProps;
|
|
117
|
+
show_grades?: boolean;
|
|
118
|
+
show_orders?: boolean;
|
|
119
|
+
onBuy: (order: import("../types").OrderProps) => void;
|
|
120
|
+
}) => import("react").JSX.Element;
|
|
121
|
+
OrderBookChart: ({ order_book, market, active_var_1, onSelectVar1, away_label, home_label, side_id }: {
|
|
122
|
+
order_book: import("../types").OrderBookProps;
|
|
123
|
+
onSelectVar1: (var_1: number) => void;
|
|
124
|
+
active_var_1: number;
|
|
125
|
+
market: import("../types").MarketProps;
|
|
126
|
+
market_type: "FOR_MONEY" | "FREE";
|
|
127
|
+
side_type?: string;
|
|
128
|
+
side_id?: string;
|
|
129
|
+
away_label?: string;
|
|
130
|
+
home_label?: string;
|
|
131
|
+
}) => import("react").JSX.Element;
|
|
81
132
|
AthleteTournamentMarket: ({ tournament, show_event, hide_liquidity, hide_stat_banner, width, athlete, market, event_order_stats, default_price_view, latest_trades, show_grades, best_available_orders, onOrder, onView, onTradeLongPress }: {
|
|
82
133
|
tournament: import("../types").TournamentProps;
|
|
83
134
|
event_type: "team" | "tournament" | "match";
|
|
@@ -207,6 +258,12 @@ declare const _default: {
|
|
|
207
258
|
onTradeLongPress?: (trade: import("../types").TradeProps) => void;
|
|
208
259
|
onViewAdditionalMarkets?: (event_id: string, event_type: string) => void;
|
|
209
260
|
}) => import("react").JSX.Element;
|
|
261
|
+
MyOrderList: ({ player_id, market_type, access_token, distinct_id }: {
|
|
262
|
+
player_id: string;
|
|
263
|
+
access_token?: string;
|
|
264
|
+
distinct_id?: string;
|
|
265
|
+
market_type: "FOR_MONEY" | "FREE";
|
|
266
|
+
}) => import("react").JSX.Element;
|
|
210
267
|
};
|
|
211
268
|
export default _default;
|
|
212
269
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/MarketComponents/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/MarketComponents/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;qBA4B6rB,CAAC;mBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAN3sB,CAAJ;qBAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAM0lB,CAAC;mBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAAjmB,CAAC;qBAAkB,CAAC;;;;;;;;;;;;;AAdlD,wBAcC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Socket/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAIlD,KAAK,kBAAkB,GAAG;IACtB,YAAY,CAAC,EAAC,MAAM,CAAC;IACrB,WAAW,CAAC,EAAC,MAAM,CAAC;IACpB,SAAS,EAAC,MAAM,IAAI,CAAC;IACrB,YAAY,EAAC,MAAM,IAAI,CAAC;IACxB,aAAa,EAAC,CAAC,KAAK,EAAC,GAAG,KAAK,IAAI,CAAC;IAClC,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC9B,CAAA;AAED,QAAA,MAAM,aAAa,6FAA6F,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Socket/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAIlD,KAAK,kBAAkB,GAAG;IACtB,YAAY,CAAC,EAAC,MAAM,CAAC;IACrB,WAAW,CAAC,EAAC,MAAM,CAAC;IACpB,SAAS,EAAC,MAAM,IAAI,CAAC;IACrB,YAAY,EAAC,MAAM,IAAI,CAAC;IACxB,aAAa,EAAC,CAAC,KAAK,EAAC,GAAG,KAAK,IAAI,CAAC;IAClC,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC9B,CAAA;AAED,QAAA,MAAM,aAAa,6FAA6F,kBAAkB,sBAiFjI,CAAA;AAED,eAAe,aAAa,CAAA"}
|
package/package.json
CHANGED
|
@@ -38,7 +38,8 @@ const Button = ({ title, style, title_weight, disabled, loading, title_size, pad
|
|
|
38
38
|
|
|
39
39
|
<TouchableOpacity
|
|
40
40
|
disabled={disabled}
|
|
41
|
-
style={{ ...getBorderRadiusOverride(), flexDirection:'row', alignItems:'center', padding:padding??8, backgroundColor:backgroundColor??Colors.
|
|
41
|
+
style={{ ...getBorderRadiusOverride(), flexDirection:'row', alignItems:'center', justifyContent:'center', flex:1, padding:padding??8, backgroundColor:backgroundColor??Colors.brand.electric, borderWidth:borderWidth??0, borderColor:borderColor, ...input_style }}
|
|
42
|
+
onPress={(ev) => onPress(ev)}>
|
|
42
43
|
{avatar_url ?
|
|
43
44
|
<Image
|
|
44
45
|
source={{ uri: avatar_url }}
|
|
@@ -46,7 +47,6 @@ const Button = ({ title, style, title_weight, disabled, loading, title_size, pad
|
|
|
46
47
|
resizeMode='cover'
|
|
47
48
|
/>
|
|
48
49
|
:<></>}
|
|
49
|
-
{title ?
|
|
50
50
|
<View style={{ marginLeft:5, marginRight:5, flexGrow:1 }}>
|
|
51
51
|
<Text size={title_size??14} weight={title_weight ?? 'bold'} textAlign="center" color={title_color??Colors.brand.midnight}>{title}</Text>
|
|
52
52
|
{loading ?
|
|
@@ -55,7 +55,6 @@ const Button = ({ title, style, title_weight, disabled, loading, title_size, pad
|
|
|
55
55
|
</View>
|
|
56
56
|
:<></>}
|
|
57
57
|
</View>
|
|
58
|
-
:<></>}
|
|
59
58
|
</TouchableOpacity>
|
|
60
59
|
|
|
61
60
|
)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Modal, View } from "react-native"
|
|
3
|
+
import { view_styles } from '../constants/styles';
|
|
4
|
+
import Text from './Text';
|
|
5
|
+
import Button from './Button';
|
|
6
|
+
import Colors from '../constants/colors';
|
|
7
|
+
|
|
8
|
+
type ConfirmationModalProps = {
|
|
9
|
+
visible:boolean,
|
|
10
|
+
title?:string,
|
|
11
|
+
description?:string,
|
|
12
|
+
confirm_title?:string,
|
|
13
|
+
cancel_title?:string,
|
|
14
|
+
onCancel: () => void,
|
|
15
|
+
onConfirm: () => void
|
|
16
|
+
}
|
|
17
|
+
const ConfirmationModal = ({ visible, title, description, confirm_title, cancel_title, onCancel, onConfirm }:ConfirmationModalProps) => {
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<Modal
|
|
21
|
+
visible={visible}
|
|
22
|
+
animationType='slide'
|
|
23
|
+
transparent
|
|
24
|
+
style={{ flex:1 }}>
|
|
25
|
+
<View style={{ flex:1, justifyContent:'flex-end', backgroundColor:Colors.shades.black_faded }}>
|
|
26
|
+
<View style={{ ...view_styles.section }}>
|
|
27
|
+
<View style={{ ...view_styles.section_header, padding:20 }}>
|
|
28
|
+
<Text theme='header'>{title ?? 'Are you sure?'}</Text>
|
|
29
|
+
</View>
|
|
30
|
+
<View style={{ ...view_styles.section_body, minHeight:100 }}>
|
|
31
|
+
<Text size={14} color={Colors.brand.midnight} textAlign='center' weight='semibold'>{description}</Text>
|
|
32
|
+
</View>
|
|
33
|
+
<View style={{ ...view_styles.section_footer }}>
|
|
34
|
+
<Button
|
|
35
|
+
title={cancel_title ?? 'CANCEL'}
|
|
36
|
+
style={{ flex:1 }}
|
|
37
|
+
padding={15}
|
|
38
|
+
title_color={Colors.shades.white}
|
|
39
|
+
backgroundColor={Colors.utility.error}
|
|
40
|
+
onPress={() => onCancel()}
|
|
41
|
+
/>
|
|
42
|
+
<Button
|
|
43
|
+
title={confirm_title ?? 'CONFIRM'}
|
|
44
|
+
style={{ flex:2, marginLeft:5 }}
|
|
45
|
+
padding={15}
|
|
46
|
+
title_color={Colors.shades.white}
|
|
47
|
+
backgroundColor={Colors.utility.success}
|
|
48
|
+
onPress={() => onConfirm()}
|
|
49
|
+
/>
|
|
50
|
+
</View>
|
|
51
|
+
</View>
|
|
52
|
+
</View>
|
|
53
|
+
</Modal>
|
|
54
|
+
)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export default ConfirmationModal
|
|
@@ -37,6 +37,72 @@ const MarketComponentApi = {
|
|
|
37
37
|
return []
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
|
+
getMyAction:async():Promise<OrderProps[]> => {
|
|
41
|
+
try {
|
|
42
|
+
const resp = await axios.get(`${MK_SVC_API}/v1/orders/action/me`);
|
|
43
|
+
return resp.data.orders
|
|
44
|
+
} catch (e) {
|
|
45
|
+
console.log(e);
|
|
46
|
+
return []
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
getMyHistory: async(player_id:string, range:number):Promise<OrderProps[]> => {
|
|
50
|
+
try {
|
|
51
|
+
const resp = await axios.get(`${MK_SVC_API}/v1/orders/history/player/${player_id}?range=${range}`);
|
|
52
|
+
return resp.data.orders
|
|
53
|
+
} catch (e) {
|
|
54
|
+
console.log(e)
|
|
55
|
+
return []
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
},
|
|
59
|
+
getEventsByEventIds: async(event_ids:string[]):Promise<EventProps[]> => {
|
|
60
|
+
try {
|
|
61
|
+
if(event_ids.length == 0){ return [] }
|
|
62
|
+
const resp = await axios.post(`${EVENT_SVC_API}/v1/events/bulk/get`, { attribute:'event_id', values: event_ids })
|
|
63
|
+
return resp.data.events
|
|
64
|
+
} catch (e) {
|
|
65
|
+
return []
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
getMatchesByMatchIds: async(match_ids:string[]):Promise<MatchProps[]> => {
|
|
69
|
+
try {
|
|
70
|
+
if(match_ids.length == 0){ return [] }
|
|
71
|
+
const resp = await axios.post(`${EVENT_SVC_API}/v1/matches/bulk/get`, { attribute: 'match_id', values: match_ids })
|
|
72
|
+
return resp.data.matches
|
|
73
|
+
} catch (e) {
|
|
74
|
+
return []
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
},
|
|
78
|
+
getAthletesByIds : async(athlete_ids:string[]) => {
|
|
79
|
+
try {
|
|
80
|
+
if(athlete_ids.length == 0){ return [] }
|
|
81
|
+
const resp = await axios.post(`${EVENT_SVC_API}/v1/athletes/bulk/get`, { attribute: 'athlete_id', values: athlete_ids })
|
|
82
|
+
return resp.data.athletes
|
|
83
|
+
} catch (e) {
|
|
84
|
+
return []
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
getTournamentsByTournamentIds: async(tournament_ids:string[]):Promise<TournamentProps[]> => {
|
|
88
|
+
try {
|
|
89
|
+
if(tournament_ids.length == 0){ return [] }
|
|
90
|
+
const resp = await axios.post(`${EVENT_SVC_API}/v1/tournaments/bulk/get`, { attribute: 'event_id', values: tournament_ids })
|
|
91
|
+
return resp.data.tournaments
|
|
92
|
+
} catch (e) {
|
|
93
|
+
return []
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
getTeamsByIds: async(team_ids:string[]) => {
|
|
97
|
+
try {
|
|
98
|
+
if(team_ids.length == 0){ return [] }
|
|
99
|
+
const resp = await axios.post(`${EVENT_SVC_API}/v1/teams/bulk/get`, { attribute:'team_id', values: team_ids })
|
|
100
|
+
return resp.data.teams
|
|
101
|
+
} catch (e) {
|
|
102
|
+
return []
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
},
|
|
40
106
|
getLeagues:async():Promise<LeagueProps[]> => {
|
|
41
107
|
try {
|
|
42
108
|
const resp = await axios.get(`${EVENT_SVC_API}/v1/leagues`);
|
|
@@ -71,16 +137,6 @@ const MarketComponentApi = {
|
|
|
71
137
|
return []
|
|
72
138
|
}
|
|
73
139
|
},
|
|
74
|
-
getTeamsByIds: async(team_ids:string[]):Promise<TeamProps[]> => {
|
|
75
|
-
try {
|
|
76
|
-
if(team_ids.length == 0){ return [] }
|
|
77
|
-
const resp = await axios.post(`${EVENT_SVC_API}/v1/teams/bulk/get`, { attribute:'team_id', values:team_ids });
|
|
78
|
-
return resp.data.teams
|
|
79
|
-
} catch (e) {
|
|
80
|
-
console.log(e);
|
|
81
|
-
return []
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
140
|
getMatchesByTournament: async(tournament_id:string):Promise<MatchProps[]> => {
|
|
85
141
|
try {
|
|
86
142
|
const resp = await axios.get(`${EVENT_SVC_API}/v1/matches/tournament/${tournament_id}`);
|
|
@@ -90,13 +146,12 @@ const MarketComponentApi = {
|
|
|
90
146
|
return[]
|
|
91
147
|
}
|
|
92
148
|
},
|
|
93
|
-
|
|
149
|
+
cancelOrders: async(order_ids:string[]):Promise<OrderProps[]> => {
|
|
94
150
|
try {
|
|
95
|
-
if(
|
|
96
|
-
const resp = await axios.post(`${
|
|
97
|
-
return resp.data.
|
|
151
|
+
if(order_ids.length == 0){ return [] }
|
|
152
|
+
const resp = await axios.post(`${MK_SVC_API}/v1/orders/bulk/cancel`, { order_ids });
|
|
153
|
+
return resp.data.orders
|
|
98
154
|
} catch (e) {
|
|
99
|
-
console.log(e)
|
|
100
155
|
return []
|
|
101
156
|
}
|
|
102
157
|
},
|
|
@@ -140,6 +195,16 @@ const MarketComponentHelpers = {
|
|
|
140
195
|
if(odds < 0){ return `${new_odds}` }
|
|
141
196
|
return `+${new_odds}`
|
|
142
197
|
},
|
|
198
|
+
calcAmericanOddsFromProbability: (probability:number) => {
|
|
199
|
+
let p = probability*100; //Convert to whole number
|
|
200
|
+
if (p >= 100){ return -99999 }
|
|
201
|
+
if(p === 0){ return 9999 }
|
|
202
|
+
if(p === 50){ return 100 }
|
|
203
|
+
if(p < 50){
|
|
204
|
+
return (100/(p/100))-100
|
|
205
|
+
}
|
|
206
|
+
return (p/(1-(p/100)))*-1
|
|
207
|
+
},
|
|
143
208
|
getTournamentSideIds: (market:MarketProps, side_option:MarketSideOptionProps, athlete?:AthleteProps, team?:TeamProps) => {
|
|
144
209
|
const o_side = market.side_options.find(so => so.side != side_option.side);
|
|
145
210
|
if(!o_side){ return undefined }
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View, TouchableOpacity } from "react-native"
|
|
3
|
+
import type { BestAvailableOrderProps, OrderProps } from "../../types"
|
|
4
|
+
import { Icons, Text } from '../../Components';
|
|
5
|
+
import Colors from '../../constants/colors';
|
|
6
|
+
import OrderGradeBar from './OrderGradeBar';
|
|
7
|
+
import { MarketComponentHelpers } from '../api';
|
|
8
|
+
import { view_styles } from '../../constants/styles';
|
|
9
|
+
import moment from 'moment-mini';
|
|
10
|
+
|
|
11
|
+
type BestAvailableOrderCardProps = {
|
|
12
|
+
player_id?:string,
|
|
13
|
+
order:BestAvailableOrderProps,
|
|
14
|
+
show_grade?:boolean,
|
|
15
|
+
onShareOrder?:(order:BestAvailableOrderProps) => void,
|
|
16
|
+
onBuyNow?: (order:OrderProps) => void,
|
|
17
|
+
onCancelOrder?:(order_id:string) => void
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const BestAvailableOrderCard = ({ order, player_id, show_grade, onBuyNow, onShareOrder, onCancelOrder }:BestAvailableOrderCardProps) => {
|
|
21
|
+
|
|
22
|
+
const handleBuyNow = () => {
|
|
23
|
+
if(!onBuyNow){ return }
|
|
24
|
+
onBuyNow({
|
|
25
|
+
...order,
|
|
26
|
+
be_type:'market',
|
|
27
|
+
market_type: 'FOR_MONEY',
|
|
28
|
+
collar_pct: 0,
|
|
29
|
+
status: 'approved',
|
|
30
|
+
available_for_parlays: false,
|
|
31
|
+
commission_pct: 0,
|
|
32
|
+
resolution_status: 'inprogress',
|
|
33
|
+
position_ids: [],
|
|
34
|
+
positions: [],
|
|
35
|
+
side_type: order.side_type as 'team'|'athlete',
|
|
36
|
+
event_type: order.event_type as 'team'|'tournament'|'match',
|
|
37
|
+
open_amt: Math.floor(order.open_amt * 100) / 100,
|
|
38
|
+
influencer_id:undefined,
|
|
39
|
+
influence_type: undefined,
|
|
40
|
+
draft_liquidity: Math.floor(order.open_amt * 100)/100,
|
|
41
|
+
tip_pct:undefined,
|
|
42
|
+
tip_type:undefined,
|
|
43
|
+
expire_datetime: moment().add(1, 'minutes'),
|
|
44
|
+
order_type: 'limit',
|
|
45
|
+
buy_sell_ind: 'buy'
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return (
|
|
50
|
+
<View style={{ ...view_styles.section }}>
|
|
51
|
+
<View style={{ ...view_styles.section_header, backgroundColor:Colors.shades.shade100 }}>
|
|
52
|
+
<Text style={{ flexGrow:1 }} size={14} color={Colors.brand.midnight} weight='bold' textAlign='center'>{order.title}</Text>
|
|
53
|
+
</View>
|
|
54
|
+
<View style={{ padding:15 }}>
|
|
55
|
+
<Text style={{ margin:3 }} size={12} color={Colors.brand.midnight} weight='bold' textAlign='center'>${order.open_amt.toFixed(2)} to win ${order.potential_winnings.toFixed(2)}</Text>
|
|
56
|
+
<Text style={{ margin:3 }} size={12} color={Colors.shades.black} weight='bold' textAlign='center'>PRICE</Text>
|
|
57
|
+
<Text style={{ margin:3 }} size={12} color={Colors.brand.electric} weight='bold' textAlign='center'>{(order.probability * 100).toFixed(2)}% ({MarketComponentHelpers.getOddsLabel(order.odds)})</Text>
|
|
58
|
+
|
|
59
|
+
<View style={{ justifyContent:'center', alignItems:'center', padding:5 }}>
|
|
60
|
+
<OrderGradeBar mask={show_grade ? false : true} grade={order.grade} view_type='card' />
|
|
61
|
+
</View>
|
|
62
|
+
</View>
|
|
63
|
+
<View style={{ flexDirection:'row', borderBottomLeftRadius:10, borderBottomRightRadius:10 }}>
|
|
64
|
+
{onShareOrder ?
|
|
65
|
+
<TouchableOpacity style={{ padding:10, backgroundColor:Colors.brand.electric, borderBottomLeftRadius:10 }} onPress={() => onShareOrder(order)}>
|
|
66
|
+
<Icons.ShareIcon color={Colors.shades.white} size={18}/>
|
|
67
|
+
</TouchableOpacity>
|
|
68
|
+
:<></>}
|
|
69
|
+
{player_id == order.player_id && onCancelOrder ?
|
|
70
|
+
<TouchableOpacity style={{ flex:1, padding:10, backgroundColor:Colors.utility.error, borderBottomRightRadius:10 }} onPress={() => onCancelOrder(order.order_id)}>
|
|
71
|
+
<Text size={14} color={Colors.shades.white} weight='bold' textAlign='center'>CANCEL</Text>
|
|
72
|
+
</TouchableOpacity>
|
|
73
|
+
:
|
|
74
|
+
<TouchableOpacity style={{ flex:1, padding:10, backgroundColor:Colors.utility.success, borderBottomRightRadius:10 }} onPress={() => handleBuyNow()}>
|
|
75
|
+
<Text size={14} color={Colors.shades.white} weight='bold' textAlign='center'>BUY</Text>
|
|
76
|
+
</TouchableOpacity>
|
|
77
|
+
}
|
|
78
|
+
</View>
|
|
79
|
+
</View>
|
|
80
|
+
)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
export default BestAvailableOrderCard
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { FlatList, Image, TouchableOpacity, View } from "react-native"
|
|
3
|
+
import type { HedgeProps, LeagueProps, OrderProps, OrderStatsProps } from '../../types';
|
|
4
|
+
import { Button, Icons, Text } from '../../Components';
|
|
5
|
+
import Colors from '../../constants/colors';
|
|
6
|
+
import { view_styles } from '../../constants/styles';
|
|
7
|
+
import ConfirmationModal from '../../Components/ConfirmationModal';
|
|
8
|
+
import { MarketComponentApi } from '../api';
|
|
9
|
+
|
|
10
|
+
type ContestOrderStatsCardProps = {
|
|
11
|
+
player_order_stat: OrderStatsProps,
|
|
12
|
+
contest_title:string,
|
|
13
|
+
league?:LeagueProps,
|
|
14
|
+
hedges:HedgeProps[],
|
|
15
|
+
market_type:'FOR_MONEY'|'FREE',
|
|
16
|
+
contest_time_detail:string,
|
|
17
|
+
onPress: (player_order_stat:OrderStatsProps) => void,
|
|
18
|
+
onOrdersUpdate: (orders:OrderProps[]) => void
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const ContestOrderStatsCard = ({ player_order_stat, league, market_type, contest_time_detail, hedges, contest_title, onPress, onOrdersUpdate }:ContestOrderStatsCardProps) => {
|
|
22
|
+
const [ confirm_data, setConfirmData ] = useState<{
|
|
23
|
+
visible:boolean,
|
|
24
|
+
title?:string,
|
|
25
|
+
description?:string,
|
|
26
|
+
confirm_title?:string,
|
|
27
|
+
cancel_title?:string
|
|
28
|
+
}>({
|
|
29
|
+
visible:false
|
|
30
|
+
});
|
|
31
|
+
const [ action_loading, setActionLoading ] = useState(false);
|
|
32
|
+
const [ show_titles, setShowTitles ] = useState(false);
|
|
33
|
+
|
|
34
|
+
const handleCardPress = () => {
|
|
35
|
+
if(!onPress){ return }
|
|
36
|
+
onPress(player_order_stat)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const renderTitles = (data:{item:string, index:number}) => {
|
|
40
|
+
return (
|
|
41
|
+
<View style={{ ...view_styles.body_row, padding:10, borderBottomWidth:1, borderColor:Colors.shades.shade600 }}>
|
|
42
|
+
<Text size={14} color={Colors.brand.midnight} weight='semibold'>{data.item}</Text>
|
|
43
|
+
</View>
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const handleCancelOrders = async(order_ids:string[]) => {
|
|
48
|
+
setActionLoading(true);
|
|
49
|
+
const orders = await MarketComponentApi.cancelOrders(order_ids)
|
|
50
|
+
setActionLoading(false);
|
|
51
|
+
onOrdersUpdate(orders);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const cl = market_type == 'FOR_MONEY' ? '$' : 'E'
|
|
55
|
+
const hedged_amt = hedges.reduce((a,b) => a + b.cash_rcvd, 0)
|
|
56
|
+
|
|
57
|
+
return (
|
|
58
|
+
<View>
|
|
59
|
+
<View style={{ ...view_styles.section, margin:5 }}>
|
|
60
|
+
<TouchableOpacity style={{ ...view_styles.section_header }} onPress={() => handleCardPress()}>
|
|
61
|
+
{league ?
|
|
62
|
+
<Image
|
|
63
|
+
source={{ uri: league.league_image }}
|
|
64
|
+
style={{ height:25, width:25 }}
|
|
65
|
+
resizeMode='cover'
|
|
66
|
+
/>
|
|
67
|
+
:<></>}
|
|
68
|
+
<View style={{ flex:1, marginLeft:10, marginRight:10 }}>
|
|
69
|
+
<Text theme='header_2'>{contest_title}</Text>
|
|
70
|
+
<Text theme='body_2' style={{ marginTop:3 }}>{contest_time_detail}</Text>
|
|
71
|
+
</View>
|
|
72
|
+
<Icons.ChevronIcon direction='right' color={Colors.brand.midnight} size={12} />
|
|
73
|
+
</TouchableOpacity>
|
|
74
|
+
<View style={{ ...view_styles.section_body }}>
|
|
75
|
+
<View style={{ flexDirection:'row', flexWrap:'wrap'}}>
|
|
76
|
+
{player_order_stat.open_amt > 0 ?
|
|
77
|
+
<View nativeID='open_orders_lozenge' style={{ borderRadius:100, backgroundColor:Colors.shades.shade100, padding:5, paddingRight:10, paddingLeft:10 }}>
|
|
78
|
+
<Text size={12} weight='semibold' color={Colors.brand.cyan}>OPEN: {cl}{player_order_stat.open_amt.toFixed(2)}</Text>
|
|
79
|
+
</View>
|
|
80
|
+
:<></>}
|
|
81
|
+
{player_order_stat.unresolved_stake + player_order_stat.resolved_stake > 0 ?
|
|
82
|
+
<View nativeID='stake_lozenge' style={{ borderRadius:100, backgroundColor:Colors.shades.shade100, padding:5, paddingRight:10, paddingLeft:10 }}>
|
|
83
|
+
<Text size={12} weight='semibold' color={Colors.brand.midnight}>POSITION: {cl}{(player_order_stat.unresolved_stake + player_order_stat.resolved_stake).toFixed(2)}</Text>
|
|
84
|
+
</View>
|
|
85
|
+
:<></>}
|
|
86
|
+
{hedges.length > 0 && hedged_amt > 0 ?
|
|
87
|
+
<View nativeID='stake_lozenge' style={{ borderRadius:100, backgroundColor:Colors.highlights.highlight400Faded, padding:5, paddingRight:10, paddingLeft:10 }}>
|
|
88
|
+
<Text size={12} weight='semibold' color={Colors.brand.midnight}>HEDGED: {cl}{hedged_amt.toFixed(2)}</Text>
|
|
89
|
+
</View>
|
|
90
|
+
:<></>}
|
|
91
|
+
{player_order_stat.resolved_stake > 0 ?
|
|
92
|
+
<View nativeID='stake_lozenge' style={{ borderRadius:100, backgroundColor:Colors.shades.shade100, padding:5, paddingRight:10, paddingLeft:10 }}>
|
|
93
|
+
<Text size={12} weight='semibold' color={Colors.brand.midnight}>EARNED: {cl}{player_order_stat.earnings.toFixed(2)}</Text>
|
|
94
|
+
</View>
|
|
95
|
+
:<></>}
|
|
96
|
+
</View>
|
|
97
|
+
</View>
|
|
98
|
+
{show_titles && player_order_stat.unique_order_titles ?
|
|
99
|
+
<View style={{ ...view_styles.section_body, padding:10, borderTopWidth:1, borderColor:Colors.shades.shade600 }}>
|
|
100
|
+
<FlatList
|
|
101
|
+
data={player_order_stat.unique_order_titles}
|
|
102
|
+
renderItem={renderTitles}
|
|
103
|
+
keyExtractor={(item) => item}
|
|
104
|
+
/>
|
|
105
|
+
</View>
|
|
106
|
+
:<></>}
|
|
107
|
+
<View style={{ ...view_styles.section_footer, padding:10 }}>
|
|
108
|
+
<TouchableOpacity style={{ flexDirection:'row', flex:2, alignItems:'center' }} onPress={() => setShowTitles(!show_titles)}>
|
|
109
|
+
<View style={{ height:30, width:30, borderRadius:100, backgroundColor:Colors.shades.white, justifyContent:'center', alignItems:'center', ...view_styles.float }}>
|
|
110
|
+
<Icons.ChevronIcon direction={show_titles ? 'up' : 'down'} size={6} color={Colors.brand.electric} />
|
|
111
|
+
</View>
|
|
112
|
+
<Text size={14} color={Colors.brand.electric} style={{ marginLeft:5 }}>{show_titles?'Hide':'Show'} Unique Orders</Text>
|
|
113
|
+
</TouchableOpacity>
|
|
114
|
+
{player_order_stat.open_amt > 0 ?
|
|
115
|
+
<Button
|
|
116
|
+
title='CANCEL ORDERS'
|
|
117
|
+
title_color={Colors.shades.white}
|
|
118
|
+
style={{ opacity:action_loading ? 0.5 : 1, flexShrink:1 }}
|
|
119
|
+
loading={action_loading}
|
|
120
|
+
disabled={action_loading}
|
|
121
|
+
backgroundColor={Colors.utility.error}
|
|
122
|
+
onPress={async() => {
|
|
123
|
+
setConfirmData({
|
|
124
|
+
visible: true,
|
|
125
|
+
title: 'Are you sure?',
|
|
126
|
+
confirm_title:'CANCEL ALL',
|
|
127
|
+
cancel_title: 'KEEP ALL',
|
|
128
|
+
description: `Press cancel all to clear the remaining $${player_order_stat.open_amt.toFixed(2)} that is open on this event`
|
|
129
|
+
});
|
|
130
|
+
}}
|
|
131
|
+
/>
|
|
132
|
+
:<></>}
|
|
133
|
+
<View style={{ position:'absolute' }}>
|
|
134
|
+
<ConfirmationModal
|
|
135
|
+
visible={confirm_data.visible}
|
|
136
|
+
title={confirm_data.title}
|
|
137
|
+
description={confirm_data.description}
|
|
138
|
+
confirm_title={confirm_data.confirm_title}
|
|
139
|
+
cancel_title={confirm_data.cancel_title}
|
|
140
|
+
onCancel={() => setConfirmData({ visible:false })}
|
|
141
|
+
onConfirm={() => {
|
|
142
|
+
setConfirmData({ visible:false });
|
|
143
|
+
handleCancelOrders(player_order_stat.open_orders)
|
|
144
|
+
}}
|
|
145
|
+
/>
|
|
146
|
+
</View>
|
|
147
|
+
</View>
|
|
148
|
+
</View>
|
|
149
|
+
</View>
|
|
150
|
+
|
|
151
|
+
)
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export default ContestOrderStatsCard
|