에디터 미디어 응답 상태 정규화 분리

This commit is contained in:
2026-07-24 18:12:33 +09:00
parent 1ec71cc985
commit 408d4aa420
7 changed files with 121 additions and 29 deletions

View File

@@ -375,3 +375,39 @@ export const buildMediaPickerPageItems = ({
return items
}, [])
}
/**
* 미디어 선택 모달의 기본 페이지네이션 상태를 만든다.
* @param {number} pageSize - 기본 페이지 크기
* @param {number} [total=0] - 전체 항목 수
* @returns {{ page: number, pageSize: number, total: number, pageCount: number }} 페이지네이션 상태
*/
export const createDefaultMediaPickerPagination = (pageSize, total = 0) => ({
page: 1,
pageSize,
total,
pageCount: 1
})
/**
* 미디어 선택 API 응답을 에디터 상태용 목록과 페이지네이션으로 정규화한다.
* @param {Object|null|undefined} response - 미디어 API 응답
* @param {number} pageSize - 기본 페이지 크기
* @returns {{ items: Object[], pagination: { page: number, pageSize: number, total: number, pageCount: number } }} 정규화된 응답
*/
export const normalizeMediaPickerResponse = (response, pageSize) => {
const items = Array.isArray(response?.items) ? response.items : []
const pagination = response?.pagination && typeof response.pagination === 'object'
? response.pagination
: createDefaultMediaPickerPagination(pageSize, items.length)
return {
items,
pagination: {
page: Math.max(1, Number(pagination.page) || 1),
pageSize: Math.max(1, Number(pagination.pageSize) || pageSize),
total: Math.max(0, Number(pagination.total) || 0),
pageCount: Math.max(1, Number(pagination.pageCount) || 1)
}
}
}