21 lines
960 B
JavaScript
21 lines
960 B
JavaScript
import { assertPlainPayload } from './request-normalizers.js'
|
|
|
|
export const normalizeFeedbackPayload = (payload) => {
|
|
const allowedFields = new Set(['feedbackType', 'feedbackContent', 'contactInfo'])
|
|
assertPlainPayload(payload, allowedFields, '反馈请求')
|
|
if (typeof payload.feedbackContent !== 'string' || !payload.feedbackContent.trim()) {
|
|
throw new TypeError('反馈内容必须是非空字符串')
|
|
}
|
|
const normalizedPayload = { feedbackContent: payload.feedbackContent.trim() }
|
|
for (const optionalField of ['feedbackType', 'contactInfo']) {
|
|
if (!Object.prototype.hasOwnProperty.call(payload, optionalField)) continue
|
|
if (typeof payload[optionalField] !== 'string') {
|
|
throw new TypeError(`反馈字段 ${optionalField} 必须是字符串`)
|
|
}
|
|
const normalizedText = payload[optionalField].trim()
|
|
if (!normalizedText) continue
|
|
normalizedPayload[optionalField] = normalizedText
|
|
}
|
|
return normalizedPayload
|
|
}
|