aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2022-04-10 18:54:57 -0500
committermat <github@matdoes.dev>2022-04-10 18:54:57 -0500
commit96f151c3901243a12efafc17c28f85d94b7d7c03 (patch)
treef121e23f9b1ac22ce3c066d77141d643ba74c13d
parentb1804597e9c23215330f6a895046f5ddcb40fe4d (diff)
downloadskyblock-stats-96f151c3901243a12efafc17c28f85d94b7d7c03.tar.gz
skyblock-stats-96f151c3901243a12efafc17c28f85d94b7d7c03.tar.bz2
skyblock-stats-96f151c3901243a12efafc17c28f85d94b7d7c03.zip
Add leaderboard typings
-rw-r--r--src/lib/APITypes.d.ts33
-rw-r--r--src/lib/minecraft/Username.svelte4
-rw-r--r--src/routes/leaderboards/[name].svelte5
3 files changed, 38 insertions, 4 deletions
diff --git a/src/lib/APITypes.d.ts b/src/lib/APITypes.d.ts
index 65e70f3..2a33973 100644
--- a/src/lib/APITypes.d.ts
+++ b/src/lib/APITypes.d.ts
@@ -349,3 +349,36 @@ export interface CoopInvitation {
}
export type GameMode = 'normal' | 'stranded' | 'bingo' | 'ironman'
+
+export interface MemberLeaderboard {
+ name: string
+ unit: string | null
+ list: MemberLeaderboardItem[]
+ info?: string
+}
+
+export interface ProfileLeaderboard {
+ name: string
+ unit: string | null
+ list: ProfileLeaderboardItem[]
+ info?: string
+}
+
+export interface MemberLeaderboardItem {
+ player: LeaderboardBasicPlayer
+ profileUuid: string
+ value: number
+}
+export interface ProfileLeaderboardItem {
+ players: LeaderboardBasicPlayer[]
+ profileUuid: string
+ value: number
+}
+
+export interface LeaderboardBasicPlayer {
+ uuid: string
+ username: string
+ rank: {
+ color: string
+ }
+}
diff --git a/src/lib/minecraft/Username.svelte b/src/lib/minecraft/Username.svelte
index 34e2155..f6f9911 100644
--- a/src/lib/minecraft/Username.svelte
+++ b/src/lib/minecraft/Username.svelte
@@ -1,12 +1,12 @@
<script lang="ts">
- import type { CleanPlayer, CleanBasicMember } from '$lib/APITypes'
+ import type { CleanPlayer, CleanBasicMember, LeaderboardBasicPlayer } from '$lib/APITypes'
import ConditionalLink from '$lib/ConditionalLink.svelte'
import Head2d from '$lib/minecraft/heads/Head2d.svelte'
import Head3d from '$lib/minecraft/heads/Head3d.svelte'
import { formattingCodeToHtml } from '../utils'
- export let player: CleanPlayer | CleanBasicMember
+ export let player: CleanPlayer | CleanBasicMember | LeaderboardBasicPlayer
export let headType: null | '3d' | '2d' = null
export let hyperlinkToProfile: boolean | string = false
export let prefix = false
diff --git a/src/routes/leaderboards/[name].svelte b/src/routes/leaderboards/[name].svelte
index 930b1cb..ea1f658 100644
--- a/src/routes/leaderboards/[name].svelte
+++ b/src/routes/leaderboards/[name].svelte
@@ -23,8 +23,9 @@
import { skyblockItemToUrl } from '$lib/minecraft/inventory'
import { cleanId, formatNumberFromUnit, toTitleCase } from '$lib/utils'
import Username from '$lib/minecraft/Username.svelte'
+ import type { MemberLeaderboard, ProfileLeaderboard } from '$lib/APITypes'
- export let data
+ export let data: MemberLeaderboard | ProfileLeaderboard
$: imageUrl = data.name.startsWith('collection_') ? skyblockItemToUrl(data.name.slice(11)) : null
</script>
@@ -59,7 +60,7 @@
data.unit ?? cleanId(data.name).toLowerCase()
)}
</span>
- {#if leaderboardItem.player}
+ {#if 'player' in leaderboardItem}
<Username
player={leaderboardItem.player}
headType="2d"