릴리스: v1.4.5 프런트 내부 명칭 정리 1차

This commit is contained in:
2026-04-02 18:26:18 +09:00
parent a733c97991
commit 1ed08d1e34
8 changed files with 68 additions and 61 deletions

View File

@@ -19,10 +19,10 @@ const auth = useAuthStore()
const toast = useToast()
const globalRightRailOpen = inject('rightRailOpen', ref(true))
const localRightRailTarget = inject('localRightRailTarget', '#local-right-rail-root')
const gameId = computed(() => route.params.gameId)
const templateId = computed(() => route.params.gameId)
const tierListId = computed(() => route.params.tierListId)
const previewMode = computed(() => route.query.preview === '1')
const gameName = ref('')
const templateName = ref('')
const columns = ref([{ id: 'col-1', name: '' }])
const groups = ref([
@@ -123,19 +123,19 @@ const copiedFromLabel = computed(() => {
const customItems = computed(() => getOrderedItems().filter((item) => item?.origin === 'custom'))
const hasSavedTierList = computed(() => !!(persistedTierListId.value || (tierListId.value && tierListId.value !== 'new')))
const canRequestTemplateCreate = computed(
() => canEdit.value && hasSavedTierList.value && gameId.value === 'freeform' && customItems.value.length > 0
() => canEdit.value && hasSavedTierList.value && templateId.value === 'freeform' && customItems.value.length > 0
)
const canRequestTemplateUpdate = computed(
() => canEdit.value && hasSavedTierList.value && gameId.value !== 'freeform' && customItems.value.length > 0
() => canEdit.value && hasSavedTierList.value && templateId.value !== 'freeform' && customItems.value.length > 0
)
const canSubmitTemplateCreateRequest = computed(() => !!templateRequestDraftTitle.value.trim() && !!templateRequestDraftDescription.value.trim())
const canSubmitTemplateUpdateRequest = computed(() => !!templateRequestDraftTitle.value.trim() && !!templateRequestDraftDescription.value.trim())
const templateRequestTargetLabel = computed(() => (gameId.value === 'freeform' ? '새로운 템플릿' : (gameName.value || gameId.value || '선택한 주제')))
const templateRequestTargetLabel = computed(() => (templateId.value === 'freeform' ? '새로운 템플릿' : (templateName.value || templateId.value || '선택한 주제')))
const shareTierListUrl = computed(() => {
const savedTierListId = persistedTierListId.value || (tierListId.value && tierListId.value !== 'new' ? tierListId.value : '')
if (!savedTierListId) return ''
if (typeof window === 'undefined') return `/editor/${gameId.value}/${savedTierListId}?preview=1`
return new URL(`/editor/${gameId.value}/${savedTierListId}?preview=1`, window.location.origin).toString()
if (typeof window === 'undefined') return `/editor/${templateId.value}/${savedTierListId}?preview=1`
return new URL(`/editor/${templateId.value}/${savedTierListId}?preview=1`, window.location.origin).toString()
})
watch(error, (message) => {
@@ -672,7 +672,7 @@ function buildPayload(existingId) {
const finalTitle = effectiveTitle.value
return {
id: existingId || undefined,
gameId: gameId.value,
gameId: templateId.value,
title: finalTitle,
thumbnailSrc: thumbnailSrc.value || '',
description: (description.value || '').trim(),
@@ -697,7 +697,7 @@ async function persistTierList({ showModal = false } = {}) {
persistedTierListId.value = savedTierListId || ''
title.value = res.tierList?.title || payload.title
if (tierListId.value === 'new' && res.tierList?.id) {
await router.replace(`/editor/${gameId.value}/${res.tierList.id}`)
await router.replace(`/editor/${templateId.value}/${res.tierList.id}`)
}
updatedAt.value = Number(res.tierList?.updatedAt || Date.now())
authorName.value = res.tierList?.authorName || effectiveAuthorName.value
@@ -793,7 +793,7 @@ async function confirmDeleteTierList() {
await api.deleteTierList(currentTierListId)
closeDeleteModal()
toast.success('티어표를 삭제했어요.')
router.push(gameId.value === 'freeform' ? '/me' : `/games/${gameId.value}`)
router.push(templateId.value === 'freeform' ? '/me' : `/games/${templateId.value}`)
} catch (e) {
error.value = '티어표 삭제에 실패했어요.'
} finally {
@@ -808,7 +808,7 @@ async function duplicateCurrentTierList() {
const duplicatedId = data.tierList?.id
if (!duplicatedId) throw new Error('duplicate_failed')
toast.success('티어표를 복사해 내 작업으로 가져왔어요.')
router.push(`/editor/${gameId.value}/${duplicatedId}`)
router.push(`/editor/${templateId.value}/${duplicatedId}`)
} catch (e) {
error.value = '티어표 복사에 실패했어요.'
}
@@ -841,7 +841,7 @@ async function requestTemplate(type) {
await api.requestTierListTemplate({
type,
sourceTierListId: sourceId,
gameId: gameId.value,
gameId: templateId.value,
requestTitle: templateRequestDraftTitle.value.trim(),
requestDescription: templateRequestDraftDescription.value.trim(),
thumbnailSrc: saved.tierList?.thumbnailSrc || thumbnailSrc.value || '',
@@ -892,13 +892,13 @@ onMounted(() => {
authorAccountName.value = ((auth.user?.email || '').trim().split('@')[0] || '').trim()
if (isNewTierList.value && !auth.user) {
router.replace(`/login?redirect=/editor/${gameId.value}/new`)
router.replace(`/login?redirect=/editor/${templateId.value}/new`)
return
}
try {
const gameRes = await api.getGame(gameId.value)
gameName.value = gameRes.game?.name || gameId.value
const gameRes = await api.getGame(templateId.value)
templateName.value = gameRes.game?.name || templateId.value
const base = (gameRes.items || []).map((img) => ({
id: img.id,
src: img.src,
@@ -1079,7 +1079,7 @@ onUnmounted(() => {
<div class="modalCard" role="dialog" aria-modal="true" aria-labelledby="deleteTierListTitle">
<div id="deleteTierListTitle" class="modalCard__title">티어표 삭제</div>
<div class="modalCard__desc">
"{{ title || gameName || '이 티어표' }}" 삭제할까요? 삭제 후에는 복구할 없어요.
"{{ title || templateName || '이 티어표' }}" 삭제할까요? 삭제 후에는 복구할 없어요.
</div>
<div class="modalCard__actions">
<button class="btn btn--ghost" @click="closeDeleteModal">취소</button>
@@ -1120,7 +1120,7 @@ onUnmounted(() => {
<div class="editorMain">
<section class="head">
<div class="editorMain__headCopy">
<div class="editorMain__title">{{ gameName || gameId }}</div>
<div class="editorMain__title">{{ templateName || templateId }}</div>
<div class="editorMain__subtitle">
<template v-if="canEdit">
/ 이름과 순서를 바꾸고 아이템을 드래그해서 배치할 있어요.
@@ -1131,7 +1131,7 @@ onUnmounted(() => {
</div>
<div v-if="sourceTierListId" class="editorMain__sourceNote">
<span>복사본</span>
<button class="editorMain__sourceLink" type="button" @click="router.push(`/editor/${gameId}/${sourceTierListId}`)">{{ copiedFromLabel }}</button>
<button class="editorMain__sourceLink" type="button" @click="router.push(`/editor/${templateId}/${sourceTierListId}`)">{{ copiedFromLabel }}</button>
</div>
</div>
</section>