aboutsummaryrefslogtreecommitdiff
path: root/build/cleaners/skyblock/profile.js
diff options
context:
space:
mode:
Diffstat (limited to 'build/cleaners/skyblock/profile.js')
-rw-r--r--build/cleaners/skyblock/profile.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/build/cleaners/skyblock/profile.js b/build/cleaners/skyblock/profile.js
new file mode 100644
index 0000000..f7d9e8b
--- /dev/null
+++ b/build/cleaners/skyblock/profile.js
@@ -0,0 +1,51 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.cleanSkyblockProfileResponse = exports.cleanSkyblockProfileResponseLighter = void 0;
+const member_1 = require("./member");
+const minions_1 = require("./minions");
+/** Return a `CleanProfile` instead of a `CleanFullProfile`, useful when we need to get members but don't want to waste much ram */
+async function cleanSkyblockProfileResponseLighter(data) {
+ // We use Promise.all so it can fetch all the usernames at once instead of waiting for the previous promise to complete
+ const promises = [];
+ for (const memberUUID in data.members) {
+ const memberRaw = data.members[memberUUID];
+ memberRaw.uuid = memberUUID;
+ // we pass an empty array to make it not check stats
+ promises.push(member_1.cleanSkyBlockProfileMemberResponse(memberRaw, []));
+ }
+ const cleanedMembers = await Promise.all(promises);
+ return {
+ uuid: data.profile_id,
+ name: data.cute_name,
+ members: cleanedMembers,
+ };
+}
+exports.cleanSkyblockProfileResponseLighter = cleanSkyblockProfileResponseLighter;
+/** This function is somewhat costly and shouldn't be called often. Use cleanSkyblockProfileResponseLighter if you don't need all the data */
+async function cleanSkyblockProfileResponse(data) {
+ const cleanedMembers = [];
+ for (const memberUUID in data.members) {
+ const memberRaw = data.members[memberUUID];
+ memberRaw.uuid = memberUUID;
+ const member = await member_1.cleanSkyBlockProfileMemberResponse(memberRaw, ['stats']);
+ cleanedMembers.push(member);
+ }
+ const memberMinions = [];
+ for (const member of cleanedMembers) {
+ memberMinions.push(member.minions);
+ }
+ const minions = minions_1.combineMinionArrays(memberMinions);
+ // return more detailed info
+ return {
+ uuid: data.profile_id,
+ name: data.cute_name,
+ members: cleanedMembers,
+ bank: {
+ balance: data?.banking?.balance ?? 0,
+ // TODO: make transactions good
+ history: data?.banking?.transactions ?? []
+ },
+ minions
+ };
+}
+exports.cleanSkyblockProfileResponse = cleanSkyblockProfileResponse;