Skip to content

Commit 98c81d6

Browse files
committed
Supabase Storage から Local の管理へ切り替え
1 parent 8b2dd10 commit 98c81d6

File tree

266 files changed

+57
-21
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

266 files changed

+57
-21
lines changed

apps/web/app/components/SpeakerPageSection.vue

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
<script setup lang="ts">
22
import SpeakerCfp from '~/components/speaker/SpeakerCfp.vue'
33
import { useLocaleCurrent } from '@/composables/useLocaleCurrent'
4+
import { useSupabaseStorage } from '@/composables/useSupabaseStorage'
45
import type { SpeakerCategory, SpeakerInfo } from '@vuejs-jp/model'
56
import { useRuntimeConfig } from '#imports'
7+
import { REDIRECT_URL } from '~/utils/environment.constants'
68
79
type _SpeakerCategory = Extract<SpeakerCategory, 'sessionSpeakers' | 'lightningTalkSpeakers' | 'sponsorSessionSpeakers'>
810
type Speakers = Record<_SpeakerCategory, SpeakerInfo>
@@ -14,6 +16,8 @@ const props = defineProps<{
1416
const config = useRuntimeConfig()
1517
const currentLocale = useLocaleCurrent().locale
1618
19+
const { getStaticAvatarUrl } = useSupabaseStorage()
20+
1721
const { sessionSpeakers, lightningTalkSpeakers, sponsorSessionSpeakers } = props.data as Speakers
1822
</script>
1923

@@ -32,7 +36,7 @@ const { sessionSpeakers, lightningTalkSpeakers, sponsorSessionSpeakers } = props
3236
:to="`${currentLocale === 'ja' ? '/' : `/${currentLocale}/`}sessions/${speaker.detail_page_id}`"
3337
>
3438
<VFSpeaker
35-
:image="speaker.image_url"
39+
:image="getStaticAvatarUrl(speaker.image_url)"
3640
:company="currentLocale === 'en' ? speaker.company_en : speaker.company_ja"
3741
:division="currentLocale === 'en' ? speaker.position_en : speaker.position_ja"
3842
:name="currentLocale === 'en' ? speaker.name_en : speaker.name_ja"
@@ -42,7 +46,7 @@ const { sessionSpeakers, lightningTalkSpeakers, sponsorSessionSpeakers } = props
4246
</NuxtLink>
4347
<VFSpeaker
4448
v-else
45-
:image="speaker.image_url"
49+
:image="getStaticAvatarUrl(speaker.image_url)"
4650
:company="currentLocale === 'en' ? speaker.company_en : speaker.company_ja"
4751
:division="currentLocale === 'en' ? speaker.position_en : speaker.position_ja"
4852
:name="currentLocale === 'en' ? speaker.name_en : speaker.name_ja"
@@ -68,7 +72,7 @@ const { sessionSpeakers, lightningTalkSpeakers, sponsorSessionSpeakers } = props
6872
:to="`${currentLocale === 'ja' ? '/' : `/${currentLocale}/`}sessions/${speaker.detail_page_id}`"
6973
>
7074
<VFSpeaker
71-
:image="speaker.image_url"
75+
:image="getStaticAvatarUrl(speaker.image_url)"
7276
:company="currentLocale === 'en' ? speaker.company_en : speaker.company_ja"
7377
:division="currentLocale === 'en' ? speaker.position_en : speaker.position_ja"
7478
:name="currentLocale === 'en' ? speaker.name_en : speaker.name_ja"
@@ -78,7 +82,7 @@ const { sessionSpeakers, lightningTalkSpeakers, sponsorSessionSpeakers } = props
7882
</NuxtLink>
7983
<VFSpeaker
8084
v-else
81-
:image="speaker.image_url"
85+
:image="getStaticAvatarUrl(speaker.image_url)"
8286
:company="currentLocale === 'en' ? speaker.company_en : speaker.company_ja"
8387
:division="currentLocale === 'en' ? speaker.position_en : speaker.position_ja"
8488
:name="currentLocale === 'en' ? speaker.name_en : speaker.name_ja"
@@ -99,7 +103,7 @@ const { sessionSpeakers, lightningTalkSpeakers, sponsorSessionSpeakers } = props
99103
:to="`${currentLocale === 'ja' ? '/' : `/${currentLocale}/`}sessions/${speaker.detail_page_id}`"
100104
>
101105
<VFSpeaker
102-
:image="speaker.image_url"
106+
:image="getStaticAvatarUrl(speaker.image_url)"
103107
:company="currentLocale === 'en' ? speaker.company_en : speaker.company_ja"
104108
:division="currentLocale === 'en' ? speaker.position_en : speaker.position_ja"
105109
:name="currentLocale === 'en' ? speaker.name_en : speaker.name_ja"
@@ -109,7 +113,7 @@ const { sessionSpeakers, lightningTalkSpeakers, sponsorSessionSpeakers } = props
109113
</NuxtLink>
110114
<VFSpeaker
111115
v-else
112-
:image="speaker.image_url"
116+
:image="getStaticAvatarUrl(speaker.image_url)"
113117
:company="currentLocale === 'en' ? speaker.company_en : speaker.company_ja"
114118
:division="currentLocale === 'en' ? speaker.position_en : speaker.position_ja"
115119
:name="currentLocale === 'en' ? speaker.name_en : speaker.name_ja"

apps/web/app/components/event/PanelerList.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
<script setup lang="ts">
22
import type { Speaker } from '@vuejs-jp/model'
33
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
4+
import { useSupabaseStorage } from '~/composables/useSupabaseStorage'
45
56
interface PanelerListProps {
67
panelers: Speaker[]
78
}
89
910
const props = defineProps<PanelerListProps>()
1011
12+
const { getStaticAvatarUrl } = useSupabaseStorage()
13+
1114
const currentLocale = useLocaleCurrent().locale
1215
</script>
1316

@@ -16,7 +19,7 @@ const currentLocale = useLocaleCurrent().locale
1619
<VFSpeaker
1720
v-for="paneler in panelers"
1821
:key="paneler.id"
19-
:image="paneler.image_url"
22+
:image="getStaticAvatarUrl(paneler.image_url)"
2023
:company="currentLocale === 'en' ? paneler.company_en : paneler.company_ja"
2124
:division="currentLocale === 'en' ? paneler.position_en : paneler.position_en"
2225
:name="currentLocale === 'en' ? paneler.name_en : paneler.name_ja"

apps/web/app/components/sponsor/SponsorList.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
<script setup lang="ts">
22
import type { PersonalSponsorInfo, SponsorInfo } from '@vuejs-jp/model'
33
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
4+
import { useSupabaseStorage } from '~/composables/useSupabaseStorage'
45
56
type Props = SponsorInfo & {
67
personal?: PersonalSponsorInfo
78
}
89
910
defineProps<Props>()
1011
12+
const { getStaticAvatarUrl } = useSupabaseStorage()
13+
1114
const currentLocale = useLocaleCurrent().locale
1215
</script>
1316

@@ -24,7 +27,7 @@ const currentLocale = useLocaleCurrent().locale
2427
>
2528
<img
2629
class="sponsor-list-item-image"
27-
:src="item['image_url']"
30+
:src="getStaticAvatarUrl(item.image_url)"
2831
:alt="item.name"
2932
loading="lazy"
3033
/>

apps/web/app/components/ticket/NamecardSection.vue

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
<script setup lang="ts">
2-
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
3-
import { endedApplyNormal, endedCreateNamecard, ticketUrl } from '~/utils/constants'
2+
import { endedApplyNormal, endedCreateNamecard, isDone, ticketUrl } from '~/utils/constants'
43
import { useWithBase, usePathWithLocale } from '#imports'
54
6-
const { locale: currentLocale } = useLocaleCurrent()
75
const basePath = useWithBase()
86
const pathWithLocale = usePathWithLocale()
97
</script>
@@ -39,6 +37,7 @@ const pathWithLocale = usePathWithLocale()
3937
:href="pathWithLocale('/namecard')"
4038
background-color="vue-green/200"
4139
color="white"
40+
:disabled="isDone"
4241
>
4342
{{ endedCreateNamecard ? $t('namecard.confirmNamecard') : $t('namecard.createNamecard') }}
4443
</VFLinkButton>
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,22 @@
11
import { useRuntimeConfig } from '#imports'
22
import { bucket } from '@vuejs-jp/model'
3+
import { REDIRECT_URL } from '../utils/environment.constants'
34

45
export function useSupabaseStorage() {
56
const config = useRuntimeConfig()
67
const { supabaseUrl } = config.public
78

9+
function getStaticAvatarUrl(avatarUrl?: string) {
10+
if (!avatarUrl) return `${REDIRECT_URL}/supabase/common/default.png`
11+
12+
return `${REDIRECT_URL}/supabase/common/${new URL(avatarUrl).pathname.split('/').pop()}`
13+
}
14+
815
function getFullAvatarUrl(avatarUrl: string) {
916
if (!avatarUrl) return `${supabaseUrl}/storage/v1/object/public/${bucket}/default.png`
1017
if (avatarUrl?.startsWith(supabaseUrl)) return avatarUrl
1118
return `${supabaseUrl}/storage/v1/object/public/${bucket}${avatarUrl}`
1219
}
1320

14-
return { getFullAvatarUrl }
21+
return { getStaticAvatarUrl, getFullAvatarUrl }
1522
}

apps/web/app/pages/jobboard.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script setup lang="ts">
22
import { useFetch, useHead, usePathWithLocale } from '#imports'
3+
import { useSupabaseStorage } from '~/composables/useSupabaseStorage'
34
import type { JobInfo } from '@vuejs-jp/model'
45
import { conferenceTitle, linkUrl, ogJobboardDescription } from '~/utils/constants'
56
import { generalOg, twitterOg } from '~/utils/og.constants'
@@ -12,6 +13,8 @@ if (error.value) {
1213
}
1314
const { allJobs } = data.value as Jobs
1415
16+
const { getStaticAvatarUrl } = useSupabaseStorage()
17+
1518
const pathWithLocale = usePathWithLocale()
1619
1720
useHead({
@@ -39,7 +42,7 @@ useHead({
3942
<ul class="jobboard-body">
4043
<li v-for="(job, index) in allJobs.list" :key="index">
4144
<nuxt-link :to="job.link_url" target="_blank">
42-
<img :src="job.image_url" :alt="job.image_alt" />
45+
<img :src="getStaticAvatarUrl(job.image_url)" :alt="job.image_alt" />
4346
</nuxt-link>
4447
</li>
4548
</ul>

apps/web/app/pages/sessions/[id]/index.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import type { Speaker } from '@vuejs-jp/model'
1111
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
1212
import { useSupabase } from '~/composables/useSupabase'
1313
import { useSession } from '~/composables/useSession'
14+
import { useSupabaseStorage } from '~/composables/useSupabaseStorage'
1415
import { conferenceTitle, linkUrl, ogSpeakerDescription } from '~/utils/constants'
1516
import { generalOg, twitterOg } from '~/utils/og.constants'
1617
import { useRange } from '@vuejs-jp/composable'
@@ -36,6 +37,7 @@ const { range } = useRange()
3637
const { color, trackName } = useSession()
3738
const currentLocale = useLocaleCurrent().locale
3839
const pathWithLocale = usePathWithLocale()
40+
const { getStaticAvatarUrl } = useSupabaseStorage()
3941
4042
useHead({
4143
titleTemplate: (titleChunk) => `${speakerData[0].session_title_ja} | ${conferenceTitle}`,
@@ -105,7 +107,7 @@ useHead({
105107

106108
<div class="detailbody-persons">
107109
<VFSpeaker
108-
:image="speakerData[0].image_url"
110+
:image="getStaticAvatarUrl(speakerData[0].image_url)"
109111
:company="currentLocale === 'en' ? speakerData[0].company_en : speakerData[0].company_ja"
110112
:division="
111113
currentLocale === 'en' ? speakerData[0].position_en : speakerData[0].position_ja

apps/web/app/pages/sessions/[id]/share.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
} from '#imports'
1010
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
1111
import { useSupabase } from '~/composables/useSupabase'
12+
import { useSupabaseStorage } from '~/composables/useSupabaseStorage'
1213
import { conferenceTitle, linkUrl, ogSpeakerDescription } from '~/utils/constants'
1314
import { generalOg, twitterOg } from '~/utils/og.constants'
1415
import type { Speaker } from '@vuejs-jp/model'
@@ -32,6 +33,8 @@ if (!speakerData[0].detail_page_id) {
3233
3334
const currentLocale = useLocaleCurrent().locale
3435
36+
const { getStaticAvatarUrl } = useSupabaseStorage()
37+
3538
function copyUrl() {
3639
const element = document.createElement('input')
3740
element.value = `https://vuefes.jp/2024/namecard/${id}/share`
@@ -73,7 +76,7 @@ useHead({
7376
class="session"
7477
:user="{
7578
display_name: speakerData[0].name_ja,
76-
avatar_url: speakerData[0].image_url,
79+
avatar_url: getStaticAvatarUrl(speakerData[0].image_url),
7780
role: 'speaker',
7881
}"
7982
/>

apps/web/app/pages/sponsors/[id]/index.vue

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import type { Job, Speaker, Sponsor } from '@vuejs-jp/model'
1111
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
1212
import { useSupabase } from '~/composables/useSupabase'
1313
import { useSponsor } from '~/composables/useSponsor'
14+
import { useSupabaseStorage } from '~/composables/useSupabaseStorage'
1415
import { conferenceTitle, linkUrl, ogSponsorDescription } from '~/utils/constants'
1516
import { generalOg, twitterOg } from '~/utils/og.constants'
1617
import { useColor } from '@vuejs-jp/composable'
@@ -48,6 +49,7 @@ const currentLocale = useLocaleCurrent().locale
4849
const pathWithLocale = usePathWithLocale()
4950
const { color: updateColor } = useColor()
5051
const { color, borderColor, isMoreSilver } = useSponsor()
52+
const { getStaticAvatarUrl } = useSupabaseStorage()
5153
5254
useHead({
5355
titleTemplate: (titleChunk) => `${sponsorData[0].name} | ${conferenceTitle}`,
@@ -92,7 +94,7 @@ useHead({
9294
:style="{ border: `1px solid ${updateColor(borderColor(sponsorData[0].tag))}` }"
9395
>
9496
<img
95-
:src="`${sponsorData[0].image_url}`"
97+
:src="getStaticAvatarUrl(sponsorData[0].image_url)"
9698
:alt="sponsorData[0].name"
9799
width="570"
98100
height="322"
@@ -126,7 +128,7 @@ useHead({
126128
<VFSpeaker
127129
v-for="(speaker, index) in speakerData"
128130
:key="index"
129-
:image="speaker.image_url"
131+
:image="getStaticAvatarUrl(speaker.image_url)"
130132
:company="currentLocale === 'en' ? speaker.company_en : speaker.company_ja"
131133
:division="currentLocale === 'en' ? speaker.position_en : speaker.position_ja"
132134
:name="currentLocale === 'en' ? speaker.name_en : speaker.name_ja"
@@ -158,7 +160,7 @@ useHead({
158160
{{ `${sponsorData[0].name}のジョブボード` }}
159161
</h3>
160162
<nuxt-link :to="jobData[0].link_url" target="_blank">
161-
<img :src="jobData[0].image_url" :alt="jobData[0].image_alt" />
163+
<img :src="getStaticAvatarUrl(jobData[0].image_url)" :alt="jobData[0].image_alt" />
162164
</nuxt-link>
163165
</div>
164166

apps/web/app/pages/sponsors/[id]/share.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
} from '#imports'
1010
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
1111
import { useSupabase } from '~/composables/useSupabase'
12+
import { useSupabaseStorage } from '~/composables/useSupabaseStorage'
1213
import { conferenceTitle, linkUrl, ogSponsorDescription } from '~/utils/constants'
1314
import { generalOg, twitterOg } from '~/utils/og.constants'
1415
import type { Sponsor } from '@vuejs-jp/model'
@@ -32,6 +33,8 @@ if (!sponsorData[0].detail_page_id) {
3233
3334
const currentLocale = useLocaleCurrent().locale
3435
36+
const { getStaticAvatarUrl } = useSupabaseStorage()
37+
3538
function copyUrl() {
3639
const element = document.createElement('input')
3740
element.value = `https://vuefes.jp/2024/namecard/${id}/share`
@@ -73,7 +76,7 @@ useHead({
7376
class="session"
7477
:user="{
7578
display_name: sponsorData[0].name,
76-
avatar_url: sponsorData[0].share_image_url,
79+
avatar_url: getStaticAvatarUrl(sponsorData[0].share_image_url),
7780
role: 'sponsor',
7881
}"
7982
/>

apps/web/app/pages/staffs/[id]/share.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
} from '#imports'
1010
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
1111
import { useSupabase } from '~/composables/useSupabase'
12+
import { useSupabaseStorage } from '~/composables/useSupabaseStorage'
1213
import { conferenceTitle, linkUrl, ogStaffDescription } from '~/utils/constants'
1314
import { generalOg, twitterOg } from '~/utils/og.constants'
1415
import type { Staff } from '@vuejs-jp/model'
@@ -28,6 +29,8 @@ if (!staffData) {
2829
2930
const currentLocale = useLocaleCurrent().locale
3031
32+
const { getStaticAvatarUrl } = useSupabaseStorage()
33+
3134
function copyUrl() {
3235
const element = document.createElement('input')
3336
element.value = `https://vuefes.jp/2024/staffs/${id}/share`
@@ -69,7 +72,7 @@ useHead({
6972
class="staff"
7073
:user="{
7174
display_name: staffData[0].name,
72-
avatar_url: staffData[0].image_url,
75+
avatar_url: getStaticAvatarUrl(staffData[0].image_url),
7376
role: 'staff',
7477
}"
7578
/>

apps/web/app/utils/constants.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ export const endedPurchaseStore = true
5959

6060
export const endedCreateNamecard = true
6161

62+
// Whether the conference is over
63+
export const isDone = true
64+
6265
export const displayNameMaxLength = 24
6366

6467
export const photos = [
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export const isProd = process.env.NODE_ENV === 'production'
22

3-
export const REDIRECT_URL = isProd ? 'https://vuefes.jp/2024' : 'https://localhost:3000'
3+
export const REDIRECT_URL = 'https://vuefes.jp/2024'

apps/web/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// https://nuxt.com/docs/guide/concepts/typescript
33
"extends": "./.nuxt/tsconfig.json",
44
"compilerOptions": {
5+
"lib": ["ESNext", "DOM"],
56
"types": [
67
"@types/node",
78
"@pinia/nuxt",

0 commit comments

Comments
 (0)