어나운스 바 설정 정규화 로직 분리
This commit is contained in:
@@ -1,10 +1,4 @@
|
||||
<script setup>
|
||||
import {
|
||||
DEFAULT_ANNOUNCEMENT_ALIGNMENT,
|
||||
DEFAULT_ANNOUNCEMENT_BACKGROUND_COLOR,
|
||||
normalizeAnnouncementAlignment,
|
||||
normalizeAnnouncementBackgroundColor
|
||||
} from '~/lib/announcement-bar.js'
|
||||
import {
|
||||
DISPLAY_COUNT_OPTIONS,
|
||||
POST_LIST_COUNT_OPTIONS
|
||||
@@ -44,6 +38,13 @@ import {
|
||||
hasBrandSettingsSectionChanges,
|
||||
normalizeBrandSettingsSection
|
||||
} from '~/lib/admin-brand-settings-section.js'
|
||||
import {
|
||||
ANNOUNCEMENT_SETTINGS_FIELDS,
|
||||
assignAnnouncementSettingsSection,
|
||||
createDefaultAnnouncementSettingsSnapshot,
|
||||
hasAnnouncementSettingsSectionChanges,
|
||||
normalizeAnnouncementSettingsSection
|
||||
} from '~/lib/admin-announcement-settings-section.js'
|
||||
|
||||
definePageMeta({
|
||||
layout: 'admin'
|
||||
@@ -182,13 +183,7 @@ const homeCoverSnapshot = reactive({
|
||||
/** 편집 시작 시점의 브랜드 설정(취소 시 복원용) */
|
||||
const brandSnapshot = reactive(createDefaultBrandSettingsSnapshot())
|
||||
/** 맞춤 설정 시작 시점의 어나운스 바(취소 시 복원용) */
|
||||
const announcementSnapshot = reactive({
|
||||
announcementEnabled: false,
|
||||
announcementText: '',
|
||||
announcementUrl: '',
|
||||
announcementBackgroundColor: DEFAULT_ANNOUNCEMENT_BACKGROUND_COLOR,
|
||||
announcementAlignment: DEFAULT_ANNOUNCEMENT_ALIGNMENT
|
||||
})
|
||||
const announcementSnapshot = reactive(createDefaultAnnouncementSettingsSnapshot())
|
||||
/** 편집 시작 시점의 스팸 필터(취소 시 복원용) */
|
||||
const spamSnapshot = reactive(createDefaultSpamSettingsSnapshot())
|
||||
/** 편집 시작 시점의 사이트 코드(취소 시 복원용) */
|
||||
@@ -234,6 +229,7 @@ const initialPostSettings = normalizePostSettingsSection(settings.value)
|
||||
const initialSocialSettings = normalizeSocialSettingsSection(settings.value)
|
||||
const initialSpamSettings = normalizeSpamSettingsSection(settings.value)
|
||||
const initialBrandSettings = normalizeBrandSettingsSection(settings.value)
|
||||
const initialAnnouncementSettings = normalizeAnnouncementSettingsSection(settings.value)
|
||||
|
||||
const form = reactive({
|
||||
title: settings.value?.title || 'sori.studio',
|
||||
@@ -250,11 +246,7 @@ const form = reactive({
|
||||
homeCoverTitle: settings.value?.homeCoverTitle || '',
|
||||
homeCoverText: settings.value?.homeCoverText || '',
|
||||
...initialBrandSettings,
|
||||
announcementEnabled: Boolean(settings.value?.announcementEnabled),
|
||||
announcementText: settings.value?.announcementText || '',
|
||||
announcementUrl: settings.value?.announcementUrl || '',
|
||||
announcementBackgroundColor: normalizeAnnouncementBackgroundColor(settings.value?.announcementBackgroundColor || DEFAULT_ANNOUNCEMENT_BACKGROUND_COLOR),
|
||||
announcementAlignment: normalizeAnnouncementAlignment(settings.value?.announcementAlignment || DEFAULT_ANNOUNCEMENT_ALIGNMENT),
|
||||
...initialAnnouncementSettings,
|
||||
...initialSpamSettings,
|
||||
adsTxt: settings.value?.adsTxt || '',
|
||||
customHeadCode: settings.value?.customHeadCode || '',
|
||||
@@ -326,11 +318,7 @@ const hasBrandChanges = computed(() => editBrand.value
|
||||
* @returns {boolean} 변경 여부
|
||||
*/
|
||||
const hasAnnouncementChanges = computed(() => customizeAnnouncement.value && (
|
||||
form.announcementEnabled !== announcementSnapshot.announcementEnabled
|
||||
|| form.announcementText !== announcementSnapshot.announcementText
|
||||
|| form.announcementUrl !== announcementSnapshot.announcementUrl
|
||||
|| normalizeAnnouncementBackgroundColor(form.announcementBackgroundColor) !== normalizeAnnouncementBackgroundColor(announcementSnapshot.announcementBackgroundColor)
|
||||
|| normalizeAnnouncementAlignment(form.announcementAlignment) !== normalizeAnnouncementAlignment(announcementSnapshot.announcementAlignment)
|
||||
hasAnnouncementSettingsSectionChanges(form, announcementSnapshot)
|
||||
))
|
||||
|
||||
/**
|
||||
@@ -1084,11 +1072,7 @@ const buildSiteSettingsPayload = (fields = null) => {
|
||||
homeCoverTitle: form.homeCoverTitle || '',
|
||||
homeCoverText: form.homeCoverText || '',
|
||||
...normalizeBrandSettingsSection(form),
|
||||
announcementEnabled: Boolean(form.announcementEnabled),
|
||||
announcementText: form.announcementText || '',
|
||||
announcementUrl: form.announcementUrl || '',
|
||||
announcementBackgroundColor: normalizeAnnouncementBackgroundColor(form.announcementBackgroundColor || DEFAULT_ANNOUNCEMENT_BACKGROUND_COLOR),
|
||||
announcementAlignment: normalizeAnnouncementAlignment(form.announcementAlignment || DEFAULT_ANNOUNCEMENT_ALIGNMENT),
|
||||
...normalizeAnnouncementSettingsSection(form),
|
||||
...normalizeSpamSettingsSection(form),
|
||||
adsTxt: form.adsTxt || '',
|
||||
customHeadCode: form.customHeadCode || '',
|
||||
@@ -1514,11 +1498,8 @@ const saveBrandSection = async () => {
|
||||
* @returns {void}
|
||||
*/
|
||||
const beginCustomizeAnnouncement = () => {
|
||||
announcementSnapshot.announcementEnabled = form.announcementEnabled
|
||||
announcementSnapshot.announcementText = form.announcementText
|
||||
announcementSnapshot.announcementUrl = form.announcementUrl
|
||||
announcementSnapshot.announcementBackgroundColor = normalizeAnnouncementBackgroundColor(form.announcementBackgroundColor || DEFAULT_ANNOUNCEMENT_BACKGROUND_COLOR)
|
||||
announcementSnapshot.announcementAlignment = normalizeAnnouncementAlignment(form.announcementAlignment || DEFAULT_ANNOUNCEMENT_ALIGNMENT)
|
||||
assignAnnouncementSettingsSection(announcementSnapshot, form)
|
||||
assignAnnouncementSettingsSection(form, announcementSnapshot)
|
||||
customizeAnnouncement.value = true
|
||||
}
|
||||
|
||||
@@ -1527,11 +1508,7 @@ const beginCustomizeAnnouncement = () => {
|
||||
* @returns {void}
|
||||
*/
|
||||
const cancelCustomizeAnnouncement = () => {
|
||||
form.announcementEnabled = announcementSnapshot.announcementEnabled
|
||||
form.announcementText = announcementSnapshot.announcementText
|
||||
form.announcementUrl = announcementSnapshot.announcementUrl
|
||||
form.announcementBackgroundColor = announcementSnapshot.announcementBackgroundColor
|
||||
form.announcementAlignment = announcementSnapshot.announcementAlignment
|
||||
assignAnnouncementSettingsSection(form, announcementSnapshot)
|
||||
customizeAnnouncement.value = false
|
||||
}
|
||||
|
||||
@@ -1547,21 +1524,12 @@ const saveAnnouncementSection = async () => {
|
||||
const ok = await persistSiteSettings({
|
||||
successToast: '어나운스 바 설정이 저장되었습니다.',
|
||||
savingFlag: savingAnnouncement,
|
||||
fields: [
|
||||
'announcementEnabled',
|
||||
'announcementText',
|
||||
'announcementUrl',
|
||||
'announcementBackgroundColor',
|
||||
'announcementAlignment'
|
||||
]
|
||||
fields: ANNOUNCEMENT_SETTINGS_FIELDS
|
||||
})
|
||||
|
||||
if (ok) {
|
||||
announcementSnapshot.announcementEnabled = form.announcementEnabled
|
||||
announcementSnapshot.announcementText = form.announcementText
|
||||
announcementSnapshot.announcementUrl = form.announcementUrl
|
||||
announcementSnapshot.announcementBackgroundColor = normalizeAnnouncementBackgroundColor(form.announcementBackgroundColor || DEFAULT_ANNOUNCEMENT_BACKGROUND_COLOR)
|
||||
announcementSnapshot.announcementAlignment = normalizeAnnouncementAlignment(form.announcementAlignment || DEFAULT_ANNOUNCEMENT_ALIGNMENT)
|
||||
assignAnnouncementSettingsSection(announcementSnapshot, form)
|
||||
assignAnnouncementSettingsSection(form, announcementSnapshot)
|
||||
customizeAnnouncement.value = false
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user