返回提交历史
Modified
src/constants/gameToBuildVersion.ts
+1
-0
Modified
src/controllers/api/creditsController.ts
+23
-26
XFEstudio/SpaceNinjaServer
chore: omit 'unknown properties' from credits.php for old versions (#3996)
Closes #3992 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3996 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
f9d7a326
代码差异
2 个文件
+24
-26
@@ -67,6 +67,7 @@ const gameToBuildVersion = {
67
67
"12.1.2": "2014.02.14.17.05",
68
68
"11.5.3": "2013.12.21.01.47",
69
69
"11.1.3": "2013.11.29.16.33",
70
"10.8.0": "2013.11.12.14.03",
70
71
"10.3.3": "2013.10.11.17.01",
71
72
"9.1.0": "2013.07.13.03.21",
72
73
"8.3.0": "2013.07.04.20.17",
@@ -1,6 +1,8 @@
1
1
import type { RequestHandler } from "express";
2
import { getAccountIdForRequest } from "../../services/loginService.ts";
2
import { getAccountForRequest } from "../../services/loginService.ts";
3
3
import { getInventory } from "../../services/inventoryService.ts";
4
import { version_compare } from "../../helpers/inventoryHelpers.ts";
5
import gameToBuildVersion from "../../constants/gameToBuildVersion.ts";
4
6
5
7
export const creditsController: RequestHandler = async (req, res) => {
6
8
// U9 and below are known to sometimes send this request without credentials, so just handle it more gracefully.
@@ -9,33 +11,28 @@ export const creditsController: RequestHandler = async (req, res) => {
9
11
return;
10
12
}
11
13
12
const inventory = (
13
await Promise.all([
14
getAccountIdForRequest(req),
15
getInventory(
16
req.query.accountId as string,
17
"RegularCredits TradesRemaining PremiumCreditsFree PremiumCredits infiniteCredits infinitePlatinum infiniteTrades"
18
)
19
])
20
)[1];
14
const account = await getAccountForRequest(req);
15
const inventory = await getInventory(
16
account._id,
17
"RegularCredits TradesRemaining PremiumCreditsFree PremiumCredits infiniteCredits infinitePlatinum infiniteTrades"
18
);
21
19
22
const response = {
23
RegularCredits: inventory.RegularCredits,
24
TradesRemaining: inventory.TradesRemaining,
25
PremiumCreditsFree: inventory.PremiumCreditsFree,
26
PremiumCredits: inventory.PremiumCredits
20
const response: ICreditsResponse = {
21
RegularCredits: inventory.infiniteCredits ? 999999999 : inventory.RegularCredits,
22
PremiumCredits: inventory.infinitePlatinum ? 999999999 : inventory.PremiumCredits
27
23
};
28
29
if (inventory.infiniteCredits) {
30
response.RegularCredits = 999999999;
31
}
32
if (inventory.infinitePlatinum) {
33
response.PremiumCreditsFree = 0;
34
response.PremiumCredits = 999999999;
35
}
36
if (inventory.infiniteTrades) {
37
response.TradesRemaining = 9999;
24
if (account.BuildLabel && version_compare(account.BuildLabel, gameToBuildVersion["10.8.0"]) > 0) {
25
response.PremiumCreditsFree = inventory.infinitePlatinum ? 0 : inventory.PremiumCreditsFree;
26
if (version_compare(account.BuildLabel, gameToBuildVersion["15.0.0"]) >= 0) {
27
response.TradesRemaining = inventory.TradesRemaining;
28
}
38
29
}
39
40
30
res.json(response);
41
31
};
32
33
interface ICreditsResponse {
34
RegularCredits: number;
35
PremiumCredits: number;
36
PremiumCreditsFree?: number;
37
TradesRemaining?: number;
38
}