aboutsummaryrefslogtreecommitdiff
path: root/src/routes
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/__layout.svelte6
-rw-r--r--src/routes/player/[player]/[profile].svelte32
-rw-r--r--src/routes/player/[player]/index.svelte (renamed from src/routes/player/[player].svelte)94
3 files changed, 88 insertions, 44 deletions
diff --git a/src/routes/__layout.svelte b/src/routes/__layout.svelte
index d1fca30..2da6384 100644
--- a/src/routes/__layout.svelte
+++ b/src/routes/__layout.svelte
@@ -3,6 +3,6 @@
import '../app.css'
</script>
-<main>
- <slot />
-</main>
+<nav />
+
+<slot />
diff --git a/src/routes/player/[player]/[profile].svelte b/src/routes/player/[player]/[profile].svelte
new file mode 100644
index 0000000..c5276bc
--- /dev/null
+++ b/src/routes/player/[player]/[profile].svelte
@@ -0,0 +1,32 @@
+<script lang="ts" context="module">
+ import type { Load } from '@sveltejs/kit'
+ import { API_URL } from '$lib/api'
+
+ export const load: Load = async ({ params, fetch }) => {
+ const player: string = params.player
+ const profile: string = params.profile
+ const res = await fetch(`${API_URL}player/${player}/${profile}`).then(r => r.json())
+ return {
+ props: {
+ data: res,
+ },
+ }
+ }
+</script>
+
+<script lang="ts">
+ import Head from '$lib/Head.svelte'
+ import Header from '$lib/Header.svelte'
+ import Username from '$lib/Username.svelte'
+ import { generateMetaDescription } from '$lib/profile'
+
+ export let data
+</script>
+
+<Head
+ title="{data.member.username}'s SkyBlock profile ({data.member.profileName})"
+ description={generateMetaDescription(data)}
+ metaTitle={(data.member.rank.name ? `[${data.member.rank.name}] ` : '') +
+ `${data.member.username}\'s SkyBlock profile (${data.member.profileName})`}
+/>
+<Header backArrowHref="/player/{data.member.username}" />
diff --git a/src/routes/player/[player].svelte b/src/routes/player/[player]/index.svelte
index 2cce8e7..73dfb0c 100644
--- a/src/routes/player/[player].svelte
+++ b/src/routes/player/[player]/index.svelte
@@ -1,24 +1,34 @@
<script lang="ts" context="module">
- import { get } from '$lib/api'
import type { Load } from '@sveltejs/kit'
+ import { API_URL } from '$lib/api'
+
export const load: Load = async ({ params, fetch }) => {
const player: string = params.player
- // if (browser) alert('doing get')
- const res = await fetch(`https://skyblock-api.matdoes.dev/player/${player}`).then(r => r.json())
- // const res = await get(`player/${player}`)
+ const res = await fetch(`${API_URL}player/${player}?customization=true`).then(r => r.json())
+
+ console.log('res', res)
+
+ if (!res.player) {
+ return { fallthrough: true } as unknown
+ }
+
+ if (res.player.username !== player) {
+ return {
+ redirect: `/player/${res.player.username}`,
+ status: 302,
+ }
+ }
+
return {
- props: {
- data: res,
- },
+ props: { data: res },
}
}
</script>
<script lang="ts">
- import Head from '$lib/Head.svelte'
- import Header from '$lib/Header.svelte'
- import { browser } from '$app/env'
import Username from '$lib/Username.svelte'
+ import Header from '$lib/Header.svelte'
+ import Head from '$lib/Head.svelte'
export let data
@@ -34,7 +44,6 @@
}
}
- // {%- set activeProfileOnline = getTime() - 60 < activeProfileLastSave -%}
const isActiveProfileOnline = Date.now() / 1000 - 60 < activeProfileLastSave
</script>
@@ -60,36 +69,39 @@
{/if}
</svelte:head>
-<h1><Username player={data.player} headType="3d" />'s profiles</h1>
-
-<ul class="profile-list">
- {#each data.profiles as profile}
- <li
- class="profile-list-item"
- class:profile-list-item-active={profile.uuid === activeProfile.uuid}
- class:profile-list-item-online={profile.uuid === activeProfile.uuid && isActiveProfileOnline}
- >
- <a class="profile-name" href="/player/{data.player.username}/{profile.name}">
- {profile.name}
- </a>
- <span class="profile-members">
- {#if profile.members.length > 1}
- {#each profile.members as player}
- <span class="member">
- <Username
- {player}
- headType="2d"
- hyperlinkToProfile={player.uuid != data.player.uuid}
- />
- </span>
- {/each}
- {:else}
- Solo
- {/if}
- </span>
- </li>
- {/each}
-</ul>
+<main>
+ <h1><Username player={data.player} headType="3d" />'s profiles</h1>
+
+ <ul class="profile-list">
+ {#each data.profiles as profile}
+ <li
+ class="profile-list-item"
+ class:profile-list-item-active={profile.uuid === activeProfile.uuid}
+ class:profile-list-item-online={profile.uuid === activeProfile.uuid &&
+ isActiveProfileOnline}
+ >
+ <a class="profile-name" href="/player/{data.player.username}/{profile.name}">
+ {profile.name}
+ </a>
+ <span class="profile-members">
+ {#if profile.members.length > 1}
+ {#each profile.members as player}
+ <span class="member">
+ <Username
+ {player}
+ headType="2d"
+ hyperlinkToProfile={player.uuid != data.player.uuid}
+ />
+ </span>
+ {/each}
+ {:else}
+ Solo
+ {/if}
+ </span>
+ </li>
+ {/each}
+ </ul>
+</main>
<style>
.profile-name {