11import { useAuth } from "@/contexts/AuthContext" ;
2- import { ENV_CONFIG } from "@/libs /env" ;
2+ import { ENV_CONFIG } from "@/utils /env" ;
33import {
44 useInfiniteQuery ,
55 useMutation ,
@@ -23,7 +23,6 @@ import {
2323 type DiscussionsApiParams
2424} from "@/api/remote/discussions" ;
2525
26- // Query Keys 중앙 관리
2726export const DISCUSSIONS_QUERY_KEYS = {
2827 all : [ "discussions" ] as const ,
2928 lists : ( ) => [ ...DISCUSSIONS_QUERY_KEYS . all , "list" ] as const ,
@@ -39,7 +38,6 @@ export const DISCUSSIONS_QUERY_KEYS = {
3938 detail : ( id : string ) => [ ...DISCUSSIONS_QUERY_KEYS . all , "detail" , id ] as const
4039} as const ;
4140
42- // 기본 파라미터 인터페이스
4341interface UseDiscussionsParams {
4442 owner ?: string ;
4543 repo ?: string ;
@@ -59,7 +57,6 @@ interface UseInfiniteDiscussionsParams {
5957 enabled ?: boolean ;
6058}
6159
62- // 전체 Discussions 가져오기 (인기글 등을 위한 완전한 데이터)
6360export function useAllDiscussionsWithFullData ( {
6461 owner = ENV_CONFIG . GITHUB_OWNER ,
6562 repo = ENV_CONFIG . GITHUB_REPO ,
@@ -84,7 +81,6 @@ export function useAllDiscussionsWithFullData({
8481 } ) ;
8582}
8683
87- // 무한 스크롤을 위한 Discussions (정렬 및 필터링 지원)
8884export function useInfiniteDiscussions ( {
8985 owner = ENV_CONFIG . GITHUB_OWNER ,
9086 repo = ENV_CONFIG . GITHUB_REPO ,
@@ -123,7 +119,6 @@ export function useInfiniteDiscussions({
123119 } ) ;
124120}
125121
126- // 주간 인기 Discussions
127122export function useWeeklyTopDiscussions ( {
128123 owner = ENV_CONFIG . GITHUB_OWNER ,
129124 repo = ENV_CONFIG . GITHUB_REPO ,
@@ -140,7 +135,6 @@ export function useWeeklyTopDiscussions({
140135 repo,
141136 accessToken : user ?. accessToken
142137 } ) ;
143- // limit이 지정된 경우 결과를 제한
144138 return limit ? discussions . slice ( 0 , limit ) : discussions ;
145139 } ,
146140 enabled,
@@ -150,7 +144,6 @@ export function useWeeklyTopDiscussions({
150144 } ) ;
151145}
152146
153- // Repository 정보
154147export function useRepositoryInfo ( {
155148 owner = ENV_CONFIG . GITHUB_OWNER ,
156149 repo = ENV_CONFIG . GITHUB_REPO ,
@@ -172,13 +165,11 @@ export function useRepositoryInfo({
172165 } ) ;
173166}
174167
175- // Discussion 생성을 위한 간단한 인터페이스
176168interface CreatePostParams {
177169 title : string ;
178170 body : string ;
179171}
180172
181- // Discussion 생성 Mutation
182173export function useCreateDiscussion ( ) {
183174 const queryClient = useQueryClient ( ) ;
184175 const { user } = useAuth ( ) ;
@@ -189,14 +180,12 @@ export function useCreateDiscussion() {
189180 throw new Error ( "Authentication required" ) ;
190181 }
191182
192- // Repository 정보를 가져와서 repositoryId와 categoryId를 얻음
193183 const repoInfo = await fetchRepositoryInfo ( {
194184 owner : ENV_CONFIG . GITHUB_OWNER ,
195185 repo : ENV_CONFIG . GITHUB_REPO ,
196186 accessToken : user . accessToken
197187 } ) ;
198188
199- // "Today I Learned" 카테고리 찾기
200189 const tilCategory = repoInfo . categories . find (
201190 ( cat ) => cat . name === "Today I Learned"
202191 ) ;
@@ -214,15 +203,13 @@ export function useCreateDiscussion() {
214203 } ) ;
215204 } ,
216205 onSuccess : ( ) => {
217- // 관련 쿼리들 무효화
218206 queryClient . invalidateQueries ( {
219207 queryKey : DISCUSSIONS_QUERY_KEYS . all
220208 } ) ;
221209 }
222210 } ) ;
223211}
224212
225- // 내 기여도 정보 (컨트리뷰션 그래프용 경량화된 데이터)
226213export function useMyContributions ( {
227214 owner = ENV_CONFIG . GITHUB_OWNER ,
228215 repo = ENV_CONFIG . GITHUB_REPO ,
@@ -250,7 +237,6 @@ export function useMyContributions({
250237 } ) ;
251238}
252239
253- // Discussion 상세 조회 Hook
254240export function useDiscussionDetail ( id : string ) {
255241 const { user } = useAuth ( ) ;
256242
@@ -371,7 +357,6 @@ export function useAddDiscussionCommentReply() {
371357 } ) ;
372358 } ,
373359 onSuccess : ( ) => {
374- // 댓글이 포함된 모든 discussion detail 쿼리를 무효화
375360 queryClient . invalidateQueries ( {
376361 queryKey : DISCUSSIONS_QUERY_KEYS . all
377362 } ) ;
@@ -411,34 +396,28 @@ export function useToggleDiscussionReaction() {
411396 } ) ;
412397 }
413398 } ,
414- // optimistic update 제거하고 단순하게 처리
415399 onMutate : async ( ) => {
416- // 관련 쿼리들을 취소하여 race condition 방지
417400 await queryClient . cancelQueries ( { queryKey : DISCUSSIONS_QUERY_KEYS . all } ) ;
418401 } ,
419402 onError : ( ) => {
420- // 에러 시 전체 쿼리 무효화
421403 queryClient . invalidateQueries ( {
422404 queryKey : DISCUSSIONS_QUERY_KEYS . all
423405 } ) ;
424406 } ,
425407 onSuccess : ( ) => {
426- // 성공 시 관련 쿼리들 무효화하여 서버 데이터로 업데이트
427408 queryClient . invalidateQueries ( {
428409 queryKey : DISCUSSIONS_QUERY_KEYS . all
429410 } ) ;
430411 }
431412 } ) ;
432413}
433414
434- // Discussion 수정을 위한 간단한 인터페이스
435415interface UpdatePostParams {
436416 discussionId : string ;
437417 title : string ;
438418 body : string ;
439419}
440420
441- // Discussion 수정 Mutation
442421export function useUpdateDiscussion ( ) {
443422 const queryClient = useQueryClient ( ) ;
444423 const { user } = useAuth ( ) ;
@@ -457,12 +436,10 @@ export function useUpdateDiscussion() {
457436 } ) ;
458437 } ,
459438 onSuccess : ( updatedDiscussion ) => {
460- // 관련 쿼리들 무효화
461439 queryClient . invalidateQueries ( {
462440 queryKey : DISCUSSIONS_QUERY_KEYS . all
463441 } ) ;
464442
465- // 상세 정보도 업데이트
466443 queryClient . setQueryData (
467444 DISCUSSIONS_QUERY_KEYS . detail ( updatedDiscussion . id ) ,
468445 ( oldData : any ) => {
@@ -503,12 +480,10 @@ export function useDeleteDiscussion() {
503480 } ) ;
504481 } ,
505482 onSuccess : ( deletedDiscussion ) => {
506- // 관련 쿼리들 무효화
507483 queryClient . invalidateQueries ( {
508484 queryKey : DISCUSSIONS_QUERY_KEYS . all
509485 } ) ;
510486
511- // 상세 정보 캐시 제거
512487 queryClient . removeQueries ( {
513488 queryKey : DISCUSSIONS_QUERY_KEYS . detail ( deletedDiscussion . id )
514489 } ) ;
0 commit comments