Skip to content

[Fix] #868 - QA 반영#873

Open
juri123123 wants to merge 2 commits into
developfrom
fix/#868-soptlog-routing-issue
Open

[Fix] #868 - QA 반영#873
juri123123 wants to merge 2 commits into
developfrom
fix/#868-soptlog-routing-issue

Conversation

@juri123123
Copy link
Copy Markdown
Contributor

🌴 PR 요약

  • 솝트로그 이곳저곳 눌렀을 때 모두 콕찌르기로 넘어가는 버그 수정했습니다.
  • 콕찌르기 pull to refresh 했을 때 영원히 indicator가 없어지지 않는 버그 수정했습니다.

🌱 작업한 브랜치

🌱 PR Point

getFriendRandomUser 실패 시 아무 값도 방출하지 않아 Publishers.Zip3가 완료되지 않는 문제가 있었습니다.
실패 시 빈 PokeFriendRandomUserModel을 방출하도록 처리해 endRefreshLoading이 정상적으로 호출되도록 수정했습니다.

📌 참고 사항

📮 관련 이슈

@juri123123 juri123123 self-assigned this May 10, 2026
@juri123123 juri123123 added Fix 문제 해결, 코드 수정 주리🫐 labels May 10, 2026
@juri123123 juri123123 linked an issue May 10, 2026 that may be closed by this pull request
2 tasks
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 10, 2026

Review Change Stack

개요

포크 로그 화면의 라우팅 이슈를 해결하기 위해 ViewModel의 셀 탭 이벤트 처리에 섹션 필터를 추가하고, UseCase의 비동기 요청 실패 시 안전한 오류 처리 및 메모리 누수 방지를 개선합니다.

변경사항

포크 라우팅 및 메모리 안전성

레이어 / 파일 요약
ViewModel 라우팅 필터
SOPT-iOS/Projects/Features/SoptlogFeature/Sources/SoptlogScene/ViewModel/SoptlogViewModel.swift
cellTap 이벤트의 포크 로그 핸들러에 tapInfo.section == .pokeLog 조건을 추가하여 올바른 섹션에서만 라우팅이 실행되도록 필터링합니다.
UseCase 메모리 및 오류 처리
SOPT-iOS/Projects/Domain/Sources/UseCase/PokeMainUseCase.swift
getFriendRandomUser의 Combine sink에서 weak self 캡처를 추가하고, 요청 실패 시 빈 PokeFriendRandomUserModel을 명시적으로 전송합니다.

추정 코드 리뷰 난이도

🎯 2 (단순) | ⏱️ ~8분

추천 검토자

  • kwonseokki
  • yungu0010

시적 축하

🐰 선별된 탭으로 길을 나누고,
약한 손으로 메모리를 지키고,
실패는 고스란히 텅 빈 목록으로,
라우팅 오류 사라져라! ✨
솝트로그 여정, 이제 맑고 밝으리라.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive PR 제목 '[Fix] #868 - QA 반영'은 실제 변경 사항과 부분적으로만 관련이 있습니다. 이슈 번호를 참조하지만 구체적인 변경 내용(라우팅 버그 수정, pull to refresh 인디케이터 버그 수정)을 명시하지 않아 제목만으로는 변경의 핵심을 파악하기 어렵습니다. 제목을 더 구체적으로 작성하세요. 예: '[Fix] #868 - 콕찌르기 라우팅 버그 및 pull to refresh 인디케이터 수정' 또는 '[Fix] #868 - 콕찌르기 화면 라우팅 이슈 해결'
✅ Passed checks (3 passed)
Check name Status Explanation
Description check ✅ Passed 설명은 변경사항, 원인, 해결 방법을 모두 포함하며 관련 이슈와 연결되어 있습니다.
Linked Issues check ✅ Passed PR은 #868의 요구사항인 '라우팅 터치 방지'와 'Pull-to-refresh 시간 초과 처리'를 모두 충족합니다.
Out of Scope Changes check ✅ Passed 모든 변경사항이 #868의 라우팅 버그와 pull-to-refresh indicator 문제 해결에 관련되어 있습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/#868-soptlog-routing-issue

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
SOPT-iOS/Projects/Domain/Sources/UseCase/PokeMainUseCase.swift (1)

73-75: 💤 Low value

네트워크 실패 시 사용자 피드백 고려 검토

현재 실패 시 빈 데이터를 조용히 방출하는 방식은 getFriend()와 일관된 패턴이지만, 네트워크 오류나 서버 장애 시 사용자에게 간단한 알림(예: 토스트 메시지)을 제공하는 것을 고려해볼 수 있습니다. 다만 현재 패턴도 충분히 허용 가능한 UX입니다.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SOPT-iOS/Projects/Domain/Sources/UseCase/PokeMainUseCase.swift` around lines
73 - 75, The failure branch currently swallows errors by sending an empty
PokeFriendRandomUserModel; instead emit a user-visible error/feedback signal:
capture the failure case in the getFriend() subscriber and either send an error
state through an existing publisher (e.g., a new or existing errorPublisher) or
call a UI feedback handler to show a toast; update the failure branch that
references friendRandomUsers and PokeFriendRandomUserModel so it sends an error
payload (or triggers showError(_:)) with the underlying error information rather
than silently sending an empty list.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@SOPT-iOS/Projects/Domain/Sources/UseCase/PokeMainUseCase.swift`:
- Around line 73-75: The failure branch currently swallows errors by sending an
empty PokeFriendRandomUserModel; instead emit a user-visible error/feedback
signal: capture the failure case in the getFriend() subscriber and either send
an error state through an existing publisher (e.g., a new or existing
errorPublisher) or call a UI feedback handler to show a toast; update the
failure branch that references friendRandomUsers and PokeFriendRandomUserModel
so it sends an error payload (or triggers showError(_:)) with the underlying
error information rather than silently sending an empty list.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f385b3ec-1753-46d0-9277-78743b456b33

📥 Commits

Reviewing files that changed from the base of the PR and between 0c5b85d and 486414e.

📒 Files selected for processing (2)
  • SOPT-iOS/Projects/Domain/Sources/UseCase/PokeMainUseCase.swift
  • SOPT-iOS/Projects/Features/SoptlogFeature/Sources/SoptlogScene/ViewModel/SoptlogViewModel.swift

@yungu0010 yungu0010 changed the title [Fix] #868 QA 반영 [Fix] #868 - QA 반영 May 11, 2026
Copy link
Copy Markdown
Member

@yungu0010 yungu0010 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍👍👍

.sink { [weak self] event in
print("GetFriendRandomUser State: \(event)")
if case .failure = event {
self?.friendRandomUsers.send(PokeFriendRandomUserModel(randomInfoList: []))
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

빈 배열을 보내면 조용한 실패로 리프레시 후 추천 친구 목록이 사라지게 되어 어색한 플로우가 될 것 같습니다.
빈 배열 대신 Error를 ViewModel에 보내 ViewModel이 네트워크 에러 모달을 띄워주도록 하는건 어떠신가요?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

요 경우가 Publisher3로 use case 3개의 결과를 받아서 처리하는 부분인데,
나머지 usecase들이 빈 배열을 보내고 있어서 비슷하게 처리했습니다!

저도 어색하게 느껴지긴 했어서 나머지 usecase들이 실패했을 때에도 모달 띄우도록 수정해볼게용 !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Fix 문제 해결, 코드 수정 주리🫐

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Fix] 솝트로그 라우팅 이슈 해결

2 participants