Skip to content

Commit 0533917

Browse files
authored
refactor: Today I Learned (#382)
* refactor: 1 * refactor: 2 * refactor: 3 * refactor: 4 * feat: 불필요한 utils 삭제 * refactor: remove comments
1 parent d0721c6 commit 0533917

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+2784
-736
lines changed

fundamentals/today-i-learned/src/api/hooks/useDiscussions.ts

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useAuth } from "@/contexts/AuthContext";
2-
import { ENV_CONFIG } from "@/libs/env";
2+
import { ENV_CONFIG } from "@/utils/env";
33
import {
44
useInfiniteQuery,
55
useMutation,
@@ -23,7 +23,6 @@ import {
2323
type DiscussionsApiParams
2424
} from "@/api/remote/discussions";
2525

26-
// Query Keys 중앙 관리
2726
export 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-
// 기본 파라미터 인터페이스
4341
interface UseDiscussionsParams {
4442
owner?: string;
4543
repo?: string;
@@ -59,7 +57,6 @@ interface UseInfiniteDiscussionsParams {
5957
enabled?: boolean;
6058
}
6159

62-
// 전체 Discussions 가져오기 (인기글 등을 위한 완전한 데이터)
6360
export 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 (정렬 및 필터링 지원)
8884
export 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
127122
export 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 정보
154147
export 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 생성을 위한 간단한 인터페이스
176168
interface CreatePostParams {
177169
title: string;
178170
body: string;
179171
}
180172

181-
// Discussion 생성 Mutation
182173
export 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-
// 내 기여도 정보 (컨트리뷰션 그래프용 경량화된 데이터)
226213
export 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
254240
export 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 수정을 위한 간단한 인터페이스
435415
interface UpdatePostParams {
436416
discussionId: string;
437417
title: string;
438418
body: string;
439419
}
440420

441-
// Discussion 수정 Mutation
442421
export 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

Comments
 (0)