스팸 필터 설정 정규화 로직 분리
This commit is contained in:
66
lib/admin-spam-settings-section.js
Normal file
66
lib/admin-spam-settings-section.js
Normal file
@@ -0,0 +1,66 @@
|
||||
import {
|
||||
normalizeSignupBlockedUsernames,
|
||||
parseSignupBlockedUsernamesFromText
|
||||
} from './signup-blocked-usernames.js'
|
||||
|
||||
export const SPAM_SETTINGS_FIELDS = ['signupBlockedUsernames']
|
||||
|
||||
/**
|
||||
* 스팸 필터 설정 기본 스냅샷을 만든다.
|
||||
* @returns {Object} 기본 스팸 필터 설정 값
|
||||
*/
|
||||
export const createDefaultSpamSettingsSnapshot = () => ({
|
||||
signupBlockedUsernames: normalizeSignupBlockedUsernames()
|
||||
})
|
||||
|
||||
/**
|
||||
* 스팸 필터 설정 값을 저장·비교 가능한 형태로 정규화한다.
|
||||
* @param {Object} source - 원본 설정 값
|
||||
* @returns {Object} 정규화된 스팸 필터 설정 값
|
||||
*/
|
||||
export const normalizeSpamSettingsSection = (source = {}) => ({
|
||||
signupBlockedUsernames: normalizeSignupBlockedUsernames(source.signupBlockedUsernames)
|
||||
})
|
||||
|
||||
/**
|
||||
* 스팸 필터 설정 필드만 대상 객체에 복사한다.
|
||||
* @param {Object} target - 값을 받을 객체
|
||||
* @param {Object} source - 값을 제공할 객체
|
||||
* @returns {void}
|
||||
*/
|
||||
export const assignSpamSettingsSection = (target, source = {}) => {
|
||||
const normalized = normalizeSpamSettingsSection(source)
|
||||
SPAM_SETTINGS_FIELDS.forEach((field) => {
|
||||
target[field] = normalized[field]
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 두 스팸 필터 설정 값이 다른지 확인한다.
|
||||
* @param {Object} current - 현재 설정 값
|
||||
* @param {Object} snapshot - 비교할 스냅샷
|
||||
* @returns {boolean} 변경 여부
|
||||
*/
|
||||
export const hasSpamSettingsSectionChanges = (current, snapshot) => {
|
||||
const normalizedCurrent = normalizeSpamSettingsSection(current)
|
||||
const normalizedSnapshot = normalizeSpamSettingsSection(snapshot)
|
||||
return JSON.stringify(normalizedCurrent.signupBlockedUsernames) !== JSON.stringify(normalizedSnapshot.signupBlockedUsernames)
|
||||
}
|
||||
|
||||
/**
|
||||
* 스팸 필터 금지 닉네임 배열을 textarea 값으로 변환한다.
|
||||
* @param {Object} source - 스팸 필터 설정 값
|
||||
* @returns {string} 줄바꿈 구분 textarea 값
|
||||
*/
|
||||
export const formatSpamBlockedUsernamesText = (source = {}) => {
|
||||
return normalizeSpamSettingsSection(source).signupBlockedUsernames.join('\n')
|
||||
}
|
||||
|
||||
/**
|
||||
* textarea 값을 스팸 필터 설정 값으로 변환한다.
|
||||
* @param {string} text - 줄바꿈 구분 입력
|
||||
* @returns {Object} 정규화된 스팸 필터 설정 값
|
||||
*/
|
||||
export const parseSpamBlockedUsernamesText = (text) => ({
|
||||
signupBlockedUsernames: parseSignupBlockedUsernamesFromText(text)
|
||||
})
|
||||
Reference in New Issue
Block a user