mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-25 23:18:44 -07:00
fix: Update AvatarItemId handling to ensure correct data type and prevent malformed responses in Shop tab
This commit is contained in:
@@ -42,6 +42,12 @@ public sealed class WatchShop2023Tests : IClassFixture<DorkNetServerFactory>
|
|||||||
Assert.Equal(JsonValueKind.String, giftDrop.GetProperty("TagList").ValueKind);
|
Assert.Equal(JsonValueKind.String, giftDrop.GetProperty("TagList").ValueKind);
|
||||||
var rarity = giftDrop.GetProperty("Rarity").GetInt32();
|
var rarity = giftDrop.GetProperty("Rarity").GetInt32();
|
||||||
Assert.Contains(rarity, new[] { 0, 10, 20, 30, 50 });
|
Assert.Contains(rarity, new[] { 0, 10, 20, 30, 50 });
|
||||||
|
|
||||||
|
// Int32 on the 2023 wire — a descriptor STRING here makes the
|
||||||
|
// strict Utf8Json reader throw "Malformed Response" for the
|
||||||
|
// whole storefront payload (expected:'Number Token').
|
||||||
|
Assert.Equal(JsonValueKind.Number, giftDrop.GetProperty("AvatarItemId").ValueKind);
|
||||||
|
Assert.Equal(JsonValueKind.String, giftDrop.GetProperty("AvatarItemDesc").ValueKind);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Featured strip: bare int ids, every one resolvable in the rows.
|
// Featured strip: bare int ids, every one resolvable in the rows.
|
||||||
|
|||||||
@@ -985,15 +985,13 @@ public class StoreService(DorkNetDbContext db, LevelService level, IConfiguratio
|
|||||||
Tooltip = i.Description,
|
Tooltip = i.Description,
|
||||||
AvatarItemDesc = avatarItemDesc,
|
AvatarItemDesc = avatarItemDesc,
|
||||||
AvatarItemDescOrHairDyeDesc = avatarItemDesc,
|
AvatarItemDescOrHairDyeDesc = avatarItemDesc,
|
||||||
// AvatarItemId is the field the 2023 client's StoreItemListModel
|
// AvatarItemId is an Int32 on the 2023 wire (EMBCEDNHFLB
|
||||||
// actually reads (store-item +0x38) to resolve the card to a baked
|
// serialiser writes field +0x60 with the same int writer as
|
||||||
// AvatarItem and read its OutfitType for tab placement — verified
|
// GiftDropId; the descriptor string lives in AvatarItemDesc
|
||||||
// vs 2023 ISIL (EMBCEDNHFLB/CLIANCNHNIE, AvatarItem.GIJPCPDKHPO).
|
// +0x38). Shipping the {guid},,, descriptor here made the
|
||||||
// AvatarItemDesc alone is NOT the join key, so clothing cards
|
// strict Utf8Json reader throw "Malformed Response" on the
|
||||||
// resolved to OutfitType=-1 and the Shop rendered empty. Ship the
|
// whole giftdropstore payload, so the Shop tab loaded nothing.
|
||||||
// same {guid},,, descriptor (GIJPCPDKHPO accepts bare {guid} or the
|
AvatarItemId = itemId,
|
||||||
// composite and falls back to parsing it to the immutable Guid).
|
|
||||||
AvatarItemId = avatarItemDesc,
|
|
||||||
AvatarItemType = string.IsNullOrEmpty(avatarItemDesc) ? (int?)null : avatarItemType,
|
AvatarItemType = string.IsNullOrEmpty(avatarItemDesc) ? (int?)null : avatarItemType,
|
||||||
ConsumableItemDesc = consumableItemDesc,
|
ConsumableItemDesc = consumableItemDesc,
|
||||||
EquipmentPrefabName = equipmentPrefabName,
|
EquipmentPrefabName = equipmentPrefabName,
|
||||||
|
|||||||
Reference in New Issue
Block a user