refactor(frontend): Replace console.log with logger utility - Sprint 3 Story 1

Replace all console.log/warn/error statements with unified logger utility.

Changes:
- Replaced console in lib/hooks/use-stories.ts
- Replaced console in lib/signalr/SignalRContext.tsx
- Replaced console in lib/hooks/useProjectHub.ts
- Replaced console in lib/hooks/use-tasks.ts
- Replaced console in lib/hooks/useNotificationHub.ts
- Replaced console in lib/hooks/use-projects.ts
- Replaced console in app/(dashboard)/projects/[id]/kanban/page.tsx

Logger respects NODE_ENV (debug disabled in production).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Yaojia Wang
2025-11-05 19:47:33 +01:00
parent ea67d90880
commit bb3a93bfdc
7 changed files with 65 additions and 58 deletions

View File

@@ -2,19 +2,20 @@ import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { tasksApi } from '@/lib/api/pm';
import type { Task, CreateTaskDto, UpdateTaskDto, WorkItemStatus } from '@/types/project';
import { toast } from 'sonner';
import { logger } from '@/lib/utils/logger';
// ==================== Query Hooks ====================
export function useTasks(storyId?: string) {
return useQuery<Task[]>({
queryKey: ['tasks', storyId],
queryFn: async () => {
console.log('[useTasks] Fetching tasks...', { storyId });
logger.debug('[useTasks] Fetching tasks...', { storyId });
try {
const result = await tasksApi.list(storyId);
console.log('[useTasks] Fetch successful:', result);
logger.debug('[useTasks] Fetch successful:', result);
return result;
} catch (error) {
console.error('[useTasks] Fetch failed:', error);
logger.error('[useTasks] Fetch failed:', error);
throw error;
}
},
@@ -47,7 +48,7 @@ export function useCreateTask() {
toast.success('Task created successfully!');
},
onError: (error: any) => {
console.error('[useCreateTask] Error:', error);
logger.error('[useCreateTask] Error:', error);
toast.error(error.response?.data?.detail || 'Failed to create task');
},
});
@@ -72,7 +73,7 @@ export function useUpdateTask() {
return { previousTask };
},
onError: (error: any, variables, context) => {
console.error('[useUpdateTask] Error:', error);
logger.error('[useUpdateTask] Error:', error);
if (context?.previousTask) {
queryClient.setQueryData(['tasks', variables.id], context.previousTask);
@@ -101,7 +102,7 @@ export function useDeleteTask() {
toast.success('Task deleted successfully!');
},
onError: (error: any) => {
console.error('[useDeleteTask] Error:', error);
logger.error('[useDeleteTask] Error:', error);
toast.error(error.response?.data?.detail || 'Failed to delete task');
},
});
@@ -126,7 +127,7 @@ export function useChangeTaskStatus() {
return { previousTask };
},
onError: (error: any, variables, context) => {
console.error('[useChangeTaskStatus] Error:', error);
logger.error('[useChangeTaskStatus] Error:', error);
if (context?.previousTask) {
queryClient.setQueryData(['tasks', variables.id], context.previousTask);
@@ -156,7 +157,7 @@ export function useAssignTask() {
toast.success('Task assigned successfully!');
},
onError: (error: any) => {
console.error('[useAssignTask] Error:', error);
logger.error('[useAssignTask] Error:', error);
toast.error(error.response?.data?.detail || 'Failed to assign task');
},
});