Conversation
This reverts commit b3a222f.
Walkthrough외부 링크 열기 기능(리포지토리·유스케이스) 추가, 검색 화면에 범용 EmptyStateView 통합 및 버튼 액션 연결, Kakao 관련 URL 상수 및 Info.plist 키 추가, DI 등록과 코디네이터에서의 호출 흐름을 구현함. Changes
Sequence Diagram(s)sequenceDiagram
participant SearchView as "SearchView"
participant SearchVC as "SearchViewController"
participant Coordinator as "SearchCoordinator"
participant UseCase as "OpenExternalLinkUseCase"
participant Repo as "ExternalLinkRepository"
participant App as "UIApplication"
SearchView->>SearchVC: onTapActionButton
SearchVC->>Coordinator: showRequestPage()
Coordinator->>UseCase: execute(urlString, appScheme)
alt appScheme 사용 가능
UseCase->>Repo: canOpen(appScheme)
Repo->>App: canOpenURL(appScheme)
App-->>Repo: Bool
Repo-->>UseCase: Bool
opt canOpen 성공
UseCase->>Repo: open(appScheme)
end
else appScheme 미사용/불가
UseCase->>Repo: open(urlString)
end
Repo->>App: open URL (main thread)
App-->>Repo: Bool(success)
Repo-->>Coordinator: AnyPublisher<Bool, Never> (결과)
Coordinator->>Coordinator: 결과 로깅 / 후속 처리
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
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. Comment |
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/Projects/BKPresentation/Sources/MainFlow/Search/View/SearchView.swift (1)
108-134: 검색 결과가 생긴 뒤 빈 상태가 계속 남을 수 있습니다.한 번 빈 상태가 노출된 뒤 결과가 생기면
emptyView를 숨기지 않아 화면을 덮을 가능성이 있습니다. 결과가 있는 분기에서 빈 상태를 명시적으로 숨겨 주세요.🛠️ 수정 제안
- } else { - collectionView.isHidden = false + } else { + updateEmptyState(isHidden: true) collectionView.backgroundView = nil snapshot.appendSections([.result]) // Book과 BookInfo 모두 처리 snapshot.appendItems(state.books.map { .result($0) }, toSection: .result) snapshot.appendItems(state.bookInfos.map { .libraryResult($0) }, toSection: .result) searchBar.setClearButtonMode(.always) }
🤖 Fix all issues with AI agents
In `@src/Projects/BKPresentation/Sources/Constant/URLConstants.swift`:
- Around line 10-15: The kakaoAccount initializer only checks for nil but not
empty or placeholder build-time tokens, so update the closure used by private
static let kakaoAccount to validate the loaded string from
bundle.object(forInfoDictionaryKey: "KAKAO_ACCOUNT") as? String: ensure the
value is non-empty after trimming whitespace and does not contain common
placeholder patterns (e.g., startsWith "$(" or contains "$(" or equals the
literal "$(KAKAO_ACCOUNT)"); if validation fails, call fatalError with a clear
message mentioning kakaoAccount and the invalid value to fail fast and avoid
constructing bad URLs.
🧹 Nitpick comments (1)
src/Projects/BKPresentation/Sources/MainFlow/Search/View/SearchViewController.swift (1)
75-90:프로덕션 로그 정책과 일관성을 위해
Log.debug로 통일하는 편이 좋습니다.🔧 제안 변경
- print("LOG: 게스트 모드 - 로그인 화면으로 이동") + Log.debug("게스트 모드 - 로그인 화면으로 이동", logger: AppLogger.viewModel)
src/Projects/BKPresentation/Sources/MainFlow/Search/View/SearchView.swift
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@src/Projects/BKPresentation/Sources/MainFlow/Search/View/SearchView.swift`:
- Around line 122-134: In the .result(let state) non-empty branch ensure the
empty state is hidden so results aren't obscured: call
updateEmptyState(isHidden: true, ...) or set emptyView.isHidden = true inside
the else branch (where collectionView.isHidden = false) — update the logic
around the .result case (referencing the .result pattern, updateEmptyState and
emptyView/collectionView) so that when state.books or state.bookInfos are
non-empty the empty view is explicitly hidden.
🔗 관련 이슈
📘 작업 유형
📙 작업 내역
외부 링크 처리 시스템 구축 (Clean Architecture)
카카오톡 채널 연동
검색 화면 UI 개선
EmptyStateView 재사용성 개선
🧪 테스트 내역
🎨 스크린샷 또는 시연 영상 (선택)
Simulator.Screen.Recording.-.iPhone.16.Pro.Max.-.2026-01-24.at.17.51.24.mp4
ScreenRecording_01-26-2026.10-01-25_1.mov
✅ PR 체크리스트
💬 추가 설명 or 리뷰 포인트 (선택)
Summary by CodeRabbit
새로운 기능
개선 사항
✏️ Tip: You can customize this high-level summary in your review settings.