Skip to content

전체 의존성 라이브러리 최신화#370

Merged
unam98 merged 5 commits intodevelopfrom
feature/update-dependencies
Apr 2, 2026
Merged

전체 의존성 라이브러리 최신화#370
unam98 merged 5 commits intodevelopfrom
feature/update-dependencies

Conversation

@unam98
Copy link
Copy Markdown
Collaborator

@unam98 unam98 commented Apr 2, 2026

작업 배경

  • 프로젝트 의존성 대부분이 1~3년 전 버전으로, 보안 패치 및 성능 개선 반영을 위해 전체 최신화
  • breaking changes가 있는 라이브러리는 코드 수정 포함하여 업그레이드

변경 사항

AndroidX

라이브러리 변경 전 변경 후
compileSdk 35 36
core-ktx 1.9.0 1.18.0
appcompat 1.5.1 1.7.1
constraintlayout 2.1.4 2.2.1
activity 1.6.1 1.13.0
fragment 1.5.5 1.8.9
lifecycle 2.8.2 2.10.0
recyclerview 1.3.0 1.4.0
viewpager2 1.0.0 1.1.0
swiperefreshlayout 1.1.0 1.2.0
security-crypto 1.1.0-alpha03 1.1.0
test:junit / espresso 1.1.5 / 3.5.1 1.3.0 / 3.7.0

Compose + UI

라이브러리 변경 전 변경 후
compose-bom 2023.03.00 2026.03.00
material 1.8.0 1.13.0

Kotlin / Network

라이브러리 변경 전 변경 후
okhttp-bom 4.10.0 4.12.0
kotlinx-serialization-json 1.4.1 1.10.0
kotlinx-coroutines 1.6.4 1.10.2
retrofit2-kotlinx-serialization 0.8.0 1.0.0
gson 2.10.1 2.13.2

Firebase

라이브러리 변경 전 변경 후
firebase-bom 31.2.3 33.14.0
google-services 4.3.15 4.4.4

Image (breaking changes 대응)

라이브러리 변경 전 변경 후 코드 수정
Glide 4.16.0 5.0.5 thumbnail(float)sizeMultiplier(float) (4파일)
Coil 2.2.2 3.4.0 아티팩트/패키지명 변경, network-okhttp 추가 (3파일)

Firebase KTX → non-KTX 마이그레이션

  • com.google.firebase.ktx.Firebasecom.google.firebase.Firebase
  • firestore.ktx.firestorefirestore.firestore
  • remoteconfig.ktx.*remoteconfig.*
  • 영향 파일: ServiceModule, MainActivity

서드파티

라이브러리 변경 전 변경 후
kakao-sdk 2.15.0 2.23.3
kakao v2-link 2.9.0 v2-share 2.23.3 (이름 변경)
naver-map 3.22.1 3.23.2
tedpermission 3.3.0 3.4.2

보류 (별도 작업 필요)

  • Retrofit 3.0 — 커스텀 CallAdapter 호환성 문제
  • OkHttp 5.x — 아직 alpha (stable 미출시)
  • Hilt 2.59 — AGP 9 요구
  • Firebase BOM 34.x — -ktx 아티팩트 제거 (import 마이그레이션은 완료)
  • play-services-auth → Credential Manager 전면 재작성

영향 범위

  • gradle/libs.versions.toml 버전 업데이트
  • Glide: 4파일 thumbnail()sizeMultiplier() 변경
  • Coil: 3파일 import 변경 + build.gradle 의존성 추가
  • Firebase: 2파일 KTX import → non-KTX import 변경
  • 런타임 동작에 영향 없음

Test Plan

  • ./gradlew assembleDebug 로컬 빌드 성공 확인
  • CI 빌드 성공 확인
  • 에뮬레이터/실기기 설치 후 주요 기능 동작 확인

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Updated Android SDK target and upgraded core libraries, Compose, Firebase, networking, and third-party SDKs for improved compatibility and security.
    • Switched to newer image-loading/runtime libraries and added OkHttp-backed image networking for more reliable image fetching.
    • Adjusted image decoding/scaling behavior to improve image loading performance and memory usage.

[AndroidX]
- compileSdk 35 → 36
- core-ktx 1.9.0 → 1.18.0
- appcompat 1.5.1 → 1.7.1
- constraintlayout 2.1.4 → 2.2.1
- activity 1.6.1 → 1.13.0
- fragment 1.5.5 → 1.8.9
- lifecycle 2.8.2 → 2.10.0
- recyclerview 1.3.0 → 1.4.0
- viewpager2 1.0.0 → 1.1.0
- swiperefreshlayout 1.1.0 → 1.2.0
- security-crypto 1.1.0-alpha03 → 1.1.0
- test:junit 1.1.5 → 1.3.0, espresso 3.5.1 → 3.7.0

[Compose + UI]
- compose-bom 2023.03.00 → 2026.03.00
- material 1.8.0 → 1.13.0

[Kotlin / Network]
- okhttp-bom 4.10.0 → 4.12.0
- kotlinx-serialization-json 1.4.1 → 1.10.0
- kotlinx-coroutines 1.6.4 → 1.10.2
- retrofit2-kotlinx-serialization 0.8.0 → 1.0.0
- gson 2.10.1 → 2.13.2

[Firebase]
- firebase-bom 31.2.3 → 33.14.0
- google-services 4.3.15 → 4.4.4

[서드파티]
- kakao-sdk 2.15.0 → 2.23.3
- kakao v2-link → v2-share 교체 (이름 변경)
- kakao v2-story 2.17.0 고정 (서비스 종료)
- naver-map 3.22.1 → 3.23.2
- coil 2.2.2 → 2.7.0
- tedpermission 3.3.0 → 3.4.2

[보류 (별도 작업)]
- Retrofit 3.0 (suspend 동작 변경)
- OkHttp 5.x (breaking API)
- Coil 3.x (패키지명 변경)
- Hilt 2.59 (AGP 9 필요)
- Glide 5.x (nullability 변경)
- Firebase BOM 34.x (-ktx 모듈 제거)
- play-services-auth → Credential Manager 전환
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 2, 2026

Warning

Rate limit exceeded

@unam98 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 0 minutes and 42 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 0 minutes and 42 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 66a73fcc-1e80-47ae-8e5a-3ba3bc06a75f

📥 Commits

Reviewing files that changed from the base of the PR and between a785c9a and 33569bf.

📒 Files selected for processing (5)
  • app/src/main/java/com/runnect/runnect/presentation/mypage/history/adapter/MyHistoryAdapter.kt
  • app/src/main/java/com/runnect/runnect/presentation/mypage/reward/adapter/MyRewardAdapter.kt
  • app/src/main/java/com/runnect/runnect/presentation/mypage/upload/adapter/MyUploadAdapter.kt
  • app/src/main/java/com/runnect/runnect/util/binding/BindingAdapter.kt
  • gradle/libs.versions.toml
📝 Walkthrough

Walkthrough

Updated dependency catalog and app code to align with upgraded libraries: compileSdk bumped to 36, numerous AndroidX/Compose/Firebase/network/image-library versions updated; Coil migrated to Coil3 with OkHttp integration; Glide thumbnail usage replaced by sizeMultiplier; some Firebase KTX imports switched to non-KTX equivalents.

Changes

Cohort / File(s) Summary
Gradle Dependency Catalog
gradle/libs.versions.toml
Bumped compileSdk to 36; upgraded many AndroidX refs (core-ktx, appcompat, lifecycle, etc.), Compose BOM to 2026.03.00, Material to 1.13.0; updated okhttp, retrofit/serialization, gson, coroutines, Glide, Coil (to coil3), Firebase BOM, Naver/Kakao/TedPermission, and test deps; replaced Kakao link mapping with share.
App Gradle
app/build.gradle
Added implementation libs.coil.network.okhttp to integrate Coil3 with OkHttp networking.
Firebase providers / Remote Config
app/src/.../di/ServiceModule.kt, app/src/.../presentation/MainActivity.kt
Switched Firebase imports from KTX packages to non-KTX equivalents while preserving existing provider and remote-config call sites.
Coil migration
app/src/.../presentation/detail/CourseDetailActivity.kt, app/src/.../util/binding/BindingAdapter.kt, app/src/.../presentation/mypage/.../adapter/*.kt
Replaced coil.load usages with coil3.load across binding adapters and activities/adapters; added Coil OkHttp artifact.
Glide thumbnail → sizeMultiplier
app/src/.../presentation/mypage/history/adapter/MyHistoryAdapter.kt, .../mypage/reward/adapter/MyRewardAdapter.kt, .../mypage/upload/adapter/MyUploadAdapter.kt, .../util/binding/BindingAdapter.kt
Replaced .thumbnail(0.3f) calls with .sizeMultiplier(0.3f) for Glide requests, keeping decode format and targets unchanged.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 I hopped through toml and gradle lines,

Swapped KTX for vanilla signs,
Coil grew to version three,
Glide shrank a bit for speed,
Libraries fresh — a carrot of new designs!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

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.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title '전체 의존성 라이브러리 최신화' (Update all dependency libraries) directly and accurately describes the main change—a comprehensive update of project dependencies across the codebase.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/update-dependencies

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.

unam98 added 3 commits April 2, 2026 23:40
- thumbnail(float) 제거됨 → sizeMultiplier(float)로 대체
- 영향 파일: BindingAdapter, MyHistoryAdapter, MyRewardAdapter, MyUploadAdapter
- 아티팩트 io.coil-kt:coil → io.coil-kt.coil3:coil-android 변경
- coil-network-okhttp 의존성 추가 (3.x에서 네트워크 모듈 분리)
- import coil.load → coil3.load 변경
- 영향 파일: BindingAdapter, MyHistoryAdapter, CourseDetailActivity
- Firebase.ktx.Firebase → Firebase.Firebase
- firestore.ktx.firestore → firestore.firestore
- remoteconfig.ktx.remoteConfig → remoteconfig.remoteConfig
- remoteconfig.ktx.remoteConfigSettings → remoteconfig.remoteConfigSettings
- 영향 파일: ServiceModule, MainActivity
- BOM 34.x 업그레이드 사전 준비 (34.x에서 -ktx 모듈 제거 예정)
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.

Actionable comments posted: 1

🧹 Nitpick comments (2)
gradle/libs.versions.toml (2)

43-43: Plan to retire the archived JakeWharton converter on the next Retrofit bump.

This version bump keeps the project on an artifact whose repository is archived and whose README says it has moved into Retrofit. Retrofit 2.10 announced the first-party coordinates as com.squareup.retrofit2:converter-kotlinx-serialization, unchanged from the old 1.0.0 code. Since retrofit is still pinned to 2.9.0 here, I wouldn’t block this PR, but I would track a follow-up instead of treating this catalog entry as the steady state. (github.com)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@gradle/libs.versions.toml` at line 43, The dependency entry
retrofit2-kotlinx-serialization = "1.0.0" references the archived JakeWharton
converter; keep this change for now but add a tracked follow-up to replace this
catalog key with the first-party artifact coordinates
com.squareup.retrofit2:converter-kotlinx-serialization when Retrofit is bumped
to >=2.10. Update any documentation or a TODO in the repo referencing the toml
key retrofit2-kotlinx-serialization and the pinned retrofit version (2.9.0) so
the follow-up is visible to maintainers.

3-3: Open the targetSdk 36 follow-up now.

compileSdk is already moving to 36 through this catalog, but Android Developers now say Google Play will require API 36 in August 2026. Since app/build.gradle:24-27 also reads targetSdk from the catalog, I’d capture the behavior-change test pass in a separate ticket now rather than waiting for the next store submission. (developer.android.com)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@gradle/libs.versions.toml` at line 3, The catalog only sets compileSdk = "36"
but app/build.gradle also reads targetSdk from the same catalog, so add or
update a targetSdk entry in gradle/libs.versions.toml (matching the compileSdk
value) so the app's targetSdk is explicitly set to "36"; modify the
libs.versions.toml to include targetSdk = "36" and ensure app/build.gradle
continues to read that property (referencing the compileSdk and targetSdk keys
and app/build.gradle's usage) so behavior-change testing can be captured now.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@gradle/libs.versions.toml`:
- Around line 63-64: Remove the unused kakao-story entry from the shared Kakao
bundle in libs.versions.toml to avoid pinning that module to 2.17.0 and creating
a mixed-version dependency graph; keep kakao-sdk = "2.23.3" and update the
libs.bundles.kakao bundle to only reference kakao-sdk (and any other Kakao
modules at matching versions), then run a dependency scan/build to verify
nothing in the codebase references kakao-story before committing the change.

---

Nitpick comments:
In `@gradle/libs.versions.toml`:
- Line 43: The dependency entry retrofit2-kotlinx-serialization = "1.0.0"
references the archived JakeWharton converter; keep this change for now but add
a tracked follow-up to replace this catalog key with the first-party artifact
coordinates com.squareup.retrofit2:converter-kotlinx-serialization when Retrofit
is bumped to >=2.10. Update any documentation or a TODO in the repo referencing
the toml key retrofit2-kotlinx-serialization and the pinned retrofit version
(2.9.0) so the follow-up is visible to maintainers.
- Line 3: The catalog only sets compileSdk = "36" but app/build.gradle also
reads targetSdk from the same catalog, so add or update a targetSdk entry in
gradle/libs.versions.toml (matching the compileSdk value) so the app's targetSdk
is explicitly set to "36"; modify the libs.versions.toml to include targetSdk =
"36" and ensure app/build.gradle continues to read that property (referencing
the compileSdk and targetSdk keys and app/build.gradle's usage) so
behavior-change testing can be captured now.
🪄 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9646322f-5337-49ac-99ad-d1ae717cb98a

📥 Commits

Reviewing files that changed from the base of the PR and between 970254f and edef217.

📒 Files selected for processing (1)
  • gradle/libs.versions.toml

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.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
app/src/main/java/com/runnect/runnect/presentation/mypage/history/adapter/MyHistoryAdapter.kt (1)

53-57: ⚠️ Potential issue | 🔴 Critical

Bug: Image is loaded twice with both Glide and Coil into the same ImageView.

Lines 53-55 load data.img with Glide into ivMyPageHistoryCourse, then line 57 immediately loads the same image with Coil into the same view. This causes:

  1. Wasteful duplicate network/decode operations
  2. Race condition where Coil's result overwrites Glide's
  3. Inconsistent behavior compared to other adapters

Remove one of the image loading calls. If migrating to Coil 3.x, remove the Glide call:

🐛 Proposed fix: Remove duplicate Glide load
         fun onBind(data: HistoryInfoDTO) {
             with(binding) {
-                Glide.with(itemView).load(data.img).sizeMultiplier(0.3f)
-                    .format(DecodeFormat.PREFER_RGB_565)
-                    .into(ivMyPageHistoryCourse)
-
-                ivMyPageHistoryCourse.load(data.img)
+                ivMyPageHistoryCourse.load(data.img) {
+                    // Add Coil 3.x configuration if needed for memory optimization
+                }
                 tvMyPageHistoryCourseName.text = data.title

Alternatively, if you want to keep Glide with sizeMultiplier for memory optimization, remove the Coil import and the load(data.img) call.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@app/src/main/java/com/runnect/runnect/presentation/mypage/history/adapter/MyHistoryAdapter.kt`
around lines 53 - 57, In MyHistoryAdapter remove the duplicate image load so the
same view ivMyPageHistoryCourse isn't loaded by both Glide and Coil;
specifically choose one loader (either keep the Glide chain using
Glide.with(itemView).load(data.img).sizeMultiplier(0.3f)...into(ivMyPageHistoryCourse)
or keep the Coil extension call ivMyPageHistoryCourse.load(data.img)) and delete
the other call (and corresponding import) to avoid duplicate network/decoding
and race conditions.
🧹 Nitpick comments (3)
app/src/main/java/com/runnect/runnect/presentation/mypage/reward/adapter/MyRewardAdapter.kt (1)

18-21: Same thumbnail() to sizeMultiplier() behavioral change.

Same concern as in MyUploadAdapter.kt: sizeMultiplier() scales the final image size rather than providing progressive loading. Verify this matches the intended behavior.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@app/src/main/java/com/runnect/runnect/presentation/mypage/reward/adapter/MyRewardAdapter.kt`
around lines 18 - 21, The Glide call in MyRewardAdapter.kt uses
sizeMultiplier(0.3f) which scales the final decoded image instead of providing
progressive/placeholder loading; if you intended progressive thumbnail loading
like in MyUploadAdapter, replace sizeMultiplier(0.3f) with thumbnail(0.3f) on
the same Glide request
(Glide.with(itemView).load(data.img).thumbnail(0.3f).into(ivItemMyPageRewardCircleFrame))
so Glide fetches a smaller preview first, or alternatively use
RequestOptions.override(width, height) when you need a fixed decode size; update
the code path that binds images in MyRewardAdapter (the
Glide.with(...).load(...) chain) accordingly.
app/src/main/java/com/runnect/runnect/util/binding/BindingAdapter.kt (1)

45-51: Same thumbnail() to sizeMultiplier() behavioral change in Glide.

The setDiscoverItemImage binding adapter also uses sizeMultiplier(0.3f) instead of the previous thumbnail(0.3f). Same behavioral difference applies as noted in the adapter classes.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/src/main/java/com/runnect/runnect/util/binding/BindingAdapter.kt` around
lines 45 - 51, The Glide call in the ImageView.setDiscoverItemImage binding
adapter uses sizeMultiplier(0.3f) which changes behavior compared to the
original thumbnail(0.3f); update the Glide chain in setDiscoverItemImage to use
thumbnail(0.3f) (preserving any existing sizeMultiplier/format needs) so it
loads a lower-resolution placeholder image while the full image loads, keeping
the rest of the Glide options (e.g., format) intact.
app/build.gradle (1)

120-121: Consider configuring Coil's ImageLoader with your existing OkHttpClient for consistency.

Coil 3.x with coil-network-okhttp uses its own default OkHttpClient unless explicitly configured. The app has custom OkHttpClient instances in RetrofitModule.kt (lines 67–85) with security configurations (TLS 1.2+ enforcement, auth interceptor, logging) via NetworkSecurityUtil.createSecureOkHttpClient().

Without explicit ImageLoader configuration, Coil images won't benefit from these security settings and interceptors. Consider providing a custom ImageLoader that reuses the app's OkHttpClient via Hilt or in ApplicationClass for consistent network behavior.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/build.gradle` around lines 120 - 121, Coil is using its own default
OkHttpClient; update app to construct an ImageLoader that reuses the same secure
OkHttpClient created by NetworkSecurityUtil.createSecureOkHttpClient() (the
client used in RetrofitModule.kt) and provide that ImageLoader via Hilt or in
your Application class; specifically, create/provide an ImageLoader instance
that sets the okHttpClient to the existing secure client (so coil-network-okhttp
uses your interceptors, TLS settings and logging) and replace any
default/implicit ImageLoader usage with this provided instance.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@app/src/main/java/com/runnect/runnect/presentation/mypage/upload/adapter/MyUploadAdapter.kt`:
- Around line 67-70: The Glide call in MyUploadAdapter.kt currently uses
sizeMultiplier(0.3f), which removes progressive thumbnail loading; to restore
the previous behavior replace it with thumbnail(RequestBuilder) by creating a
RequestBuilder via
Glide.with(itemView).asDrawable().sizeMultiplier(0.3f).load(data.img) and
passing that builder into the main
Glide.with(itemView).load(data.img).thumbnail(...).format(DecodeFormat.PREFER_RGB_565).into(ivMyPageUploadCourse);
alternatively, if you intentionally only want memory optimization and no
progressive loading, leave sizeMultiplier as-is and add a brief comment
explaining that choice.

In `@gradle/libs.versions.toml`:
- Line 31: The Compose BOM version value compose-bom = "2026.03.00" is invalid
and causes build failures; update the compose-bom entry in libs.versions.toml
(the compose-bom key) to a valid released Compose BOM version (for example
replace "2026.03.00" with an available version such as "2024.12.00" or the
latest published BOM) so the dependency resolves from Maven Central.

---

Outside diff comments:
In
`@app/src/main/java/com/runnect/runnect/presentation/mypage/history/adapter/MyHistoryAdapter.kt`:
- Around line 53-57: In MyHistoryAdapter remove the duplicate image load so the
same view ivMyPageHistoryCourse isn't loaded by both Glide and Coil;
specifically choose one loader (either keep the Glide chain using
Glide.with(itemView).load(data.img).sizeMultiplier(0.3f)...into(ivMyPageHistoryCourse)
or keep the Coil extension call ivMyPageHistoryCourse.load(data.img)) and delete
the other call (and corresponding import) to avoid duplicate network/decoding
and race conditions.

---

Nitpick comments:
In `@app/build.gradle`:
- Around line 120-121: Coil is using its own default OkHttpClient; update app to
construct an ImageLoader that reuses the same secure OkHttpClient created by
NetworkSecurityUtil.createSecureOkHttpClient() (the client used in
RetrofitModule.kt) and provide that ImageLoader via Hilt or in your Application
class; specifically, create/provide an ImageLoader instance that sets the
okHttpClient to the existing secure client (so coil-network-okhttp uses your
interceptors, TLS settings and logging) and replace any default/implicit
ImageLoader usage with this provided instance.

In
`@app/src/main/java/com/runnect/runnect/presentation/mypage/reward/adapter/MyRewardAdapter.kt`:
- Around line 18-21: The Glide call in MyRewardAdapter.kt uses
sizeMultiplier(0.3f) which scales the final decoded image instead of providing
progressive/placeholder loading; if you intended progressive thumbnail loading
like in MyUploadAdapter, replace sizeMultiplier(0.3f) with thumbnail(0.3f) on
the same Glide request
(Glide.with(itemView).load(data.img).thumbnail(0.3f).into(ivItemMyPageRewardCircleFrame))
so Glide fetches a smaller preview first, or alternatively use
RequestOptions.override(width, height) when you need a fixed decode size; update
the code path that binds images in MyRewardAdapter (the
Glide.with(...).load(...) chain) accordingly.

In `@app/src/main/java/com/runnect/runnect/util/binding/BindingAdapter.kt`:
- Around line 45-51: The Glide call in the ImageView.setDiscoverItemImage
binding adapter uses sizeMultiplier(0.3f) which changes behavior compared to the
original thumbnail(0.3f); update the Glide chain in setDiscoverItemImage to use
thumbnail(0.3f) (preserving any existing sizeMultiplier/format needs) so it
loads a lower-resolution placeholder image while the full image loads, keeping
the rest of the Glide options (e.g., format) intact.
🪄 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 57a7dc23-a67c-4eaa-be78-c8aef826f84e

📥 Commits

Reviewing files that changed from the base of the PR and between edef217 and a785c9a.

📒 Files selected for processing (9)
  • app/build.gradle
  • app/src/main/java/com/runnect/runnect/di/ServiceModule.kt
  • app/src/main/java/com/runnect/runnect/presentation/MainActivity.kt
  • app/src/main/java/com/runnect/runnect/presentation/detail/CourseDetailActivity.kt
  • app/src/main/java/com/runnect/runnect/presentation/mypage/history/adapter/MyHistoryAdapter.kt
  • app/src/main/java/com/runnect/runnect/presentation/mypage/reward/adapter/MyRewardAdapter.kt
  • app/src/main/java/com/runnect/runnect/presentation/mypage/upload/adapter/MyUploadAdapter.kt
  • app/src/main/java/com/runnect/runnect/util/binding/BindingAdapter.kt
  • gradle/libs.versions.toml
✅ Files skipped from review due to trivial changes (1)
  • app/src/main/java/com/runnect/runnect/di/ServiceModule.kt

- compose-bom 2026.03.00 → 2026.03.01 (최신 패치)
- kakao-story 미사용 의존성 제거 (혼합 버전 해소)
- Glide sizeMultiplier → thumbnail(RequestBuilder) 패턴으로 변경
  (progressive loading 동작 유지)
@unam98 unam98 merged commit 239db4f into develop Apr 2, 2026
2 checks passed
@unam98 unam98 self-assigned this Apr 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant