perf: 활동 피드 무제한 렌더링 방지(상한 + 페이지네이션)
활발한 프로젝트/업무에서 활동이 한 번에 전부 내려와 렌더링되던 문제 보완. - 업무 상세 활동 탭: 최신 100건으로 조회 상한 추가(기존 무제한) - 프로젝트 활동 피드: 200건 통째 조회 → 오프셋 페이지네이션 전환 - 컨트롤러 page/size 쿼리 지원, 서비스 findAndCount - 프론트 스토어 누적 + hasMore/loadMore, 활동 페이지 "더 보기" 버튼 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,13 +1,20 @@
|
||||
import { useApi } from './useApi'
|
||||
import { DEFAULT_PAGE_SIZE, type Paginated } from '@/types/pagination'
|
||||
import type { ApiActivity } from '@/types/activity'
|
||||
|
||||
// 활동 피드 API Composable — 인터셉터가 success/data 를 언래핑
|
||||
export function useActivity() {
|
||||
const api = useApi()
|
||||
|
||||
// 프로젝트 활동 피드(최신순)
|
||||
async function list(projectId: string): Promise<ApiActivity[]> {
|
||||
return (await api.get(`/projects/${projectId}/activity`)) as unknown as ApiActivity[]
|
||||
// 프로젝트 활동 피드(최신순, 페이지네이션)
|
||||
async function list(
|
||||
projectId: string,
|
||||
page = 1,
|
||||
size = DEFAULT_PAGE_SIZE,
|
||||
): Promise<Paginated<ApiActivity>> {
|
||||
return (await api.get(`/projects/${projectId}/activity`, {
|
||||
params: { page, size },
|
||||
})) as unknown as Paginated<ApiActivity>
|
||||
}
|
||||
|
||||
return { list }
|
||||
|
||||
Reference in New Issue
Block a user