브랜드 컬러 설정 추가 v1.5.36
This commit is contained in:
@@ -9,6 +9,7 @@ import { getDefaultNavigationItems } from '../utils/navigation-items'
|
||||
import { buildPublicPrimaryTree, orderNavigationItemsForInsert } from '../utils/navigation-tree'
|
||||
import { getDefaultSiteSettings } from '../utils/site-settings'
|
||||
import { toAdminPostFormTitle } from '../../lib/admin-post-title.js'
|
||||
import { DEFAULT_BRAND_COLOR, normalizeBrandColor } from '../../lib/brand-color.js'
|
||||
import {
|
||||
normalizeSignupBlockedUsernames,
|
||||
parseSignupBlockedUsernamesFromDb
|
||||
@@ -105,6 +106,7 @@ const mapSiteSettingsRow = (row) => ({
|
||||
homeCoverDarkImageUrl: row.home_cover_dark_image_url || '',
|
||||
homeCoverTitle: row.home_cover_title || '',
|
||||
homeCoverText: row.home_cover_text || '',
|
||||
brandColor: normalizeBrandColor(row.brand_color || DEFAULT_BRAND_COLOR),
|
||||
announcementEnabled: Boolean(row.announcement_enabled),
|
||||
announcementText: row.announcement_text || '',
|
||||
announcementUrl: row.announcement_url || '',
|
||||
@@ -872,6 +874,7 @@ export const updateSiteSettings = async (input) => {
|
||||
home_cover_dark_image_url,
|
||||
home_cover_title,
|
||||
home_cover_text,
|
||||
brand_color,
|
||||
announcement_enabled,
|
||||
announcement_text,
|
||||
announcement_url,
|
||||
@@ -896,6 +899,7 @@ export const updateSiteSettings = async (input) => {
|
||||
${input.homeCoverDarkImageUrl || ''},
|
||||
${input.homeCoverTitle || ''},
|
||||
${input.homeCoverText || ''},
|
||||
${normalizeBrandColor(input.brandColor)},
|
||||
${input.announcementEnabled ? true : false},
|
||||
${input.announcementText || ''},
|
||||
${input.announcementUrl || ''},
|
||||
@@ -920,6 +924,7 @@ export const updateSiteSettings = async (input) => {
|
||||
home_cover_dark_image_url = EXCLUDED.home_cover_dark_image_url,
|
||||
home_cover_title = EXCLUDED.home_cover_title,
|
||||
home_cover_text = EXCLUDED.home_cover_text,
|
||||
brand_color = EXCLUDED.brand_color,
|
||||
announcement_enabled = EXCLUDED.announcement_enabled,
|
||||
announcement_text = EXCLUDED.announcement_text,
|
||||
announcement_url = EXCLUDED.announcement_url,
|
||||
|
||||
@@ -4,6 +4,11 @@ import {
|
||||
isValidAnnouncementBackgroundColor,
|
||||
normalizeAnnouncementUrl
|
||||
} from '../../lib/announcement-bar.js'
|
||||
import {
|
||||
DEFAULT_BRAND_COLOR,
|
||||
isValidBrandColor,
|
||||
normalizeBrandColor
|
||||
} from '../../lib/brand-color.js'
|
||||
import {
|
||||
DEFAULT_SIGNUP_BLOCKED_USERNAMES,
|
||||
MAX_SIGNUP_BLOCKED_USERNAME_COUNT,
|
||||
@@ -24,6 +29,7 @@ export const adminSiteSettingsInputSchema = z.object({
|
||||
homeCoverDarkImageUrl: z.string().trim().max(500).optional().default(''),
|
||||
homeCoverTitle: z.string().trim().max(120).optional().default(''),
|
||||
homeCoverText: z.string().trim().max(280).optional().default(''),
|
||||
brandColor: z.string().trim().optional().default(DEFAULT_BRAND_COLOR),
|
||||
announcementEnabled: z.boolean().optional().default(false),
|
||||
announcementText: z.string().trim().max(200).optional().default(''),
|
||||
announcementUrl: z.string().trim().max(500).optional().default(''),
|
||||
@@ -43,6 +49,14 @@ export const adminSiteSettingsInputSchema = z.object({
|
||||
})
|
||||
}
|
||||
|
||||
if (!isValidBrandColor(data.brandColor)) {
|
||||
ctx.addIssue({
|
||||
code: z.ZodIssueCode.custom,
|
||||
message: '브랜드 컬러가 올바르지 않습니다.',
|
||||
path: ['brandColor']
|
||||
})
|
||||
}
|
||||
|
||||
if (data.announcementEnabled && !data.announcementText.trim()) {
|
||||
ctx.addIssue({
|
||||
code: z.ZodIssueCode.custom,
|
||||
@@ -52,6 +66,7 @@ export const adminSiteSettingsInputSchema = z.object({
|
||||
}
|
||||
}).transform((data) => ({
|
||||
...data,
|
||||
brandColor: normalizeBrandColor(data.brandColor),
|
||||
announcementUrl: normalizeAnnouncementUrl(data.announcementUrl),
|
||||
signupBlockedUsernames: normalizeSignupBlockedUsernames(data.signupBlockedUsernames)
|
||||
}))
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { DEFAULT_BRAND_COLOR } from '../../lib/brand-color.js'
|
||||
import { DEFAULT_SIGNUP_BLOCKED_USERNAMES } from '../../lib/signup-blocked-usernames.js'
|
||||
|
||||
/**
|
||||
@@ -21,6 +22,7 @@ export const getDefaultSiteSettings = () => {
|
||||
homeCoverDarkImageUrl: '',
|
||||
homeCoverTitle: '',
|
||||
homeCoverText: '',
|
||||
brandColor: DEFAULT_BRAND_COLOR,
|
||||
announcementEnabled: false,
|
||||
announcementText: '',
|
||||
announcementUrl: '',
|
||||
|
||||
Reference in New Issue
Block a user