에디터 미디어 응답 상태 정규화 분리
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user