added a check to make sure the user actually has the item unlocked

This commit is contained in:
Polaris
2024-08-19 19:12:39 -04:00
parent 458bbfba48
commit b303fbcc9a
5 changed files with 165 additions and 29 deletions

View File

@ -43,31 +43,30 @@ export async function updateAvatarParts(
try {
// only including the values that aren't undefined i.e 0
const AvatarPartData: any = {};
if (avatarHead !== undefined) AvatarPartData.avatarHead = avatarHead;
if (avatarFace !== undefined) AvatarPartData.avatarFace = avatarFace;
if (avatarBack !== undefined) AvatarPartData.avatarBack = avatarBack;
if (avatarWear !== undefined) AvatarPartData.avatarWear = avatarWear;
if (avatarItem !== undefined) AvatarPartData.avatarItem = avatarItem;
const avatarPartData: any = {};
if (avatarHead !== undefined) avatarPartData.avatarHead = avatarHead;
if (avatarFace !== undefined) avatarPartData.avatarFace = avatarFace;
if (avatarBack !== undefined) avatarPartData.avatarBack = avatarBack;
if (avatarWear !== undefined) avatarPartData.avatarWear = avatarWear;
if (avatarItem !== undefined) avatarPartData.avatarItem = avatarItem;
const UpdateAvatarHead = await artemis.chuni_profile_data.update({
const updateAvatarParts = await artemis.chuni_profile_data.update({
where: {
user_version: {
user: user.UserId,
version: supportedVersionNumber,
},
},
data: AvatarPartData,
data: avatarPartData,
});
console.log(UpdateAvatarHead);
return UpdateAvatarHead;
return updateAvatarParts;
} catch (error) {
console.error("Error updating avatar parts:", error);
throw error;
}
}
export async function getAllAvatarParts(category: number) {
const { user } = await getAuth();
@ -75,7 +74,21 @@ export async function getAllAvatarParts(category: number) {
throw new Error("User is not authenticated or accessCode is missing");
}
const AllAvatarParts = await artemis.chuni_static_avatar.findMany({
// Check for user items in _item_item
const checkUserItems = await artemis.chuni_item_item.findMany({
where: {
itemKind: 11,
user: user.UserId,
},
select: {
itemId: true,
},
});
const chuni_item_item_ItemId = checkUserItems.map((item) => item.itemId);
// Retrieve all avatar parts
const allAvatarParts = await artemis.chuni_static_avatar.findMany({
where: {
category: category,
},
@ -89,5 +102,21 @@ export async function getAllAvatarParts(category: number) {
texturePath: true,
},
});
return AllAvatarParts;
const currentlyUnlockedAvatarParts = Array.from(
new Map(
allAvatarParts
.filter((matchingAvatarParts) =>
chuni_item_item_ItemId.includes(
matchingAvatarParts.avatarAccessoryId,
),
)
.map((unlockedAvatarPart) => [
unlockedAvatarPart.avatarAccessoryId,
unlockedAvatarPart,
]),
).values(),
);
return currentlyUnlockedAvatarParts;
}