7
7
} from "../utils/commonUtil" ;
8
8
import { getSbcPlayersInfoFromFUTBin } from "../services/futbin" ;
9
9
import { sendPinEvents , sendUINotification } from "../utils/notificationUtil" ;
10
- import { getPlayersForSbc } from "../services/club" ;
10
+ import { getSquadPlayerLookup } from "../services/club" ;
11
11
import { generateButton } from "../utils/uiUtils/generateButton" ;
12
12
import {
13
13
idBuySBCPlayers ,
@@ -23,6 +23,20 @@ import { getSellBidPrice, roundOffPrice } from "../utils/priceUtil";
23
23
export const sbcViewOverride = ( ) => {
24
24
const squladDetailPanelView = UTSBCSquadDetailPanelView . prototype . render ;
25
25
26
+ UTSBCService . prototype . loadChallengeData = function ( r ) {
27
+ var s = this ,
28
+ a = new EAObservable ( ) ;
29
+ return (
30
+ this . sbcDAO
31
+ . loadChallenge ( r . id , r . isInProgress ( ) )
32
+ . observe ( this , function ( t , e ) {
33
+ t . unobserve ( s ) ;
34
+ a . notify ( e ) ;
35
+ } ) ,
36
+ a
37
+ ) ;
38
+ } ;
39
+
26
40
UTSBCSquadDetailPanelView . prototype . render = function ( ...params ) {
27
41
squladDetailPanelView . call ( this , ...params ) ;
28
42
const sbcId = params . length ? params [ 0 ] . id : "" ;
@@ -68,7 +82,7 @@ const buyPlayersPopUp = () => {
68
82
. getCurrentViewController ( )
69
83
. getCurrentController ( ) . _leftController ;
70
84
71
- const sbcPlayers = _squad . getPlayers ( ) ;
85
+ const sbcPlayers = _squad . getFieldPlayers ( ) ;
72
86
const conceptPlayers = sbcPlayers . filter ( ( { _item } ) => _item . concept ) ;
73
87
74
88
if ( ! conceptPlayers . length ) {
@@ -227,8 +241,24 @@ const fillSquad = async (sbcId) => {
227
241
228
242
showLoader ( ) ;
229
243
230
- const playerPositionIds = await getSbcPlayersInfoFromFUTBin ( squadId ) ;
231
- const squadPlayers = await getPlayersForSbc ( playerPositionIds ) ;
244
+ const squadPlayersLookupPromise = getSquadPlayerLookup ( ) ;
245
+ const futBinSquadPlayersInfoPromise = getSbcPlayersInfoFromFUTBin ( squadId ) ;
246
+ const [ squadPlayersLookup , futBinSquadPlayersInfo ] = await Promise . all ( [
247
+ squadPlayersLookupPromise ,
248
+ futBinSquadPlayersInfoPromise ,
249
+ ] ) ;
250
+ const squadPlayers = futBinSquadPlayersInfo
251
+ . sort ( ( a , b ) => b . positionId - a . positionId )
252
+ . map ( ( currItem ) => {
253
+ const key = currItem . definitionId ;
254
+ const clubPlayerInfo = squadPlayersLookup . get ( key ) ;
255
+ const playerEntity = new UTItemEntity ( ) ;
256
+ playerEntity . id = clubPlayerInfo ? clubPlayerInfo . id : key ;
257
+ playerEntity . definitionId = key ;
258
+ playerEntity . concept = ! clubPlayerInfo ;
259
+ playerEntity . stackCount = 1 ;
260
+ return playerEntity ;
261
+ } ) ;
232
262
let squadTotal = 0 ;
233
263
234
264
const { _squad, _challenge } = getAppMain ( )
@@ -237,56 +267,28 @@ const fillSquad = async (sbcId) => {
237
267
. getCurrentViewController ( )
238
268
. getCurrentController ( ) . _leftController ;
239
269
240
- const sbcSlots = _squad . getSBCSlots ( ) ;
241
-
242
- const positionIndexes = sbcSlots . reduce ( ( acc , curr ) => {
243
- if ( ! curr . position ) return acc ;
244
-
245
- if ( ! acc [ curr . position . typeName ] ) {
246
- acc [ curr . position . typeName ] = [ ] ;
247
- }
248
- acc [ curr . position . typeName ] . push ( curr . index ) ;
249
- return acc ;
250
- } , { } ) ;
270
+ _squad . setPlayers ( squadPlayers , true ) ;
251
271
252
- const playersToAdd = [ ] ;
272
+ services . SBC . saveChallenge ( _challenge ) . observe (
273
+ this ,
274
+ async function ( sender , data ) {
275
+ services . SBC . loadChallengeData ( _challenge ) . observe (
276
+ this ,
277
+ async function ( sender , { response : { squad } } ) {
278
+ hideLoader ( ) ;
253
279
254
- const adjustPlayerPostion = ( playerId , playerPosition ) => {
255
- if ( positionIndexes [ playerPosition ] ) {
256
- if ( positionIndexes [ playerPosition ] . length ) {
257
- const positions = positionIndexes [ playerPosition ] ;
258
- playersToAdd [ parseInt ( positions [ 0 ] , 10 ) ] = squadPlayers [ playerId ] ;
259
- positions . splice ( 0 , 1 ) ;
260
- }
261
- if ( ! positionIndexes [ playerPosition ] . length ) {
262
- delete positionIndexes [ playerPosition ] ;
263
- }
264
- delete playerPositionIds [ playerId ] ;
280
+ setValue ( sbcId , {
281
+ expiryTimeStamp : new Date ( Date . now ( ) + 15 * 60 * 1000 ) ,
282
+ value : squadTotal . toLocaleString ( ) ,
283
+ } ) ;
284
+ appendSquadTotal ( squadTotal . toLocaleString ( ) ) ;
285
+ const players = squad . _players . map ( ( player ) => player . _item ) ;
286
+ _squad . setPlayers ( players , true ) ;
287
+ _challenge . onDataChange . notify ( { squad } ) ;
288
+ }
289
+ ) ;
265
290
}
266
- } ;
267
-
268
- for ( const playerId in playerPositionIds ) {
269
- const playerPosition = playerPositionIds [ playerId ] ;
270
- squadTotal += parseInt ( playerPosition . price , 10 ) || 0 ;
271
- adjustPlayerPostion ( playerId , playerPosition . position ) ;
272
- }
273
-
274
- for ( const playerId in playerPositionIds ) {
275
- const playerPosition = Object . keys ( positionIndexes ) [ 0 ] ;
276
- adjustPlayerPostion ( playerId , playerPosition ) ;
277
- }
278
-
279
- _squad . setPlayers ( playersToAdd , true ) ;
280
-
281
- services . SBC . saveChallenge ( _challenge ) ;
282
-
283
- hideLoader ( ) ;
284
-
285
- setValue ( sbcId , {
286
- expiryTimeStamp : new Date ( Date . now ( ) + 15 * 60 * 1000 ) ,
287
- value : squadTotal . toLocaleString ( ) ,
288
- } ) ;
289
- appendSquadTotal ( squadTotal . toLocaleString ( ) ) ;
291
+ ) ;
290
292
} ;
291
293
292
294
const appendSquadTotal = ( total ) => {
0 commit comments