Conversation
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Note Reviews pausedUse the following commands to manage reviews:
Use the checkboxes below for quick actions:
개요YouTube oEmbed API를 통한 메타데이터 조회, MVI 패턴 기반 상태 관리, Compose UI 화면, 홈 설정 메뉴 통합을 포함하는 새로운 콘텐츠 추천 기능이 구현되었습니다. 변경 사항콘텐츠 추천 기능
추정 코드 리뷰 시간🎯 4 (복잡함) | ⏱️ ~45분 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 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 |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 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.
Inline comments:
In
`@data/travel/src/main/java/com/yapp/ndgl/data/travel/di/TravelNetworkModule.kt`:
- Around line 15-16: Remove the locally declared qualifier and its import so the
module uses the shared core qualifier: delete the local `@Qualifier` annotation
declaration (the local YoutubeOembedClient qualifier) and the unnecessary
javax.inject.Qualifier import in TravelNetworkModule, keep the import of
com.yapp.ndgl.data.core.di.YoutubeOembedClient, and ensure any provider methods
that bind the OkHttpClient in TravelNetworkModule are annotated with the core
YoutubeOembedClient qualifier (the one from the core module) so Hilt injects the
same qualifier type across modules.
In `@feature/content-recommendation/build.gradle.kts`:
- Around line 10-12: 현재 val localProperties = Properties().apply {
load(rootProject.file("local.properties").bufferedReader()) } 는 파일이 없으면 즉시 실패하므로
빌드가 깨질 수 있습니다; 수정 방법은 localProperties를 로드하기 전에
rootProject.file("local.properties")의 존재 여부를 확인하고 존재할 때만 load를 호출하거나 존재하지 않을 경우
빈 Properties를 사용하도록 변경하는 것입니다(예: check file.exists() 또는 takeIf { it.exists() }
패턴을 사용하고, 필요하면 예외 방지를 위해 try/catch로 감쌉니다); 참조 대상: localProperties 변수와
load(rootProject.file("local.properties").bufferedReader()) 호출을 찾아 조건부 로딩으로
바꿉니다.
In
`@feature/content-recommendation/src/main/java/com/yapp/ndgl/feature/contentrecommendation/ContentRecommendationViewModel.kt`:
- Around line 30-43: updateUrl currently fires fetchMetadata on every valid URL
and doesn't cancel prior requests, causing stale/late responses to overwrite
newer state; fix by debouncing input and canceling any in-flight metadata job
before starting a new one in updateUrl: introduce a Job/Coroutine reference
(e.g., metadataJob) at the ViewModel level, cancel metadataJob when starting a
new fetch, debounce rapid calls (e.g., delay before calling fetchMetadata) and
include a response guard inside fetchMetadata that verifies the response
corresponds to the current contentUrl (or a request token) before calling reduce
to update metadataState; reference updateUrl, fetchMetadata, isYoutubeUrl,
MetadataState and ensure isSubmitEnabled is set only after the guarded, latest
response is applied.
- Around line 84-85: The current isYoutubeUrl(url: String) uses String.contains
and can be bypassed by query params; change it to parse the URL and validate the
host instead: in isYoutubeUrl, parse the input with java.net.URI or
java.net.URL, extract the host (handle nulls and lowercase/trim), and return
true only if host equals "youtu.be" or equals "youtube.com" or endsWith
".youtube.com" (to allow subdomains like "m.youtube.com" or "www.youtube.com");
catch exceptions (MalformedURLException/URISyntaxException) and return false for
invalid inputs.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 6143dd2c-cc8e-49d9-9ff0-df06fd418a8d
📒 Files selected for processing (33)
.gitignoreapp/build.gradle.ktsapp/src/main/java/com/yapp/ndgl/ui/NDGLApp.ktcore/ui/src/main/res/drawable/ic_24_alert.xmlcore/ui/src/main/res/drawable/ic_24_asterisk.xmlcore/ui/src/main/res/drawable/ic_24_youtube.xmldata/core/src/main/java/com/yapp/ndgl/data/core/di/NetworkModule.ktdata/travel/src/main/java/com/yapp/ndgl/data/travel/api/YoutubeOembedApi.ktdata/travel/src/main/java/com/yapp/ndgl/data/travel/di/TravelNetworkModule.ktdata/travel/src/main/java/com/yapp/ndgl/data/travel/model/YoutubeOembedResponse.ktdata/travel/src/main/java/com/yapp/ndgl/data/travel/repository/ContentMetadataRepository.ktfeature/content-recommendation/.gitignorefeature/content-recommendation/build.gradle.ktsfeature/content-recommendation/consumer-rules.profeature/content-recommendation/proguard-rules.profeature/content-recommendation/src/main/AndroidManifest.xmlfeature/content-recommendation/src/main/java/com/yapp/ndgl/feature/contentrecommendation/ContentLinkSection.ktfeature/content-recommendation/src/main/java/com/yapp/ndgl/feature/contentrecommendation/ContentRecommendationContract.ktfeature/content-recommendation/src/main/java/com/yapp/ndgl/feature/contentrecommendation/ContentRecommendationScreen.ktfeature/content-recommendation/src/main/java/com/yapp/ndgl/feature/contentrecommendation/ContentRecommendationViewModel.ktfeature/content-recommendation/src/main/java/com/yapp/ndgl/feature/contentrecommendation/HeaderSection.ktfeature/content-recommendation/src/main/java/com/yapp/ndgl/feature/contentrecommendation/ReasonSection.ktfeature/content-recommendation/src/main/java/com/yapp/ndgl/feature/contentrecommendation/TravelThemeSection.ktfeature/content-recommendation/src/main/java/com/yapp/ndgl/feature/contentrecommendation/model/TravelTheme.ktfeature/content-recommendation/src/main/java/com/yapp/ndgl/feature/contentrecommendation/navigation/ContentRecommendationEntry.ktfeature/content-recommendation/src/main/res/values/strings.xmlfeature/home/src/main/java/com/yapp/ndgl/feature/home/navigation/HomeEntry.ktfeature/home/src/main/java/com/yapp/ndgl/feature/home/settings/SettingsContract.ktfeature/home/src/main/java/com/yapp/ndgl/feature/home/settings/SettingsScreen.ktfeature/home/src/main/java/com/yapp/ndgl/feature/home/settings/SettingsViewModel.ktgradle/libs.versions.tomlnavigation/src/main/java/com/yapp/ndgl/navigation/Route.ktsettings.gradle.kts
개요
연관 문서
디자인
스크린샷
bandicam.2026-05-13.23-57-29-100.mp4
변경사항
참고사항
Summary by CodeRabbit
릴리스 노트