aboutsummaryrefslogtreecommitdiff
path: root/src/cleaners/skyblock/zones.ts
blob: 92f4e810a0165b33a1a5d157a2028cbbcfa38fc5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import typedHypixelApi from 'typed-hypixel-api'
import * as constants from '../../constants.js'

export interface Zone {
	name: string
	visited: boolean
}

export function zoneIdToName(id: string) {
	// this currently does nothing, but in the future it could get data from https://api.hypixel.net/resources/games
	return id
}


export async function cleanVisitedZones(data: typedHypixelApi.SkyBlockProfileMember): Promise<Zone[]> {
	const rawZones = data?.visited_zones || []

	constants.addZones(rawZones)

	// TODO: store all the zones that exist in SkyBlock, add add those to the array with visited being false
	const zones: Zone[] = []

	const knownZones = await constants.fetchZones()

	for (const rawZoneName of knownZones) {
		zones.push({
			name: zoneIdToName(rawZoneName),
			visited: rawZones.includes(rawZoneName)
		})
	}

	// if this user somehow has a zone that we don't know about, just add it to zones
	for (const rawZoneName of rawZones) {
		if (!knownZones.includes(rawZoneName)) {
			zones.push({
				name: rawZoneName,
				visited: true
			})
		}
	}

	return zones
}