Adds display of Team members
This commit is contained in:
@@ -6,10 +6,11 @@
|
||||
apiGetHunterTeam,
|
||||
apiGetOngoingHunts,
|
||||
apiGetUnstartedHunts,
|
||||
apiGetTeamHunters,
|
||||
apiJoinTeam,
|
||||
apiListTeams,
|
||||
} from '../../lib/api/index'
|
||||
import type {HuntResponse, TeamResponse} from '../../lib/api/types'
|
||||
import type {HuntResponse, HunterSummaryResponse, TeamResponse} from '../../lib/api/types'
|
||||
import StatusBadge from '../../lib/components/StatusBadge.svelte'
|
||||
import LoadingSpinner from '../../lib/components/LoadingSpinner.svelte'
|
||||
|
||||
@@ -53,6 +54,7 @@
|
||||
|
||||
let sheetHunt = $state<HuntResponse | null>(null)
|
||||
let sheetTeams = $state<TeamResponse[]>([])
|
||||
let sheetMembers = $state<HunterSummaryResponse[]>([])
|
||||
let sheetLoading = $state(false)
|
||||
let newTeamName = $state('')
|
||||
let creatingTeam = $state(false)
|
||||
@@ -63,9 +65,20 @@
|
||||
sheetHunt = hunt
|
||||
sheetError = ''
|
||||
newTeamName = ''
|
||||
sheetMembers = []
|
||||
sheetLoading = true
|
||||
try {
|
||||
sheetTeams = await apiListTeams(hunt.id)
|
||||
const myTeam = upcomingTeams[hunt.id]
|
||||
if (myTeam) {
|
||||
const [teams, members] = await Promise.all([
|
||||
apiListTeams(hunt.id),
|
||||
apiGetTeamHunters(hunt.id, myTeam.id),
|
||||
])
|
||||
sheetTeams = teams
|
||||
sheetMembers = members
|
||||
} else {
|
||||
sheetTeams = await apiListTeams(hunt.id)
|
||||
}
|
||||
} catch (e: unknown) {
|
||||
sheetError = e instanceof Error ? e.message : 'Failed to load teams'
|
||||
} finally {
|
||||
@@ -237,10 +250,21 @@
|
||||
<LoadingSpinner />
|
||||
{:else if myTeam}
|
||||
<!-- Already on a team -->
|
||||
<div class="rounded-xl border border-base-200 p-4">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-base-content/40 mb-1">Your Team</p>
|
||||
<p class="text-lg font-bold">{myTeam.name}</p>
|
||||
<!-- Team member list will be available once the backend exposes a members endpoint -->
|
||||
<div class="rounded-xl border border-base-200 p-4 flex flex-col gap-3">
|
||||
<div>
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-base-content/40 mb-1">Your Team</p>
|
||||
<p class="text-lg font-bold">{myTeam.name}</p>
|
||||
</div>
|
||||
{#if sheetMembers.length > 0}
|
||||
<div>
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-base-content/40 mb-2">Members</p>
|
||||
<div class="flex flex-col gap-1">
|
||||
{#each sheetMembers as member}
|
||||
<p class="text-sm font-medium">{member.name}</p>
|
||||
{/each}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
{:else}
|
||||
<!-- Join or create -->
|
||||
|
||||
Reference in New Issue
Block a user