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 @@