be-components 7.5.6 → 7.5.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.
- package/lib/commonjs/AdServer/api/index.js +4 -2
- package/lib/commonjs/AdServer/api/index.js.map +1 -1
- package/lib/commonjs/AdServer/index.js +26 -13
- package/lib/commonjs/AdServer/index.js.map +1 -1
- package/lib/commonjs/ApiOverrides/index.js +3 -2
- package/lib/commonjs/ApiOverrides/index.js.map +1 -1
- package/lib/commonjs/BetRouter/api/index.js +69 -0
- package/lib/commonjs/BetRouter/api/index.js.map +1 -1
- package/lib/commonjs/BetRouter/components/ContestLiquidity.js +72 -11
- package/lib/commonjs/BetRouter/components/ContestLiquidity.js.map +1 -1
- package/lib/commonjs/BetRouter/components/admin/LeagueInfo.js +233 -2
- package/lib/commonjs/BetRouter/components/admin/LeagueInfo.js.map +1 -1
- package/lib/commonjs/BetRouter/components/admin/RouterMarkets.js +1555 -0
- package/lib/commonjs/BetRouter/components/admin/RouterMarkets.js.map +1 -0
- package/lib/commonjs/BetRouter/layouts/DesktopAdminLayout.js +16 -3
- package/lib/commonjs/BetRouter/layouts/DesktopAdminLayout.js.map +1 -1
- package/lib/commonjs/BetRouter/layouts/MobileAdminLayout.js +31 -2
- package/lib/commonjs/BetRouter/layouts/MobileAdminLayout.js.map +1 -1
- package/lib/commonjs/BetRouter/types/api-contracts.js +77 -0
- package/lib/commonjs/BetRouter/types/api-contracts.js.map +1 -1
- package/lib/commonjs/BetRouter/types/credentials.js +4 -0
- package/lib/commonjs/BetRouter/types/credentials.js.map +1 -1
- package/lib/commonjs/Components/ViewportObserver.js +9 -0
- package/lib/commonjs/Components/ViewportObserver.js.map +1 -1
- package/lib/commonjs/ProfileManager/Components/DOBManager.js +38 -2
- package/lib/commonjs/ProfileManager/Components/DOBManager.js.map +1 -1
- package/lib/commonjs/ProfileManager/Components/EmailManager.js +40 -2
- package/lib/commonjs/ProfileManager/Components/EmailManager.js.map +1 -1
- package/lib/commonjs/ProfileManager/Components/PhoneManager.js +38 -1
- package/lib/commonjs/ProfileManager/Components/PhoneManager.js.map +1 -1
- package/lib/commonjs/ProfileManager/Components/VouchCard.js +13 -3
- package/lib/commonjs/ProfileManager/Components/VouchCard.js.map +1 -1
- package/lib/module/AdServer/api/index.js +4 -2
- package/lib/module/AdServer/api/index.js.map +1 -1
- package/lib/module/AdServer/index.js +25 -12
- package/lib/module/AdServer/index.js.map +1 -1
- package/lib/module/ApiOverrides/index.js +3 -2
- package/lib/module/ApiOverrides/index.js.map +1 -1
- package/lib/module/BetRouter/api/index.js +69 -0
- package/lib/module/BetRouter/api/index.js.map +1 -1
- package/lib/module/BetRouter/components/ContestLiquidity.js +72 -11
- package/lib/module/BetRouter/components/ContestLiquidity.js.map +1 -1
- package/lib/module/BetRouter/components/admin/LeagueInfo.js +233 -3
- package/lib/module/BetRouter/components/admin/LeagueInfo.js.map +1 -1
- package/lib/module/BetRouter/components/admin/RouterMarkets.js +1548 -0
- package/lib/module/BetRouter/components/admin/RouterMarkets.js.map +1 -0
- package/lib/module/BetRouter/layouts/DesktopAdminLayout.js +16 -3
- package/lib/module/BetRouter/layouts/DesktopAdminLayout.js.map +1 -1
- package/lib/module/BetRouter/layouts/MobileAdminLayout.js +31 -2
- package/lib/module/BetRouter/layouts/MobileAdminLayout.js.map +1 -1
- package/lib/module/BetRouter/types/api-contracts.js +77 -0
- package/lib/module/BetRouter/types/api-contracts.js.map +1 -1
- package/lib/module/BetRouter/types/credentials.js +4 -0
- package/lib/module/BetRouter/types/credentials.js.map +1 -1
- package/lib/module/Components/ViewportObserver.js +9 -0
- package/lib/module/Components/ViewportObserver.js.map +1 -1
- package/lib/module/ProfileManager/Components/DOBManager.js +38 -2
- package/lib/module/ProfileManager/Components/DOBManager.js.map +1 -1
- package/lib/module/ProfileManager/Components/EmailManager.js +40 -2
- package/lib/module/ProfileManager/Components/EmailManager.js.map +1 -1
- package/lib/module/ProfileManager/Components/PhoneManager.js +38 -1
- package/lib/module/ProfileManager/Components/PhoneManager.js.map +1 -1
- package/lib/module/ProfileManager/Components/VouchCard.js +13 -3
- package/lib/module/ProfileManager/Components/VouchCard.js.map +1 -1
- package/lib/typescript/lib/commonjs/AdServer/api/index.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/AdServer/index.d.ts +1 -0
- package/lib/typescript/lib/commonjs/AdServer/index.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/ApiOverrides/index.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/BetRouter/api/index.d.ts +6 -0
- package/lib/typescript/lib/commonjs/BetRouter/api/index.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/BetRouter/components/ContestLiquidity.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/BetRouter/components/admin/LeagueInfo.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/BetRouter/components/admin/RouterMarkets.d.ts +4 -0
- package/lib/typescript/lib/commonjs/BetRouter/components/admin/RouterMarkets.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/BetRouter/layouts/DesktopAdminLayout.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/BetRouter/layouts/MobileAdminLayout.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/BetRouter/types/api-contracts.d.ts +77 -0
- package/lib/typescript/lib/commonjs/BetRouter/types/credentials.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/Components/ViewportObserver.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/ProfileManager/Components/DOBManager.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/ProfileManager/Components/EmailManager.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/ProfileManager/Components/PhoneManager.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/ProfileManager/Components/VouchCard.d.ts.map +1 -1
- package/lib/typescript/lib/module/AdServer/api/index.d.ts.map +1 -1
- package/lib/typescript/lib/module/AdServer/index.d.ts +9 -0
- package/lib/typescript/lib/module/AdServer/index.d.ts.map +1 -1
- package/lib/typescript/lib/module/ApiOverrides/index.d.ts.map +1 -1
- package/lib/typescript/lib/module/BetRouter/api/index.d.ts +6 -0
- package/lib/typescript/lib/module/BetRouter/api/index.d.ts.map +1 -1
- package/lib/typescript/lib/module/BetRouter/components/ContestLiquidity.d.ts.map +1 -1
- package/lib/typescript/lib/module/BetRouter/components/admin/LeagueInfo.d.ts.map +1 -1
- package/lib/typescript/lib/module/BetRouter/components/admin/RouterMarkets.d.ts +4 -0
- package/lib/typescript/lib/module/BetRouter/components/admin/RouterMarkets.d.ts.map +1 -0
- package/lib/typescript/lib/module/BetRouter/layouts/DesktopAdminLayout.d.ts.map +1 -1
- package/lib/typescript/lib/module/BetRouter/layouts/MobileAdminLayout.d.ts.map +1 -1
- package/lib/typescript/lib/module/BetRouter/types/api-contracts.d.ts +77 -0
- package/lib/typescript/lib/module/BetRouter/types/api-contracts.d.ts.map +1 -1
- package/lib/typescript/lib/module/BetRouter/types/credentials.d.ts.map +1 -1
- package/lib/typescript/lib/module/Components/ViewportObserver.d.ts.map +1 -1
- package/lib/typescript/lib/module/ProfileManager/Components/DOBManager.d.ts.map +1 -1
- package/lib/typescript/lib/module/ProfileManager/Components/EmailManager.d.ts.map +1 -1
- package/lib/typescript/lib/module/ProfileManager/Components/PhoneManager.d.ts.map +1 -1
- package/lib/typescript/lib/module/ProfileManager/Components/VouchCard.d.ts.map +1 -1
- package/lib/typescript/src/AdServer/api/index.d.ts.map +1 -1
- package/lib/typescript/src/AdServer/index.d.ts +12 -3
- package/lib/typescript/src/AdServer/index.d.ts.map +1 -1
- package/lib/typescript/src/ApiOverrides/index.d.ts.map +1 -1
- package/lib/typescript/src/BetRouter/api/index.d.ts +23 -2
- package/lib/typescript/src/BetRouter/api/index.d.ts.map +1 -1
- package/lib/typescript/src/BetRouter/components/ContestLiquidity.d.ts.map +1 -1
- package/lib/typescript/src/BetRouter/components/admin/LeagueInfo.d.ts.map +1 -1
- package/lib/typescript/src/BetRouter/components/admin/RouterMarkets.d.ts +4 -0
- package/lib/typescript/src/BetRouter/components/admin/RouterMarkets.d.ts.map +1 -0
- package/lib/typescript/src/BetRouter/layouts/DesktopAdminLayout.d.ts.map +1 -1
- package/lib/typescript/src/BetRouter/layouts/MobileAdminLayout.d.ts.map +1 -1
- package/lib/typescript/src/BetRouter/types/api-contracts.d.ts +93 -4
- package/lib/typescript/src/BetRouter/types/api-contracts.d.ts.map +1 -1
- package/lib/typescript/src/BetRouter/types/credentials.d.ts +1 -5
- package/lib/typescript/src/BetRouter/types/credentials.d.ts.map +1 -1
- package/lib/typescript/src/Components/ViewportObserver.d.ts.map +1 -1
- package/lib/typescript/src/ProfileManager/Components/DOBManager.d.ts.map +1 -1
- package/lib/typescript/src/ProfileManager/Components/EmailManager.d.ts.map +1 -1
- package/lib/typescript/src/ProfileManager/Components/PhoneManager.d.ts.map +1 -1
- package/lib/typescript/src/ProfileManager/Components/VouchCard.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/AdServer/api/index.ts +4 -2
- package/src/AdServer/index.tsx +64 -22
- package/src/ApiOverrides/index.ts +3 -2
- package/src/BetRouter/api/index.ts +101 -2
- package/src/BetRouter/components/ContestLiquidity.tsx +78 -11
- package/src/BetRouter/components/admin/LeagueInfo.tsx +231 -3
- package/src/BetRouter/components/admin/RouterMarkets.tsx +1238 -0
- package/src/BetRouter/layouts/DesktopAdminLayout.tsx +24 -1
- package/src/BetRouter/layouts/MobileAdminLayout.tsx +30 -2
- package/src/BetRouter/types/api-contracts.ts +100 -2
- package/src/BetRouter/types/credentials.ts +5 -6
- package/src/Components/ViewportObserver.tsx +13 -2
- package/src/ProfileManager/Components/DOBManager.tsx +14 -1
- package/src/ProfileManager/Components/EmailManager.tsx +16 -1
- package/src/ProfileManager/Components/PhoneManager.tsx +14 -0
- package/src/ProfileManager/Components/VouchCard.tsx +12 -4
- package/src/types.d.ts +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VouchCard.d.ts","sourceRoot":"","sources":["../../../../../src/ProfileManager/Components/VouchCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOvH,KAAK,cAAc,GAAG;IAClB,MAAM,EAAC,aAAa,CAAC;IACrB,WAAW,CAAC,EAAC,OAAO,CAAC;IACrB,SAAS,CAAC,EAAC,SAAS,GAAC,QAAQ,CAAC;IAC9B,MAAM,CAAC,EAAC;QAAE,GAAG,EAAC,MAAM,CAAC;QAAC,MAAM,EAAC,MAAM,CAAC;QAAC,IAAI,CAAC,EAAC,MAAM,CAAC;QAAC,KAAK,CAAC,EAAC,MAAM,CAAA;KAAE,CAAC;IACnE,UAAU,EAAC,CAAC,MAAM,EAAC,OAAO,KAAK,IAAI,CAAC;IACpC,YAAY,EAAE;QACV,YAAY,CAAC,EAAC,gBAAgB,CAAC;QAC/B,QAAQ,CAAC,EAAC,iBAAiB,CAAC;QAC5B,KAAK,CAAC,EAAC,UAAU,CAAC;QAClB,eAAe,CAAC,EAAC,mBAAmB,CAAA;KACvC,CAAA;IACD,cAAc,EAAC,CAAC,MAAM,EAAC,aAAa,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAC,MAAM,IAAI,CAAC;IACvB,OAAO,EAAC,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,QAAA,MAAM,SAAS,GAAI,4GAA2G,cAAc,
|
|
1
|
+
{"version":3,"file":"VouchCard.d.ts","sourceRoot":"","sources":["../../../../../src/ProfileManager/Components/VouchCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOvH,KAAK,cAAc,GAAG;IAClB,MAAM,EAAC,aAAa,CAAC;IACrB,WAAW,CAAC,EAAC,OAAO,CAAC;IACrB,SAAS,CAAC,EAAC,SAAS,GAAC,QAAQ,CAAC;IAC9B,MAAM,CAAC,EAAC;QAAE,GAAG,EAAC,MAAM,CAAC;QAAC,MAAM,EAAC,MAAM,CAAC;QAAC,IAAI,CAAC,EAAC,MAAM,CAAC;QAAC,KAAK,CAAC,EAAC,MAAM,CAAA;KAAE,CAAC;IACnE,UAAU,EAAC,CAAC,MAAM,EAAC,OAAO,KAAK,IAAI,CAAC;IACpC,YAAY,EAAE;QACV,YAAY,CAAC,EAAC,gBAAgB,CAAC;QAC/B,QAAQ,CAAC,EAAC,iBAAiB,CAAC;QAC5B,KAAK,CAAC,EAAC,UAAU,CAAC;QAClB,eAAe,CAAC,EAAC,mBAAmB,CAAA;KACvC,CAAA;IACD,cAAc,EAAC,CAAC,MAAM,EAAC,aAAa,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAC,MAAM,IAAI,CAAC;IACvB,OAAO,EAAC,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,QAAA,MAAM,SAAS,GAAI,4GAA2G,cAAc,sBA8T3I,CAAA;AAED,eAAe,SAAS,CAAA"}
|
package/package.json
CHANGED
|
@@ -10,11 +10,13 @@ const AdServerApi = {
|
|
|
10
10
|
SOCIAL_SVC_API = endpoints['SOCIAL_SVC_API'] as string;
|
|
11
11
|
},
|
|
12
12
|
getAdTypes: async():Promise<AdTypeProps[]> => {
|
|
13
|
-
const
|
|
13
|
+
const url = `${SOCIAL_SVC_API}/v2/ads/types`;
|
|
14
|
+
const resp = await axios.get(url);
|
|
14
15
|
return resp.data.ad_types
|
|
15
16
|
},
|
|
16
17
|
findAds : async():Promise<AdPlacementProps[]> => {
|
|
17
|
-
const
|
|
18
|
+
const url = `${SOCIAL_SVC_API}/v2/ads/find`;
|
|
19
|
+
const resp = await axios.get(url);
|
|
18
20
|
return resp.data.ad_placements
|
|
19
21
|
}
|
|
20
22
|
}
|
package/src/AdServer/index.tsx
CHANGED
|
@@ -10,11 +10,11 @@ type AdServerProps = {
|
|
|
10
10
|
ad_type:string,
|
|
11
11
|
role?:string,
|
|
12
12
|
device_width:number,
|
|
13
|
-
onViewAd
|
|
14
|
-
onClickAd
|
|
13
|
+
onViewAd?: (be_event:BEEventProps) => void,
|
|
14
|
+
onClickAd?: (be_event:BEEventProps) => void,
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
const AdContext = createContext({
|
|
17
|
+
export const AdContext = createContext({
|
|
18
18
|
loading:false,
|
|
19
19
|
ads_loaded: false as boolean,
|
|
20
20
|
role: undefined as string | undefined,
|
|
@@ -32,6 +32,7 @@ type AdProviderProps = {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
export const AdProvider = ({ children, role, distinct_id, session_id }:AdProviderProps) => {
|
|
35
|
+
|
|
35
36
|
const [ ads_loaded, setAdsLoaded ] = useState(false);
|
|
36
37
|
const [ ads_data, setData ] = useState<{
|
|
37
38
|
loading:boolean,
|
|
@@ -52,20 +53,28 @@ export const AdProvider = ({ children, role, distinct_id, session_id }:AdProvide
|
|
|
52
53
|
},[role])
|
|
53
54
|
|
|
54
55
|
useEffect(() => {
|
|
56
|
+
if(ads_loaded) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
55
59
|
AdServerApi.setEnvironment();
|
|
56
60
|
getAds()
|
|
57
|
-
},[])
|
|
61
|
+
},[ads_loaded])
|
|
58
62
|
|
|
59
63
|
const getAds = async() => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
64
|
+
try {
|
|
65
|
+
const ad_plcm = await AdServerApi.findAds();
|
|
66
|
+
const typs = await AdServerApi.getAdTypes();
|
|
67
|
+
|
|
68
|
+
setData({
|
|
69
|
+
...ads_data,
|
|
70
|
+
ad_types:typs,
|
|
71
|
+
role,
|
|
72
|
+
ad_placements:ad_plcm
|
|
73
|
+
})
|
|
74
|
+
setAdsLoaded(true)
|
|
75
|
+
} catch(error) {
|
|
76
|
+
console.error('[AdProvider] Failed to load ads:', error);
|
|
77
|
+
}
|
|
69
78
|
}
|
|
70
79
|
|
|
71
80
|
|
|
@@ -85,28 +94,59 @@ const AdServer = ({ placement, device_width, ad_type, role, onViewAd, onClickAd
|
|
|
85
94
|
const { company_ad, active_type, active_placement } = ad;
|
|
86
95
|
const data = useContext(AdContext);
|
|
87
96
|
|
|
88
|
-
|
|
97
|
+
|
|
89
98
|
useEffect(() => {
|
|
90
|
-
|
|
91
|
-
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
if(!data?.ads_loaded){
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if(!placement || !ad_type){
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
92
107
|
getNewAd()
|
|
93
108
|
},[data?.ads_loaded, placement, ad_type])
|
|
94
109
|
|
|
95
110
|
const getNewAd = () => {
|
|
111
|
+
|
|
96
112
|
let my_role = role;
|
|
97
|
-
if(!my_role){
|
|
98
|
-
|
|
113
|
+
if(!my_role){ my_role = data.role }
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
if(my_role == 'premium'){
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
99
120
|
const active_type = data.ad_types.find(t => t.ad_type == ad_type)
|
|
121
|
+
|
|
122
|
+
|
|
100
123
|
const active_placement = data.ad_placements.filter(p => p.ad_buys && p.ad_buys.length > 0).find(p => p.placement == placement)
|
|
101
|
-
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
if(!active_placement?.ad_buys){
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
|
|
102
130
|
const ad_buys_with_ads = active_placement.ad_buys.filter(b => b.company_ads && b.company_ads.length > 0)
|
|
131
|
+
|
|
103
132
|
const active_ad_buy = ad_buys_with_ads[Math.floor(Math.random()*(ad_buys_with_ads.length-1))]
|
|
104
|
-
if(!active_ad_buy){
|
|
133
|
+
if(!active_ad_buy){
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
|
|
105
137
|
let selectedable_ads = active_ad_buy.company_ads
|
|
106
|
-
|
|
138
|
+
|
|
139
|
+
if(!selectedable_ads || selectedable_ads.length == 0){
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
|
|
107
143
|
selectedable_ads = selectedable_ads.filter(ad => ad.ad_type_id == active_type?.ad_type_id);
|
|
144
|
+
|
|
108
145
|
const new_ad = selectedable_ads[Math.floor(Math.random()*(selectedable_ads.length-1))]
|
|
109
|
-
|
|
146
|
+
|
|
147
|
+
if(!new_ad){
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
110
150
|
setAd({
|
|
111
151
|
company_ad: new_ad,
|
|
112
152
|
active_type,
|
|
@@ -125,6 +165,7 @@ const AdServer = ({ placement, device_width, ad_type, role, onViewAd, onClickAd
|
|
|
125
165
|
ad_type={active_type}
|
|
126
166
|
size={{ width:device_width, height:200 }}
|
|
127
167
|
onViewAd={(ad) => {
|
|
168
|
+
if(!onViewAd){ return }
|
|
128
169
|
onViewAd({
|
|
129
170
|
event_name:'ad_view',
|
|
130
171
|
level:2,
|
|
@@ -139,6 +180,7 @@ const AdServer = ({ placement, device_width, ad_type, role, onViewAd, onClickAd
|
|
|
139
180
|
})
|
|
140
181
|
}}
|
|
141
182
|
onClickAd={(ad) => {
|
|
183
|
+
if(!onClickAd){ return }
|
|
142
184
|
onClickAd({
|
|
143
185
|
event_name:'ad_click',
|
|
144
186
|
level:1,
|
|
@@ -50,7 +50,7 @@ const ENVIRONMENT_ENDPOINTS = {
|
|
|
50
50
|
VOUCHED_SANDBOX: false,
|
|
51
51
|
BOT_SVC_API: 'https://api.bot.bettoredge.com',
|
|
52
52
|
EVENT_SVC_API: 'https://api.events.bettoredge.com',
|
|
53
|
-
BR_SVC_API: '
|
|
53
|
+
BR_SVC_API: 'https://betrouter.bettoredge.com',
|
|
54
54
|
MK_SVC_API: 'https://api.markets.bettoredge.com',
|
|
55
55
|
TP_SVC_API: 'https://be-tp-svc.herokuapp.com',
|
|
56
56
|
SOCIAL_SVC_API: 'https://api.social.bettoredge.com',
|
|
@@ -63,7 +63,7 @@ const ENVIRONMENT_ENDPOINTS = {
|
|
|
63
63
|
PRODUCTION_PROXY: {
|
|
64
64
|
AUTH_SVC_API: 'https://proxy.bettoredge.com/players',
|
|
65
65
|
CLIENT_API_KEY: 'mlOfTJPp4TdmppP9ajBmMVo2bO50O2G9',
|
|
66
|
-
BR_SVC_API: '
|
|
66
|
+
BR_SVC_API: 'https://betrouter.bettoredge.com',
|
|
67
67
|
VOUCH_ID: 'Q3tmJ3r9FnkN*n-MqS-!j0NS*k!mdo',
|
|
68
68
|
VOUCHED_CALLBACK_URL: 'https://be-auth-svc.herokuapp.com/v1/players/vouch/hook',
|
|
69
69
|
VOUCHED_SANDBOX: false,
|
|
@@ -214,6 +214,7 @@ const APIOverrides = {
|
|
|
214
214
|
return resp.data
|
|
215
215
|
} catch (e) {
|
|
216
216
|
console.log('THERE WAS AN ERROR!!!')
|
|
217
|
+
alert(e)
|
|
217
218
|
return undefined
|
|
218
219
|
}
|
|
219
220
|
},
|
|
@@ -620,6 +620,105 @@ export const BetRouterApi = {
|
|
|
620
620
|
} catch (e) {
|
|
621
621
|
throw e;
|
|
622
622
|
}
|
|
623
|
+
},
|
|
624
|
+
// POST /markets/router
|
|
625
|
+
createRouterMarket: async(
|
|
626
|
+
market_key: string,
|
|
627
|
+
market_label: string,
|
|
628
|
+
market_description: string,
|
|
629
|
+
category: 'game_result' | 'team_stat' | 'player_stat' | 'game_stat',
|
|
630
|
+
variable_required: boolean,
|
|
631
|
+
default_variable_type: 'total' | 'spread',
|
|
632
|
+
allow_multiple_participants: boolean,
|
|
633
|
+
participant_type: 'team' | 'player' | 'event',
|
|
634
|
+
status: 'active' | 'inactive'
|
|
635
|
+
): Promise<ExtractSuccessResponse<'POST /markets/router'> | any> => {
|
|
636
|
+
try {
|
|
637
|
+
const resp = await axios.post(`${BR_SVC_API}/markets/router`, {
|
|
638
|
+
market_key,
|
|
639
|
+
market_label,
|
|
640
|
+
market_description,
|
|
641
|
+
category,
|
|
642
|
+
variable_required,
|
|
643
|
+
default_variable_type,
|
|
644
|
+
allow_multiple_participants,
|
|
645
|
+
participant_type,
|
|
646
|
+
status
|
|
647
|
+
});
|
|
648
|
+
return resp.data;
|
|
649
|
+
} catch (e) {
|
|
650
|
+
throw e;
|
|
651
|
+
}
|
|
652
|
+
},
|
|
653
|
+
// PATCH /markets/router/:router_market_id
|
|
654
|
+
updateRouterMarket: async(router_market_id: string, updates: Partial<{
|
|
655
|
+
market_key: string;
|
|
656
|
+
market_label: string;
|
|
657
|
+
market_description: string;
|
|
658
|
+
category: 'game_result' | 'team_stat' | 'player_stat' | 'game_stat';
|
|
659
|
+
variable_required: boolean;
|
|
660
|
+
default_variable_type: 'total' | 'spread';
|
|
661
|
+
allow_multiple_participants: boolean;
|
|
662
|
+
participant_type: 'team' | 'player' | 'event';
|
|
663
|
+
status: 'active' | 'inactive';
|
|
664
|
+
}>): Promise<ExtractSuccessResponse<'PATCH /markets/router/:router_market_id'>> => {
|
|
665
|
+
try {
|
|
666
|
+
const resp = await axios.patch(`${BR_SVC_API}/markets/router/${router_market_id}`, updates);
|
|
667
|
+
return resp.data;
|
|
668
|
+
} catch (e) {
|
|
669
|
+
throw e;
|
|
670
|
+
}
|
|
671
|
+
},
|
|
672
|
+
// DELETE /markets/router/:router_market_id
|
|
673
|
+
deleteRouterMarket: async(router_market_id: string): Promise<ExtractSuccessResponse<'DELETE /markets/router/:router_market_id'>> => {
|
|
674
|
+
try {
|
|
675
|
+
const resp = await axios.delete(`${BR_SVC_API}/markets/router/${router_market_id}`);
|
|
676
|
+
return resp.data;
|
|
677
|
+
} catch (e) {
|
|
678
|
+
throw e;
|
|
679
|
+
}
|
|
680
|
+
},
|
|
681
|
+
// POST /markets/sides
|
|
682
|
+
createMarketSide: async(
|
|
683
|
+
router_market_id: string,
|
|
684
|
+
side_type: string,
|
|
685
|
+
side_key: string,
|
|
686
|
+
renderer: string
|
|
687
|
+
): Promise<ExtractSuccessResponse<'POST /markets/sides'> | any> => {
|
|
688
|
+
try {
|
|
689
|
+
const resp = await axios.post(`${BR_SVC_API}/markets/sides`, {
|
|
690
|
+
router_market_id,
|
|
691
|
+
side_type,
|
|
692
|
+
side_key,
|
|
693
|
+
renderer
|
|
694
|
+
});
|
|
695
|
+
return resp.data;
|
|
696
|
+
} catch (e) {
|
|
697
|
+
throw e;
|
|
698
|
+
}
|
|
699
|
+
},
|
|
700
|
+
// PATCH /markets/sides/:market_side_id
|
|
701
|
+
updateMarketSide: async(market_side_id: string, updates: Partial<{
|
|
702
|
+
router_market_id: string;
|
|
703
|
+
side_type: string;
|
|
704
|
+
side_key: string;
|
|
705
|
+
renderer: string;
|
|
706
|
+
}>): Promise<ExtractSuccessResponse<'PATCH /markets/sides/:market_side_id'>> => {
|
|
707
|
+
try {
|
|
708
|
+
const resp = await axios.patch(`${BR_SVC_API}/markets/sides/${market_side_id}`, updates);
|
|
709
|
+
return resp.data;
|
|
710
|
+
} catch (e) {
|
|
711
|
+
throw e;
|
|
712
|
+
}
|
|
713
|
+
},
|
|
714
|
+
// DELETE /markets/sides/:market_side_id
|
|
715
|
+
deleteMarketSide: async(market_side_id: string): Promise<ExtractSuccessResponse<'DELETE /markets/sides/:market_side_id'>> => {
|
|
716
|
+
try {
|
|
717
|
+
const resp = await axios.delete(`${BR_SVC_API}/markets/sides/${market_side_id}`);
|
|
718
|
+
return resp.data;
|
|
719
|
+
} catch (e) {
|
|
720
|
+
throw e;
|
|
721
|
+
}
|
|
623
722
|
}
|
|
624
723
|
},
|
|
625
724
|
LiquidityApi: {
|
|
@@ -721,7 +820,7 @@ export const BetRouterApi = {
|
|
|
721
820
|
}
|
|
722
821
|
},
|
|
723
822
|
// POST /jobs/create
|
|
724
|
-
createJob: async(job_key: string, name: string, description: string, frequency: number, frequency_type: 'seconds' | 'minutes' | 'hours' | 'days'): Promise<ExtractSuccessResponse<'POST /jobs/create'
|
|
823
|
+
createJob: async(job_key: string, name: string, description: string, frequency: number, frequency_type: 'seconds' | 'minutes' | 'hours' | 'days'): Promise<ExtractSuccessResponse<'POST /jobs/create'> | any> => {
|
|
725
824
|
try {
|
|
726
825
|
const resp = await axios.post(`${BR_SVC_API}/jobs/create`, {
|
|
727
826
|
job_key,
|
|
@@ -815,7 +914,7 @@ export const BetRouterApi = {
|
|
|
815
914
|
}
|
|
816
915
|
},
|
|
817
916
|
// POST /config
|
|
818
|
-
createConfig: async(config: string, value: any, config_format: 'string' | 'number' | 'boolean' | 'json'): Promise<ExtractSuccessResponse<'POST /config'
|
|
917
|
+
createConfig: async(config: string, value: any, config_format: 'string' | 'number' | 'boolean' | 'json'): Promise<ExtractSuccessResponse<'POST /config'> | any> => {
|
|
819
918
|
try {
|
|
820
919
|
const resp = await axios.post(`${BR_SVC_API}/config`, {
|
|
821
920
|
config,
|
|
@@ -67,6 +67,7 @@ const ContestLiquidity = ({
|
|
|
67
67
|
|
|
68
68
|
const [selectedMarketId, setSelectedMarketId] = useState<string>('');
|
|
69
69
|
const [selectedVariableId, setSelectedVariableId] = useState<string>('');
|
|
70
|
+
const [inverseVariableId, setInverseVariableId] = useState<string>('');
|
|
70
71
|
const [selectedOpportunity, setSelectedOpportunity] = useState<BuyOpportunity | null>(null);
|
|
71
72
|
const [modalVisible, setModalVisible] = useState(false);
|
|
72
73
|
|
|
@@ -144,7 +145,7 @@ const ContestLiquidity = ({
|
|
|
144
145
|
// For spread markets, only show home side variables
|
|
145
146
|
// For total markets, only show under side variables
|
|
146
147
|
const linkedVariableIds = new Set<string>();
|
|
147
|
-
const uniqueVariableValues = new Map<number, string>(); //
|
|
148
|
+
const uniqueVariableValues = new Map<number, string>(); // variable value (with sign) -> variable_id
|
|
148
149
|
|
|
149
150
|
// First, find the home side and under side for this market
|
|
150
151
|
const homeSide = sides.find(s => s.side_key.toLowerCase() === 'home');
|
|
@@ -166,9 +167,10 @@ const ContestLiquidity = ({
|
|
|
166
167
|
: true;
|
|
167
168
|
|
|
168
169
|
if (isCorrectSide) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
170
|
+
// Use the actual variable value (with sign) as the key to preserve both positive and negative values
|
|
171
|
+
const variableValue = variable.variable;
|
|
172
|
+
if (!uniqueVariableValues.has(variableValue)) {
|
|
173
|
+
uniqueVariableValues.set(variableValue, variable.router_market_variable_id);
|
|
172
174
|
}
|
|
173
175
|
}
|
|
174
176
|
}
|
|
@@ -180,11 +182,30 @@ const ContestLiquidity = ({
|
|
|
180
182
|
.map(id => data.router_market_variables.find(v => v.router_market_variable_id === id))
|
|
181
183
|
.filter(v => v !== undefined) as RouterMarketVariableProps[];
|
|
182
184
|
|
|
185
|
+
// Sort variables ascending by value
|
|
186
|
+
variables.sort((a, b) => Number(a.variable) - Number(b.variable));
|
|
187
|
+
|
|
183
188
|
// Auto-select first variable if not selected
|
|
184
189
|
let currentVariableId = selectedVariableId;
|
|
190
|
+
let currentInverseVariableId = inverseVariableId;
|
|
185
191
|
if (variables[0] && router_market.variable_required && variables.length > 0 && !currentVariableId) {
|
|
186
192
|
currentVariableId = variables[0].router_market_variable_id;
|
|
187
193
|
setSelectedVariableId(currentVariableId);
|
|
194
|
+
|
|
195
|
+
// For spread markets, find and store the inverse variable
|
|
196
|
+
const selectedVar = data.router_market_variables.find(v => v.router_market_variable_id === currentVariableId);
|
|
197
|
+
if (selectedVar && selectedVar.variable_type === 'spread') {
|
|
198
|
+
const inverseValue = -Number(selectedVar.variable);
|
|
199
|
+
const inverseVar = data.router_market_variables.find(v =>
|
|
200
|
+
v.router_market_id === selectedMarketId &&
|
|
201
|
+
Number(v.variable) === inverseValue &&
|
|
202
|
+
v.variable_type === 'spread'
|
|
203
|
+
);
|
|
204
|
+
if (inverseVar) {
|
|
205
|
+
currentInverseVariableId = inverseVar.router_market_variable_id;
|
|
206
|
+
setInverseVariableId(currentInverseVariableId);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
188
209
|
}
|
|
189
210
|
|
|
190
211
|
// Build partner rows
|
|
@@ -200,14 +221,27 @@ const ContestLiquidity = ({
|
|
|
200
221
|
const currentVariable = data.router_market_variables.find(v => v.router_market_variable_id === partner_market.router_market_variable_id);
|
|
201
222
|
|
|
202
223
|
if (selectedVariable && currentVariable) {
|
|
203
|
-
// For spread markets, match both +/- versions (e.g., -7 and +7)
|
|
204
224
|
if (selectedVariable.variable_type === 'spread') {
|
|
205
|
-
|
|
206
|
-
|
|
225
|
+
// For spread markets, match using stored variable IDs
|
|
226
|
+
// Get the side for this partner market
|
|
227
|
+
const currentSide = sides.find(s => s.market_side_id === partner_market.market_side_id);
|
|
228
|
+
const homeSide = sides.find(s => s.side_key.toLowerCase() === 'home');
|
|
229
|
+
const isHomeSide = currentSide?.market_side_id === homeSide?.market_side_id;
|
|
230
|
+
|
|
231
|
+
if (isHomeSide) {
|
|
232
|
+
// For home side, must match selected variable ID
|
|
233
|
+
if (partner_market.router_market_variable_id !== currentVariableId) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
} else {
|
|
237
|
+
// For away side, must match inverse variable ID
|
|
238
|
+
if (!currentInverseVariableId || partner_market.router_market_variable_id !== currentInverseVariableId) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
207
241
|
}
|
|
208
242
|
} else {
|
|
209
|
-
// For totals, must match exactly
|
|
210
|
-
if (
|
|
243
|
+
// For totals and other markets, must match exactly by variable ID
|
|
244
|
+
if (partner_market.router_market_variable_id !== currentVariableId) {
|
|
211
245
|
return;
|
|
212
246
|
}
|
|
213
247
|
}
|
|
@@ -217,6 +251,9 @@ const ContestLiquidity = ({
|
|
|
217
251
|
const partner = data.partners.find(p => p.partner_id === partner_market.partner_id);
|
|
218
252
|
if (!partner) return;
|
|
219
253
|
|
|
254
|
+
// Use the title from the liquidity object
|
|
255
|
+
const title = liq.title;
|
|
256
|
+
|
|
220
257
|
if (!partnerRowsMap.has(partner.partner_id)) {
|
|
221
258
|
partnerRowsMap.set(partner.partner_id, {
|
|
222
259
|
partner,
|
|
@@ -226,7 +263,7 @@ const ContestLiquidity = ({
|
|
|
226
263
|
|
|
227
264
|
partnerRowsMap.get(partner.partner_id)!.sidePrices.set(
|
|
228
265
|
partner_market.market_side_id,
|
|
229
|
-
{ title
|
|
266
|
+
{ title, price: liq.price, available: liq.available }
|
|
230
267
|
);
|
|
231
268
|
});
|
|
232
269
|
|
|
@@ -463,6 +500,7 @@ const ContestLiquidity = ({
|
|
|
463
500
|
if (market) {
|
|
464
501
|
setSelectedMarketId(market.router_market_id);
|
|
465
502
|
setSelectedVariableId(''); // Reset variable selection
|
|
503
|
+
setInverseVariableId(''); // Reset inverse variable
|
|
466
504
|
}
|
|
467
505
|
}}
|
|
468
506
|
/>
|
|
@@ -499,7 +537,36 @@ const ContestLiquidity = ({
|
|
|
499
537
|
borderColor: isSelected ? Colors.text.success : Colors.borders.light,
|
|
500
538
|
backgroundColor: isSelected ? Colors.views.header : 'transparent'
|
|
501
539
|
}}
|
|
502
|
-
onPress={() =>
|
|
540
|
+
onPress={() => {
|
|
541
|
+
console.log('Variable button clicked:', variable);
|
|
542
|
+
setSelectedVariableId(variable.router_market_variable_id);
|
|
543
|
+
|
|
544
|
+
// For spread markets, find and store the inverse variable
|
|
545
|
+
if (variable.variable_type === 'spread' && data) {
|
|
546
|
+
const inverseValue = -Number(variable.variable);
|
|
547
|
+
console.log('Button click - Looking for inverse:', { selectedValue: variable.variable, inverseValue });
|
|
548
|
+
console.log('Button click - All market variables:', data.router_market_variables.filter(v => v.router_market_id === variable.router_market_id).map(v => ({
|
|
549
|
+
id: v.router_market_variable_id,
|
|
550
|
+
value: v.variable,
|
|
551
|
+
type: v.variable_type
|
|
552
|
+
})));
|
|
553
|
+
const inverseVar = data.router_market_variables.find(v =>
|
|
554
|
+
v.router_market_id === variable.router_market_id &&
|
|
555
|
+
Number(v.variable) === inverseValue &&
|
|
556
|
+
v.variable_type === 'spread'
|
|
557
|
+
);
|
|
558
|
+
console.log('Button click - Found inverse var?', inverseVar);
|
|
559
|
+
if (inverseVar) {
|
|
560
|
+
console.log('Setting inverse variable ID:', inverseVar.router_market_variable_id);
|
|
561
|
+
setInverseVariableId(inverseVar.router_market_variable_id);
|
|
562
|
+
} else {
|
|
563
|
+
console.warn('Button click - Inverse variable NOT found!');
|
|
564
|
+
setInverseVariableId('');
|
|
565
|
+
}
|
|
566
|
+
} else {
|
|
567
|
+
setInverseVariableId('');
|
|
568
|
+
}
|
|
569
|
+
}}
|
|
503
570
|
>
|
|
504
571
|
<Text
|
|
505
572
|
theme='h2'
|