릴리스: v1.4.6 관리자 내부 명칭 정리 2차

This commit is contained in:
2026-04-02 18:43:39 +09:00
parent 1ed08d1e34
commit 20955e277c
10 changed files with 401 additions and 393 deletions

View File

@@ -5,8 +5,8 @@ export function useAdminFeaturedGames({
api,
featuredListEl,
featuredSortable,
featuredGameIds,
games,
featuredTemplateIds,
templates,
resetMessages,
success,
error,
@@ -31,51 +31,51 @@ export function useAdminFeaturedGames({
chosenClass: 'chosen',
onEnd: (evt) => {
if (evt.oldIndex == null || evt.newIndex == null || evt.oldIndex === evt.newIndex) return
const nextIds = [...featuredGameIds.value]
const nextIds = [...featuredTemplateIds.value]
const [moved] = nextIds.splice(evt.oldIndex, 1)
nextIds.splice(evt.newIndex, 0, moved)
featuredGameIds.value = nextIds
featuredTemplateIds.value = nextIds
},
})
}
function addFeaturedGame(gameId) {
function addFeaturedTemplate(templateId) {
resetMessages()
if (!gameId || featuredGameIds.value.includes(gameId)) return
if (featuredGameIds.value.length >= 50) {
if (!templateId || featuredTemplateIds.value.includes(templateId)) return
if (featuredTemplateIds.value.length >= 50) {
error.value = '상단 고정 템플릿은 최대 50개까지만 설정할 수 있어요.'
return
}
featuredGameIds.value = [...featuredGameIds.value, gameId]
featuredTemplateIds.value = [...featuredTemplateIds.value, templateId]
syncFeaturedSortable()
}
function removeFeaturedGame(gameId) {
function removeFeaturedTemplate(templateId) {
resetMessages()
featuredGameIds.value = featuredGameIds.value.filter((id) => id !== gameId)
featuredTemplateIds.value = featuredTemplateIds.value.filter((id) => id !== templateId)
syncFeaturedSortable()
}
function moveFeaturedGame(gameId, direction) {
const currentIndex = featuredGameIds.value.indexOf(gameId)
function moveFeaturedTemplate(templateId, direction) {
const currentIndex = featuredTemplateIds.value.indexOf(templateId)
const nextIndex = currentIndex + direction
if (currentIndex < 0 || nextIndex < 0 || nextIndex >= featuredGameIds.value.length) return
const nextIds = [...featuredGameIds.value]
if (currentIndex < 0 || nextIndex < 0 || nextIndex >= featuredTemplateIds.value.length) return
const nextIds = [...featuredTemplateIds.value]
const [moved] = nextIds.splice(currentIndex, 1)
nextIds.splice(nextIndex, 0, moved)
featuredGameIds.value = nextIds
featuredTemplateIds.value = nextIds
syncFeaturedSortable()
}
async function saveFeaturedOrder() {
resetMessages()
try {
const data = await api.updateAdminGameDisplayOrder({ gameIds: featuredGameIds.value })
games.value = data.games || []
featuredGameIds.value = games.value
.filter((game) => game.displayRank != null)
const data = await api.updateAdminGameDisplayOrder({ gameIds: featuredTemplateIds.value })
templates.value = data.games || []
featuredTemplateIds.value = templates.value
.filter((template) => template.displayRank != null)
.sort((a, b) => a.displayRank - b.displayRank)
.map((game) => game.id)
.map((template) => template.id)
success.value = '홈 화면 템플릿 순서를 저장했어요.'
} catch (e) {
error.value = '템플릿 순서 저장에 실패했어요.'
@@ -85,9 +85,9 @@ export function useAdminFeaturedGames({
return {
destroyFeaturedSortable,
syncFeaturedSortable,
addFeaturedGame,
removeFeaturedGame,
moveFeaturedGame,
addFeaturedTemplate,
removeFeaturedTemplate,
moveFeaturedTemplate,
saveFeaturedOrder,
}
}