aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build/database.js14
-rw-r--r--build/hypixelApi.js1
-rw-r--r--build/hypixelCached.js10
-rw-r--r--src/database.ts20
-rw-r--r--src/hypixelApi.ts2
-rw-r--r--src/hypixelCached.ts14
6 files changed, 8 insertions, 53 deletions
diff --git a/build/database.js b/build/database.js
index 2c57d8c..e889f1e 100644
--- a/build/database.js
+++ b/build/database.js
@@ -155,7 +155,6 @@ async function fetchAllMemberLeaderboardAttributes() {
'first_join',
'purse',
'visited_zones',
- 'leaderboards_count'
];
}
exports.fetchAllMemberLeaderboardAttributes = fetchAllMemberLeaderboardAttributes;
@@ -215,7 +214,7 @@ async function fetchMemberLeaderboardSpots(player, profile) {
const fullMember = fullProfile.members.find(m => m.username.toLowerCase() === player.toLowerCase() || m.uuid === player);
// update the leaderboard positions for the member
await updateDatabaseMember(fullMember, fullProfile);
- const applicableAttributes = await getApplicableAttributes(fullMember, fullProfile);
+ const applicableAttributes = await getApplicableAttributes(fullMember);
const memberLeaderboardSpots = [];
for (const leaderboardName in applicableAttributes) {
const leaderboard = await fetchMemberLeaderboardRaw(leaderboardName);
@@ -239,7 +238,7 @@ async function getMemberLeaderboardRequirement(name) {
return null;
}
/** Get the attributes for the member, but only ones that would put them on the top 100 for leaderboards */
-async function getApplicableAttributes(member, profile) {
+async function getApplicableAttributes(member) {
const leaderboardAttributes = getMemberLeaderboardAttributes(member);
const applicableAttributes = {};
for (const [leaderboard, attributeValue] of Object.entries(leaderboardAttributes)) {
@@ -250,13 +249,6 @@ async function getApplicableAttributes(member, profile) {
applicableAttributes[leaderboard] = attributeValue;
}
}
- let leaderboardsCount = Object.keys(applicableAttributes).length;
- const leaderboardsCountRequirement = await getMemberLeaderboardRequirement('leaderboards_count');
- if ((leaderboardsCountRequirement === null)
- || (leaderboardsCount > leaderboardsCountRequirement)) {
- // add 1 extra because this attribute also counts :)
- applicableAttributes['leaderboards_count'] = leaderboardsCount + 1;
- }
return applicableAttributes;
}
/** Update the member's leaderboard data on the server if applicable */
@@ -279,7 +271,7 @@ async function updateDatabaseMember(member, profile) {
await constants.addSlayers(member.slayers.bosses.map(s => s.raw_name));
if (_1.debug)
console.log('done constants..');
- const leaderboardAttributes = await getApplicableAttributes(member, profile);
+ const leaderboardAttributes = await getApplicableAttributes(member);
if (_1.debug)
console.log('done getApplicableAttributes..', leaderboardAttributes);
await memberLeaderboardsCollection.updateOne({
diff --git a/build/hypixelApi.js b/build/hypixelApi.js
index c40fe0f..2b3a601 100644
--- a/build/hypixelApi.js
+++ b/build/hypixelApi.js
@@ -56,7 +56,6 @@ async function sendApiRequest({ path, key, args }) {
fetchResponse = await node_fetch_1.default(fetchUrl, { agent: () => httpsAgent });
}
catch {
- console.log('error in fetch :/');
// if there's an error, wait a second and try again
await new Promise((resolve) => setTimeout(resolve, 1000));
return await sendApiRequest({ path, key, args });
diff --git a/build/hypixelCached.js b/build/hypixelCached.js
index 8a35482..a667ec4 100644
--- a/build/hypixelCached.js
+++ b/build/hypixelCached.js
@@ -145,24 +145,14 @@ async function usernameFromUser(user) {
return username;
}
exports.usernameFromUser = usernameFromUser;
-let fetchingPlayers = new Set();
async function fetchPlayer(user) {
const playerUuid = await uuidFromUser(user);
if (playerCache.has(playerUuid))
return playerCache.get(playerUuid);
- // if it's already in the process of fetching, check every 100ms until it's not fetching the player anymore and fetch it again, since it'll be cached now
- if (fetchingPlayers.has(playerUuid)) {
- while (fetchingPlayers.has(playerUuid)) {
- await new Promise(resolve => setTimeout(resolve, 100));
- }
- return await fetchPlayer(user);
- }
- fetchingPlayers.add(playerUuid);
const cleanPlayer = await hypixel.sendCleanApiRequest({
path: 'player',
args: { uuid: playerUuid }
});
- fetchingPlayers.delete(playerUuid);
if (!cleanPlayer)
return;
// clone in case it gets modified somehow later
diff --git a/src/database.ts b/src/database.ts
index 27bc7ec..08a8114 100644
--- a/src/database.ts
+++ b/src/database.ts
@@ -3,7 +3,7 @@
*/
import { categorizeStat, getStatUnit } from './cleaners/skyblock/stats'
-import { CleanFullProfile, CleanProfile } from './cleaners/skyblock/profile'
+import { CleanFullProfile } from './cleaners/skyblock/profile'
import { CleanMember } from './cleaners/skyblock/member'
import { Collection, Db, MongoClient } from 'mongodb'
import { CleanPlayer } from './cleaners/player'
@@ -175,7 +175,6 @@ export async function fetchAllMemberLeaderboardAttributes(): Promise<string[]> {
'first_join',
'purse',
'visited_zones',
- 'leaderboards_count'
]
}
@@ -248,7 +247,7 @@ export async function fetchMemberLeaderboardSpots(player: string, profile: strin
// update the leaderboard positions for the member
await updateDatabaseMember(fullMember, fullProfile)
- const applicableAttributes = await getApplicableAttributes(fullMember, fullProfile)
+ const applicableAttributes = await getApplicableAttributes(fullMember)
const memberLeaderboardSpots = []
@@ -277,7 +276,7 @@ async function getMemberLeaderboardRequirement(name: string): Promise<number> {
}
/** Get the attributes for the member, but only ones that would put them on the top 100 for leaderboards */
-async function getApplicableAttributes(member: CleanMember, profile: CleanProfile): Promise<StringNumber> {
+async function getApplicableAttributes(member: CleanMember): Promise<StringNumber> {
const leaderboardAttributes = getMemberLeaderboardAttributes(member)
const applicableAttributes = {}
for (const [ leaderboard, attributeValue ] of Object.entries(leaderboardAttributes)) {
@@ -290,17 +289,6 @@ async function getApplicableAttributes(member: CleanMember, profile: CleanProfil
applicableAttributes[leaderboard] = attributeValue
}
}
-
- let leaderboardsCount: number = Object.keys(applicableAttributes).length
- const leaderboardsCountRequirement: number = await getMemberLeaderboardRequirement('leaderboards_count')
- if (
- (leaderboardsCountRequirement === null)
- || (leaderboardsCount > leaderboardsCountRequirement)
- ) {
- // add 1 extra because this attribute also counts :)
- applicableAttributes['leaderboards_count'] = leaderboardsCount + 1
- }
-
return applicableAttributes
}
@@ -324,7 +312,7 @@ export async function updateDatabaseMember(member: CleanMember, profile: CleanFu
if (debug) console.log('done constants..')
- const leaderboardAttributes = await getApplicableAttributes(member, profile)
+ const leaderboardAttributes = await getApplicableAttributes(member)
if (debug) console.log('done getApplicableAttributes..', leaderboardAttributes)
diff --git a/src/hypixelApi.ts b/src/hypixelApi.ts
index 7ee7eca..8541089 100644
--- a/src/hypixelApi.ts
+++ b/src/hypixelApi.ts
@@ -125,6 +125,7 @@ export interface HypixelPlayer {
socialMedia?: HypixelPlayerSocialMedia
}
+
/** Send an HTTP request to the Hypixel API */
export async function sendApiRequest({ path, key, args }): Promise<HypixelResponse> {
// Send a raw http request to api.hypixel.net, and return the parsed json
@@ -144,7 +145,6 @@ export async function sendApiRequest({ path, key, args }): Promise<HypixelRespon
{ agent: () => httpsAgent }
)
} catch {
- console.log('error in fetch :/')
// if there's an error, wait a second and try again
await new Promise((resolve) => setTimeout(resolve, 1000))
return await sendApiRequest({ path, key, args })
diff --git a/src/hypixelCached.ts b/src/hypixelCached.ts
index 3dc89a3..c347a1a 100644
--- a/src/hypixelCached.ts
+++ b/src/hypixelCached.ts
@@ -143,32 +143,18 @@ export async function usernameFromUser(user: string): Promise<string> {
return username
}
-let fetchingPlayers: Set<string> = new Set()
export async function fetchPlayer(user: string): Promise<CleanPlayer> {
const playerUuid = await uuidFromUser(user)
-
if (playerCache.has(playerUuid))
return playerCache.get(playerUuid)
- // if it's already in the process of fetching, check every 100ms until it's not fetching the player anymore and fetch it again, since it'll be cached now
- if (fetchingPlayers.has(playerUuid)) {
- while (fetchingPlayers.has(playerUuid)) {
- await new Promise(resolve => setTimeout(resolve, 100))
- }
- return await fetchPlayer(user)
- }
-
- fetchingPlayers.add(playerUuid)
-
const cleanPlayer: CleanPlayer = await hypixel.sendCleanApiRequest({
path: 'player',
args: { uuid: playerUuid }
})
- fetchingPlayers.delete(playerUuid)
-
if (!cleanPlayer) return
// clone in case it gets modified somehow later