|
1 | 1 | <script setup lang="ts">
|
2 | 2 | import { useFetch, useHead } from '#imports'
|
3 |
| -import type { SpeakerCategory, SpeakerInfo, SponsorCategory, SponsorInfo, StaffCategory, StaffInfo } from '@vuejs-jp/model' |
| 3 | +import type { PanelerInfo, SpeakerCategory, SpeakerInfo, SponsorCategory, SponsorInfo, StaffCategory, StaffInfo } from '@vuejs-jp/model' |
4 | 4 | import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
|
5 | 5 | import { conferenceTitle, linkUrl, ogSharemapDescription } from '~/utils/constants'
|
6 | 6 | import { generalOg, twitterOg } from '~/utils/og.constants'
|
7 | 7 |
|
8 | 8 | type _SpeakerCategory = Extract<SpeakerCategory, 'sessionSpeakers' | 'lightningTalkSpeakers' | 'sponsorSessionSpeakers'>
|
| 9 | +type _PanelerCategory = Extract<SpeakerCategory, 'panelEventPanelers'> |
9 | 10 | type Speakers = Record<_SpeakerCategory, SpeakerInfo>
|
| 11 | +type Panelers = Record<_PanelerCategory, PanelerInfo> |
10 | 12 |
|
11 | 13 | type Sponsors = Record<SponsorCategory, SponsorInfo>
|
12 | 14 |
|
13 | 15 | type Staffs = Record<StaffCategory, StaffInfo>
|
14 | 16 |
|
15 | 17 | const { data: speakers, error: error1 } = await useFetch('/api/speakers')
|
16 | 18 | const { sessionSpeakers, lightningTalkSpeakers, sponsorSessionSpeakers } = speakers.value as Speakers
|
| 19 | +const { panelEventPanelers } = speakers.value as Panelers |
17 | 20 | if (error1.value) {
|
18 | 21 | console.error(error1.value)
|
19 | 22 | }
|
@@ -71,7 +74,19 @@ useHead({
|
71 | 74 | <div>
|
72 | 75 | <VFTitle id="speaker">{{ $t('speaker.title') }}</VFTitle>
|
73 | 76 | <VFTextLink
|
74 |
| - v-for="speaker in [...sessionSpeakers.list, ...lightningTalkSpeakers.list, ...sponsorSessionSpeakers.list]" |
| 77 | + v-for="speaker in Array.from( |
| 78 | + new Map( |
| 79 | + [ |
| 80 | + ...sessionSpeakers.list, |
| 81 | + ...lightningTalkSpeakers.list, |
| 82 | + ...sponsorSessionSpeakers.list, |
| 83 | + ...panelEventPanelers.list['nextgen-frontend-crosstalk'], |
| 84 | + ...panelEventPanelers.list['welcome-vuejs-community'], |
| 85 | + ] |
| 86 | + .map((item) => [JSON.stringify(item), item]) |
| 87 | + ) |
| 88 | + .values() |
| 89 | + )" |
75 | 90 | :key="speaker.id"
|
76 | 91 | :href="`/sessions/${speaker.detail_page_id}/share`"
|
77 | 92 | color="vue-blue"
|
|
0 commit comments