2024-07-26 18:08:36 +00:00
|
|
|
"use server";
|
|
|
|
|
|
|
|
import { getAuth } from "@/auth/queries/getauth";
|
2024-08-20 20:49:01 +00:00
|
|
|
import { getSupportedVersionNumber } from "@/lib/api";
|
2024-08-02 01:42:14 +00:00
|
|
|
import { artemis } from "@/lib/prisma";
|
2024-07-26 18:08:36 +00:00
|
|
|
|
|
|
|
export async function getCurrentNameplate() {
|
|
|
|
const { user } = await getAuth();
|
2024-08-20 20:49:01 +00:00
|
|
|
const supportedVersionNumber = await getSupportedVersionNumber();
|
2024-07-26 18:08:36 +00:00
|
|
|
|
|
|
|
if (!user || !user.accessCode) {
|
|
|
|
throw new Error("User is not authenticated or accessCode is missing");
|
|
|
|
}
|
|
|
|
|
2024-07-28 05:16:27 +00:00
|
|
|
const currentNameplate = await artemis.chuni_profile_data.findMany({
|
2024-07-26 18:08:36 +00:00
|
|
|
where: {
|
|
|
|
user: user.UserId,
|
2024-08-02 01:42:14 +00:00
|
|
|
version: supportedVersionNumber,
|
2024-07-26 18:08:36 +00:00
|
|
|
},
|
|
|
|
select: {
|
|
|
|
nameplateId: true,
|
|
|
|
},
|
|
|
|
});
|
2024-07-28 05:16:27 +00:00
|
|
|
return currentNameplate;
|
2024-07-26 18:08:36 +00:00
|
|
|
}
|
|
|
|
|
2024-08-02 01:42:14 +00:00
|
|
|
export async function updatePlayerNamePlate(nameplateId?: number) {
|
|
|
|
const { user } = await getAuth();
|
2024-08-20 20:49:01 +00:00
|
|
|
const supportedVersionNumber = await getSupportedVersionNumber();
|
2024-08-02 01:42:14 +00:00
|
|
|
|
|
|
|
if (!user || !user.accessCode) {
|
|
|
|
throw new Error("User is not authenticated or accessCode is missing");
|
|
|
|
}
|
|
|
|
|
|
|
|
if (nameplateId === undefined) {
|
|
|
|
throw new Error("nameplateId is required");
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
const updatePlayerNameplate = await artemis.chuni_profile_data.update({
|
|
|
|
where: {
|
|
|
|
user_version: {
|
|
|
|
user: user.UserId,
|
|
|
|
version: supportedVersionNumber,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
data: {
|
|
|
|
nameplateId,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
console.log(updatePlayerNameplate);
|
|
|
|
|
|
|
|
return updatePlayerNameplate;
|
|
|
|
} catch (error) {
|
|
|
|
console.error("Error updating nameplate:", error);
|
|
|
|
throw error;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-07-26 18:08:36 +00:00
|
|
|
export async function getNamePlates() {
|
|
|
|
const { user } = await getAuth();
|
|
|
|
|
|
|
|
if (!user || !user.accessCode) {
|
|
|
|
throw new Error("User is not authenticated or accessCode is missing");
|
|
|
|
}
|
|
|
|
|
2024-08-19 23:12:39 +00:00
|
|
|
const checkIfNamePlatetIsUnlocked = await artemis.chuni_item_item.findMany({
|
|
|
|
where: {
|
|
|
|
itemKind: 1,
|
|
|
|
user: user.UserId,
|
|
|
|
},
|
|
|
|
select: {
|
|
|
|
itemId: true,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
const unlockedNamePlates = checkIfNamePlatetIsUnlocked.map(
|
|
|
|
(item) => item.itemId,
|
|
|
|
);
|
|
|
|
|
2024-07-28 05:16:27 +00:00
|
|
|
const AllNameplates = await artemis.cozynet_chuni_static_nameplate.findMany({
|
2024-07-26 18:08:36 +00:00
|
|
|
select: {
|
|
|
|
id: true,
|
|
|
|
str: true,
|
|
|
|
sortName: true,
|
|
|
|
category: true,
|
|
|
|
imagePath: true,
|
|
|
|
rareType: true,
|
|
|
|
netOpenName: true,
|
|
|
|
},
|
|
|
|
});
|
2024-08-19 23:12:39 +00:00
|
|
|
|
|
|
|
const currentlyUnlockedNamePlates = Array.from(
|
|
|
|
new Map(
|
|
|
|
AllNameplates.filter((matchingNamePlateIds) =>
|
|
|
|
unlockedNamePlates.includes(matchingNamePlateIds.id),
|
2024-08-19 23:14:47 +00:00
|
|
|
).map((unlockedNamePlateIds) => [
|
|
|
|
unlockedNamePlateIds.id,
|
|
|
|
unlockedNamePlateIds,
|
2024-08-19 23:12:39 +00:00
|
|
|
]),
|
|
|
|
).values(),
|
|
|
|
);
|
|
|
|
|
|
|
|
return currentlyUnlockedNamePlates;
|
2024-07-26 18:08:36 +00:00
|
|
|
}
|