Skip to content

Commit d869ee9

Browse files
committed
1.1.6 Release Changes
1 parent 257d131 commit d869ee9

9 files changed

+348
-56
lines changed

app/app.constants.js

+4
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,7 @@ export const idFillSBC = "elem_" + generateId(15);
2626
export const idSBCPlayersToBuy = "elem_" + generateId(15);
2727
export const idSBCBuyFutBinPercent = "elem_" + generateId(15);
2828
export const idSearchMinBin = "elem_" + generateId(15);
29+
export const idPackPlayersAction = "elem_" + generateId(15);
30+
export const idPackNonPlayersAction = "elem_" + generateId(15);
31+
export const idPackDuplicatesAction = "elem_" + generateId(15);
32+
export const idPacksCount = "elem_" + generateId(15);

app/function-overrides/cssoverrides.js

+4
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,10 @@ export const overrideStyle = () => {
263263
text-transform: uppercase;
264264
background-color: #171826;
265265
}
266+
.packOpen {
267+
margin-left: 0.5rem;
268+
flex-basis: 50% !important;
269+
}
266270
`;
267271
document.head.appendChild(style);
268272
};

app/function-overrides/index.js

+2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { popupOverride } from "./popup-override";
1313
import { binPopUpOverride } from "./binpopup-override";
1414
import { packItemOverride } from "./packitem-override";
1515
import { sideBarNavOverride } from "./sidebarnav-override";
16+
import { storeOverride } from "./store-override";
1617

1718
export const initOverrides = () => {
1819
xmlRequestOverride();
@@ -29,5 +30,6 @@ export const initOverrides = () => {
2930
popupOverride();
3031
binPopUpOverride();
3132
sideBarNavOverride();
33+
storeOverride();
3234
overrideStyle();
3335
};

app/function-overrides/sbcview-override.js

+53-51
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
} from "../utils/commonUtil";
88
import { getSbcPlayersInfoFromFUTBin } from "../services/futbin";
99
import { sendPinEvents, sendUINotification } from "../utils/notificationUtil";
10-
import { getPlayersForSbc } from "../services/club";
10+
import { getSquadPlayerLookup } from "../services/club";
1111
import { generateButton } from "../utils/uiUtils/generateButton";
1212
import {
1313
idBuySBCPlayers,
@@ -23,6 +23,20 @@ import { getSellBidPrice, roundOffPrice } from "../utils/priceUtil";
2323
export const sbcViewOverride = () => {
2424
const squladDetailPanelView = UTSBCSquadDetailPanelView.prototype.render;
2525

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+
2640
UTSBCSquadDetailPanelView.prototype.render = function (...params) {
2741
squladDetailPanelView.call(this, ...params);
2842
const sbcId = params.length ? params[0].id : "";
@@ -68,7 +82,7 @@ const buyPlayersPopUp = () => {
6882
.getCurrentViewController()
6983
.getCurrentController()._leftController;
7084

71-
const sbcPlayers = _squad.getPlayers();
85+
const sbcPlayers = _squad.getFieldPlayers();
7286
const conceptPlayers = sbcPlayers.filter(({ _item }) => _item.concept);
7387

7488
if (!conceptPlayers.length) {
@@ -227,8 +241,24 @@ const fillSquad = async (sbcId) => {
227241

228242
showLoader();
229243

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+
});
232262
let squadTotal = 0;
233263

234264
const { _squad, _challenge } = getAppMain()
@@ -237,56 +267,28 @@ const fillSquad = async (sbcId) => {
237267
.getCurrentViewController()
238268
.getCurrentController()._leftController;
239269

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);
251271

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();
253279

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+
);
265290
}
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+
);
290292
};
291293

292294
const appendSquadTotal = (total) => {
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import {
2+
purchasePopUpMessage,
3+
validateFormAndOpenPack,
4+
} from "../utils/openPacksUtil";
5+
import { sendUINotification } from "../utils/notificationUtil";
6+
import { showPopUp } from "./popup-override";
7+
8+
export const storeOverride = () => {
9+
const setupBuyCoinsButton =
10+
UTStorePackDetailsView.prototype.setupBuyCoinsButton;
11+
12+
const autoOpenPacks = function (e, t, i) {
13+
let isHandled = false;
14+
services.Store.getPacks().observe(this, function (sender, data) {
15+
if (isHandled) return;
16+
isHandled = true;
17+
const pack = data.response.packs.find(
18+
(item) => item.id === this.articleId
19+
);
20+
if (!pack) {
21+
sendUINotification(
22+
"Unable to find the pack",
23+
UINotificationType.NEGATIVE
24+
);
25+
return;
26+
}
27+
28+
showPopUp(
29+
[
30+
{ labelEnum: enums.UIDialogOptions.OK },
31+
{ labelEnum: enums.UIDialogOptions.CANCEL },
32+
],
33+
"Auto Open Packs",
34+
purchasePopUpMessage,
35+
(text) => {
36+
text === 2 && validateFormAndOpenPack(pack);
37+
}
38+
);
39+
});
40+
};
41+
UTStorePackDetailsView.prototype.setupBuyCoinsButton = function (...params) {
42+
setupBuyCoinsButton.call(this, ...params);
43+
this._btnOpenPacks && this.removeActionButton(this._btnOpenPacks);
44+
this._btnOpenPacks = new UTCurrencyButtonControl();
45+
this._btnOpenPacks.init();
46+
this._btnOpenPacks.setText("Open pack");
47+
this._btnOpenPacks.setSubText("Automatically");
48+
this._btnOpenPacks.addClass("call-to-action packOpen");
49+
this._btnOpenPacks.addTarget(this, autoOpenPacks, EventType.TAP);
50+
this.appendActionButton(this._btnOpenPacks);
51+
};
52+
};

app/services/club.js

+13
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,19 @@ export const getSquadPlayerIds = () => {
2222
});
2323
};
2424

25+
export const getSquadPlayerLookup = () => {
26+
return new Promise((resolve, reject) => {
27+
const squadPlayersLookup = new Map();
28+
getAllClubPlayers(true).then((squadMembers) => {
29+
squadMembers.forEach((member) => {
30+
if (member.loans < 0)
31+
squadPlayersLookup.set(member.definitionId, member);
32+
});
33+
resolve(squadPlayersLookup);
34+
});
35+
});
36+
};
37+
2538
export const getAllClubPlayers = function (filterLoaned, playerId) {
2639
return new Promise((resolve, reject) => {
2740
const searchCriteria = new UTBucketedItemSearchViewModel().searchCriteria;

app/services/futbin.js

+12-4
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,15 @@ export const getSbcPlayersInfoFromFUTBin = async (squadId) => {
109109
return resolve(null);
110110
}
111111

112-
const playersDetail = $(res.response).find(".cardetails");
112+
const playersDetail = $(res.response).find(".card.cardnum");
113113

114114
const platform = getUserPlatform();
115115
const futBinPlatform =
116116
platform === "ps" ? "Ps3" : platform === "xbox" ? "Xbl" : "Pc";
117-
const playerIds = {};
118-
playersDetail.each((_, player) => {
117+
const playerIds = [];
118+
playersDetail.each((_, playerWrapper) => {
119+
const { dataset: cardDataSet } = playerWrapper;
120+
const player = $(playerWrapper).find(".cardetails");
119121
if ($(player).hasClass("hide")) {
120122
return;
121123
}
@@ -124,9 +126,15 @@ export const getSbcPlayersInfoFromFUTBin = async (squadId) => {
124126
if (playerDetail.length) {
125127
const { dataset } = playerDetail[0];
126128
const definitionId = parseInt(dataset.resourceId, 10);
129+
const positionId = parseInt(cardDataSet.cardid, 10);
127130
const playerPos = dataset.formposOriginal;
128131
const price = dataset[`price${futBinPlatform}`];
129-
playerIds[definitionId] = { position: playerPos, price };
132+
playerIds.push({
133+
definitionId,
134+
position: playerPos,
135+
price,
136+
positionId,
137+
});
130138
}
131139
});
132140
resolve(playerIds);

0 commit comments

Comments
 (0)