(deps: UseLogoutMutationDeps = {})
| 227 | * CHANGE: Now accepts optional dependencies for testing via dependency injection |
| 228 | */ |
| 229 | export function useLogoutMutation(deps: UseLogoutMutationDeps = {}) { |
| 230 | const queryClient = useQueryClient() |
| 231 | const { logoutUser = logoutUserUtil, logger = defaultLogger } = deps |
| 232 | |
| 233 | return useMutation({ |
| 234 | mutationFn: logoutUser, |
| 235 | onSuccess: () => { |
| 236 | // Reset the SDK client after logout |
| 237 | resetCodebuffClient() |
| 238 | // Clear all auth-related cache |
| 239 | queryClient.removeQueries({ queryKey: authQueryKeys.all }) |
| 240 | // Clear logger context |
| 241 | delete loggerContext.userId |
| 242 | delete loggerContext.userEmail |
| 243 | }, |
| 244 | onError: (error) => { |
| 245 | logger.error(error, 'Logout failed') |
| 246 | }, |
| 247 | }) |
| 248 | } |
no test coverage detected