diff --git a/apps/web/app/components/SpeakerPageSection.vue b/apps/web/app/components/SpeakerPageSection.vue index cc3acff6..a6b48064 100644 --- a/apps/web/app/components/SpeakerPageSection.vue +++ b/apps/web/app/components/SpeakerPageSection.vue @@ -1,8 +1,10 @@ @@ -32,7 +36,7 @@ const { sessionSpeakers, lightningTalkSpeakers, sponsorSessionSpeakers } = props :to="`${currentLocale === 'ja' ? '/' : `/${currentLocale}/`}sessions/${speaker.detail_page_id}`" > import type { Speaker } from '@vuejs-jp/model' import { useLocaleCurrent } from '~/composables/useLocaleCurrent' +import { useSupabaseStorage } from '~/composables/useSupabaseStorage' interface PanelerListProps { panelers: Speaker[] @@ -8,6 +9,8 @@ interface PanelerListProps { const props = defineProps() +const { getStaticAvatarUrl } = useSupabaseStorage() + const currentLocale = useLocaleCurrent().locale @@ -16,7 +19,7 @@ const currentLocale = useLocaleCurrent().locale import type { PersonalSponsorInfo, SponsorInfo } from '@vuejs-jp/model' import { useLocaleCurrent } from '~/composables/useLocaleCurrent' +import { useSupabaseStorage } from '~/composables/useSupabaseStorage' type Props = SponsorInfo & { personal?: PersonalSponsorInfo @@ -8,6 +9,8 @@ type Props = SponsorInfo & { defineProps() +const { getStaticAvatarUrl } = useSupabaseStorage() + const currentLocale = useLocaleCurrent().locale @@ -24,7 +27,7 @@ const currentLocale = useLocaleCurrent().locale > diff --git a/apps/web/app/components/ticket/NamecardSection.vue b/apps/web/app/components/ticket/NamecardSection.vue index caef6137..27c61594 100644 --- a/apps/web/app/components/ticket/NamecardSection.vue +++ b/apps/web/app/components/ticket/NamecardSection.vue @@ -1,9 +1,7 @@ @@ -39,6 +37,7 @@ const pathWithLocale = usePathWithLocale() :href="pathWithLocale('/namecard')" background-color="vue-green/200" color="white" + :disabled="isDone" > {{ endedCreateNamecard ? $t('namecard.confirmNamecard') : $t('namecard.createNamecard') }} diff --git a/apps/web/app/composables/useSupabaseStorage.ts b/apps/web/app/composables/useSupabaseStorage.ts index 64ff9b80..8931950c 100644 --- a/apps/web/app/composables/useSupabaseStorage.ts +++ b/apps/web/app/composables/useSupabaseStorage.ts @@ -1,15 +1,22 @@ import { useRuntimeConfig } from '#imports' import { bucket } from '@vuejs-jp/model' +import { REDIRECT_URL } from '../utils/environment.constants' export function useSupabaseStorage() { const config = useRuntimeConfig() const { supabaseUrl } = config.public + function getStaticAvatarUrl(avatarUrl?: string) { + if (!avatarUrl) return `${REDIRECT_URL}/supabase/common/default.png` + + return `${REDIRECT_URL}/supabase/common/${new URL(avatarUrl).pathname.split('/').pop()}` + } + function getFullAvatarUrl(avatarUrl: string) { if (!avatarUrl) return `${supabaseUrl}/storage/v1/object/public/${bucket}/default.png` if (avatarUrl?.startsWith(supabaseUrl)) return avatarUrl return `${supabaseUrl}/storage/v1/object/public/${bucket}${avatarUrl}` } - return { getFullAvatarUrl } + return { getStaticAvatarUrl, getFullAvatarUrl } } diff --git a/apps/web/app/pages/jobboard.vue b/apps/web/app/pages/jobboard.vue index cc88066c..740929a4 100644 --- a/apps/web/app/pages/jobboard.vue +++ b/apps/web/app/pages/jobboard.vue @@ -1,5 +1,6 @@