Skip to content

Commit 176fe3b

Browse files
Copilotbhollis
andauthored
Filter out zero-count set bonuses in setBonusCountsToStately function (#281)
* Initial plan * Filter out zero-count set bonuses in setBonusCountsToStately function Co-authored-by: bhollis <313208+bhollis@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: bhollis <313208+bhollis@users.noreply.github.com>
1 parent f176623 commit 176fe3b

2 files changed

Lines changed: 37 additions & 6 deletions

File tree

api/stately/loadouts-queries.test.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,35 @@ it('can roundtrip loadout parameters w/ a negative armor hash', () => {
9595
expect(loParams2).toEqual(loParams);
9696
});
9797

98+
it('filters out set bonuses with zero count when converting to Stately', () => {
99+
const loParams: LoadoutParameters = {
100+
...defaultLoadoutParameters,
101+
setBonuses: {
102+
123456789: 2, // Valid set bonus with 2 pieces
103+
987654321: 0, // Should be filtered out - zero count
104+
555666777: 4, // Valid set bonus with 4 pieces
105+
},
106+
};
107+
108+
const statelyLoParams = client.create(
109+
'LoadoutParameters',
110+
convertLoadoutParametersToStately(loParams),
111+
);
112+
113+
// The Stately version should only have the non-zero entries
114+
expect(statelyLoParams.setBonuses).toHaveLength(2);
115+
expect(statelyLoParams.setBonuses.find(b => b.setBonusHash === 123456789)?.count).toBe(2);
116+
expect(statelyLoParams.setBonuses.find(b => b.setBonusHash === 555666777)?.count).toBe(4);
117+
expect(statelyLoParams.setBonuses.find(b => b.setBonusHash === 987654321)).toBeUndefined();
118+
119+
// When converting back, the zero entry should not be present
120+
const loParams2 = convertLoadoutParametersFromStately(statelyLoParams);
121+
expect(loParams2.setBonuses).toEqual({
122+
123456789: 2,
123+
555666777: 4,
124+
});
125+
});
126+
98127
it('can record a loadout', async () => {
99128
await client.transaction(async (txn) => {
100129
await updateLoadout(txn, platformMembershipId, 2, [loadout]);

api/stately/loadouts-queries.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,12 +146,14 @@ function setBonusCountsToStately(setBonuses: SetBonusCounts | undefined): SetBon
146146
if (!setBonuses || isEmpty(setBonuses)) {
147147
return [];
148148
}
149-
return Object.entries(setBonuses).map(([setBonusHash, count]) =>
150-
client.create('SetBonusCount', {
151-
setBonusHash: Number(setBonusHash),
152-
count: Number(count),
153-
}),
154-
);
149+
return Object.entries(setBonuses)
150+
.filter(([, count]) => count !== undefined && count > 0)
151+
.map(([setBonusHash, count]) =>
152+
client.create('SetBonusCount', {
153+
setBonusHash: Number(setBonusHash),
154+
count: Number(count),
155+
}),
156+
);
155157
}
156158

157159
function exoticArmorHashFromStately(hash: bigint) {

0 commit comments

Comments
 (0)