Skip to content

Conversation

@s9hn
Copy link
Member

@s9hn s9hn commented Sep 11, 2025

📌𝘐𝘴𝘴𝘶𝘦𝘴

📎𝘞𝘰𝘳𝘬 𝘋𝘦𝘴𝘤𝘳𝘪𝘱𝘵𝘪𝘰𝘯

📷𝘚𝘤𝘳𝘦𝘦𝘯𝘴𝘩𝘰𝘵

💬𝘛𝘰 𝘙𝘦𝘷𝘪𝘦𝘸𝘦𝘳𝘴

Summary by CodeRabbit

  • 신기능

    • 엣지-투-엣지 지원 강화로 화면 몰입감 향상
    • 상태바/네비게이션바 아이콘 색상 제어가 boolean 기반으로 통합됨
  • 스타일

    • 시스템 바 영역을 고려한 안전 패딩 적용으로 콘텐츠 가림 감소
    • 사용자 보관함 화면에 화이트 배경 적용
  • 리팩터링

    • 로그인 화면을 Compose 전환(기존 XML 레이아웃 제거)
    • 스플래시 화면을 공통 베이스 액티비티 및 데이터 바인딩 구조로 정리
  • 버그 수정

    • 윈도우 인셋 전파 정리로 간헐적 레이아웃 겹침 완화

@s9hn s9hn self-assigned this Sep 11, 2025
@s9hn s9hn added ⚖️ 재상 세훈 전지적 세훈 시점 🔨 [FIX] 버그를 수정합니다. labels Sep 11, 2025
@coderabbitai
Copy link

coderabbitai bot commented Sep 11, 2025

Walkthrough

액티비티와 컴포저블의 엣지투엣지·시스템바 처리 통합: BaseActivity에서 윈도우 인셋을 소비하도록 변경하고, 시스템바 아이콘 색 설정 유틸을 파라미터화(흰/어두움)로 교체했으며 여러 액티비티·컴포저블에서 WindowInsets.systemBars 기반 패딩/초기화로 전환하고 일부 액티비티 상속/레이아웃을 조정했습니다.

Changes

Cohort / File(s) Summary
BaseActivity insets handling
app/src/main/java/com/into/websoso/core/common/ui/base/BaseActivity.kt
WindowInsets listener가 반환값을 WindowInsetsCompat.CONSUMED로 변경해 인셋을 소비하도록 함; WindowCompat.getInsetsController(...)로 상태/내비게이션 바 외관(isAppearanceLight*) 설정 추가.
System bar helper rename & behavior
app/src/main/java/com/into/websoso/core/common/util/ExtentionFuction.kt
setupWhiteStatusBar()setupSystemBarIconColor(isLightMode: Boolean)로 시그니처 변경; 색 직접 설정 제거, WindowCompat.getInsetsController로 상태/내비게이션 바 아이콘 밝기 제어.
Activity updates (base classes, init calls)
.../ui/login/LoginActivity.kt, .../ui/splash/SplashActivity.kt, .../ui/main/MainActivity.kt, .../ui/notification/NotificationActivity.kt, .../ui/notificationDetail/NotificationDetailActivity.kt, .../ui/userStorage/UserStorageActivity.kt, .../ui/expandedFeedImage/ExpandedFeedImageActivity.kt
여러 액티비티에서 base 클래스 또는 초기화 흐름 변경: LoginActivity는 ComponentActivity()로 전환(레이아웃 리소스 제거), SplashActivity는 BaseActivity<...> 상속으로 변경, MainActivity에서 setDecorFitsSystemWindows 제거, 각 액티비티에서 setupSystemBarIconColor(true) 호출로 시스템바 아이콘 설정 통일.
Compose insets & padding changes
.../ui/expandedFeedImage/ExpandedFeedImageScreen.kt, feature/signin/src/main/java/com/into/websoso/feature/signin/SignInScreen.kt
수동 패딩/네비게이션바 기반 계산을 제거하고 .windowInsetsPadding(WindowInsets.systemBars) 적용; 배경 색 지정에서 named parameter 사용 등 경미한 수정.
Layouts: login removed, splash using data binding
app/src/main/res/layout/activity_login.xml, app/src/main/res/layout/activity_splash.xml
activity_login.xml 삭제(빈 루트만 있던 파일 제거). activity_splash.xml은 ConstraintLayout 루트를 <layout> 데이터바인딩 루트로 감싸고 빈 <data> 블록 추가(시각적 구조 불변).
ExpandedFeedImage UI edge-to-edge
.../ui/expandedFeedImage/ExpandedFeedImageActivity.kt, .../ExpandedFeedImageScreen.kt
액티비티에서 enableEdgeToEdge() 사용 및 Screen에서 systemBars 패딩 적용으로 엣지투엣지 처리 일관화.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant A as Activity.onCreate
  participant H as setupSystemBarIconColor
  participant W as Window/InsetsController
  participant B as BaseActivity InsetsListener
  participant C as Compose UI

  A->>H: setupSystemBarIconColor(isLightMode)
  H->>W: WindowCompat.getInsetsController(window, view)
  W-->>H: apply isAppearanceLightStatusBars/NavigationBars

  A->>C: setContent { Composables }
  C->>W: request WindowInsets.systemBars (windowInsetsPadding)
  W->>B: dispatch insets
  B->>B: apply padding to root view
  B-->>W: return WindowInsetsCompat.CONSUMED
  note right of B: Insets are consumed after padding applied
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • junseo511
  • yeonjeen
  • m6z1

바람 스치는 상태바, 흰 빛 반짝 비치네 ✨
토끼는 귀 세워 가장자리까지 쏙—edge to edge!
인셋은 폼 잡고 먹혀버려, 레이아웃은 깔끔히,
로그인 XML은 떠나가고 스플래시는 바인딩 꿈꾸네.
화면은 말끔히, 토끼는 껑충! 🐇

Pre-merge checks (1 passed, 3 warnings, 1 inconclusive)

❌ Failed checks (3 warnings, 1 inconclusive)
Check name Status Explanation Resolution
Out of Scope Changes Check ⚠️ Warning PR은 Edge-to-Edge 및 인셋 처리 관련 변경이 주를 이루지만 일부 변경은 범위를 벗어나는 것으로 보입니다. 예를 들어 LoginActivity를 ComponentActivity로 전환하고 activity_login.xml을 삭제한 점, SplashActivity의 상속을 BaseActivity로 변경하고 activity_splash.xml을 data binding 형태로 전환한 점은 단순 인셋/시스템바 처리와 직접적인 관련이 적어 별도 검토가 필요합니다. BaseActivity에서 인셋을 소비하도록 변경한 것과 시스템바 아이콘 설정 통일은 목표와 관련성이 높지만 구조적·레이아웃 변경이 함께 섞이면서 PR 범위가 확장되었습니다. 구조 변경(Login/Splash 전환, 레이아웃 삭제/데이터 바인딩 도입)은 별도 PR로 분리하거나 PR 본문에 각 변경의 의도·테스트 케이스·롤백 계획을 명확히 기재해 주세요; Edge-to-Edge 인셋 관련 변경만 우선 병합하고 구조 변경은 별도 검토 후 병합하는 것을 권장합니다.
Description Check ⚠️ Warning 현재 PR 설명은 템플릿 구조를 따르고 있으나 Work Description과 Screenshots, To Reviewers 항목이 비어 있어 변경 목적·구체적 작업 내역·검증 포인트가 누락되어 있습니다. Issues 항목에 closed #754만 기재되어 있고 변경된 파일 목록이나 의도, 테스트 방법이 제공되지 않아 리뷰어가 영향 범위를 판단하기 어렵습니다. 결과적으로 템플릿의 필수 정보를 채우지 않아 현재 상태로는 검토에 적합하지 않습니다. Work Description에 변경 목적, 핵심 변경 파일 및 이유, 예상 영향과 호환성/롤백 고려사항을 요약하고 스크린샷(필요 시)과 검증 절차·체크리스트를 추가해 주세요; To Reviewers에 구체적 검토 포인트(예: 인셋 처리 영향, 액티비티 상속 변경 확인, 레이아웃 삭제 검증)를 명시하고 연관 이슈(#754)와의 매핑 정보를 포함하면 리뷰가 수월해집니다.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Linked Issues Check ❓ Inconclusive 연결된 이슈 #754에는 개요와 수용 기준이 제공되지 않아 PR 변경사항이 해당 이슈의 요구사항을 충족하는지 검증할 수 없습니다. PR은 인셋/시스템바 처리 외에도 LoginActivity의 AppCompatActivity→ComponentActivity 전환과 activity_login.xml 삭제, SplashActivity의 BaseActivity 전환 및 레이아웃 데이터 바인딩 적용 등 구조적 변경을 포함하고 있으나 이들 변경이 이슈 범위에 포함되는지 판단할 근거가 없습니다. 따라서 링크된 이슈의 정보 부족으로 준수 여부를 확정할 수 없습니다. 이슈 #754에 명확한 수용 기준과 작업 항목을 추가하거나 PR 본문에 변경 항목별로 어떤 이슈 요구사항을 충족하는지 매핑 표를 작성해 주세요; 특히 Login/Splash 관련 구조 변경과 레이아웃 삭제는 별도 이슈 또는 설명과 테스트 계획을 포함해 분리 검토해 주시면 검증이 가능해집니다.
✅ Passed checks (1 passed)
Check name Status Explanation
Title Check ✅ Passed PR 제목 "fix: EdgeToEdge 대응"은 이번 변경의 핵심인 시스템 바 및 윈도우 인셋(Edge-to-Edge) 관련 수정을 간결하게 요약하고 있어 주요 변경 목적을 잘 전달합니다. 제목은 짧고 불필요한 정보가 없으며 동료가 히스토리를 스캔할 때 주요 의도를 파악하기에 충분합니다. 따라서 변경 범위와 주제를 적절히 반영하고 있습니다.

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
  pre_merge_checks:
    custom_checks:
      - name: "Undocumented Breaking Changes"
        mode: "warning"
        instructions: |
          Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/754

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.

@s9hn s9hn changed the title refactor: 엣지투엣지 및 시스템 바 패딩 적용 fix: EdgeToEdge 대응 Sep 11, 2025
Copy link
Member

@m6z1 m6z1 left a comment

Choose a reason for hiding this comment

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

감사해요 😊😊

Copy link

@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: 0

Caution

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

⚠️ Outside diff range comments (2)
app/src/main/java/com/into/websoso/core/common/ui/base/BaseActivity.kt (1)

21-32: 기존 패딩이 덮어써질 수 있음 — 초기 패딩을 보존해 합산하세요

현재 updatePadding이 XML/코드에 정의된 기존 패딩을 모두 덮어씁니다. 인셋 적용 시 초기 패딩을 보존하지 않으면 UI가 의도보다 좁아지거나 어긋날 수 있습니다. 초기 패딩을 캡처해 인셋과 합산하는 형태로 바꾸는 것을 권장합니다.

아래와 같이 초기 패딩을 캡처해 합산하는 형태로 수정 제안:

   override fun onCreate(savedInstanceState: Bundle?) {
     super.onCreate(savedInstanceState)
     enableEdgeToEdge()
     _binding = DataBindingUtil.setContentView(this, layoutResId)
+    val initialLeft = binding.root.paddingLeft
+    val initialTop = binding.root.paddingTop
+    val initialRight = binding.root.paddingRight
+    val initialBottom = binding.root.paddingBottom
     ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets ->
       val bars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
       val ime = insets.getInsets(WindowInsetsCompat.Type.ime())
       val bottom = kotlin.math.max(bars.bottom, ime.bottom)
       v.updatePadding(
-        top = bars.top,
-        bottom = bottom,
-        left = bars.left,
-        right = bars.right,
+        top = initialTop + bars.top,
+        bottom = initialBottom + bottom,
+        left = initialLeft + bars.left,
+        right = initialRight + bars.right,
       )
       WindowInsetsCompat.CONSUMED
     }
   }
app/src/main/java/com/into/websoso/ui/expandedFeedImage/ExpandedFeedImageScreen.kt (1)

82-85: 접근성: Icon에 의미 있는 contentDescription을 제공하세요

contentDescription = null은 스크린리더 사용자가 닫기 기능을 인지하지 못하게 합니다. 간단히 “닫기” 등의 설명을 넣어 주세요.

-    Icon(
+    Icon(
         painter = painterResource(id = ic_expanded_feed_image_close),
-        contentDescription = null,
+        contentDescription = "닫기",
         tint = White,

리소스 체계를 쓰신다면 stringResource(R.string.cd_close)로 교체를 권장합니다.

🧹 Nitpick comments (4)
app/src/main/java/com/into/websoso/ui/expandedFeedImage/ExpandedFeedImageActivity.kt (1)

20-22: 필수 인텐트 데이터 부재 시 빈 화면 가능성 — 액티비티 종료로 처리 권장

return@WebsosoTheme로 컴포지션만 빠져나오면 Activity는 유지되어 빈 화면이 될 수 있습니다. 인텐트 검증을 setContent 이전에 수행하고 실패 시 finish()로 종료하는 흐름이 더 안전합니다.

   override fun onCreate(savedInstanceState: Bundle?) {
     super.onCreate(savedInstanceState)
     enableEdgeToEdge()
-    setContent {
+    val imageUrls = intent.getStringArrayListExtra(FEED_IMAGE_URLS)
+      ?: run {
+        finish()
+        return
+      }
+    setContent {
       WebsosoTheme {
         ExpandedFeedImageScreen(
           index = intent.getIntExtra(FEED_IMAGE_INDEX, 0),
-          imageUrls = intent.getStringArrayListExtra(FEED_IMAGE_URLS)
-              ?: return@WebsosoTheme,
+          imageUrls = imageUrls,
           onBackButtonClick = {
             setResult(ResultFrom.Notification.RESULT_OK)
             finish()
           },
         )
       }
app/src/main/java/com/into/websoso/core/common/util/ExtentionFuction.kt (2)

166-176: InsetsController 재사용 및 네비게이션 바 색상 설정 제안

getInsetsController를 두 번 호출하지 말고 컨트롤러를 재사용하세요. 또한 “White 시스템 바” 의도라면 3-버튼 내비 모드에서 배경 대비를 보장하기 위해 navigationBarColor도 흰색으로 설정하는 편이 일관됩니다. (제스처 내비에서는 콘텐츠 배경과의 대비를 별도 검토 필요)

 fun Activity.setupWhiteSystemBar() {
-    this.window.statusBarColor = White.toArgb()
-
-    WindowCompat.getInsetsController(this.window, this.window.decorView).apply {
-        isAppearanceLightStatusBars = true
-    }
-
-    WindowCompat.getInsetsController(this.window, this.window.decorView).apply {
-        isAppearanceLightNavigationBars = true
-    }
+    window.statusBarColor = White.toArgb()
+    window.navigationBarColor = White.toArgb()
+    val controller = WindowCompat.getInsetsController(window, window.decorView)
+    controller.isAppearanceLightStatusBars = true
+    controller.isAppearanceLightNavigationBars = true
 }

주의:

  • 화면 배경이 어두운 화면(예: 전체화면 이미지)에서는 이 함수를 호출하지 않아야 내비 아이콘 대비 문제가 없습니다. 호출 위치별 배경 톤을 재점검해 주세요.

1-1: 파일명 오탈자

ExtentionFuction.ktExtensionFunction.kt(또는 ExtensionFunctions.kt)로 정정 권장. 검색성 및 일관성 측면에서 이득이 있습니다.

app/src/main/java/com/into/websoso/ui/userStorage/UserStorageActivity.kt (1)

41-46: Scaffold의 기본 인셋 + 수동 windowInsetsPadding 중복 가능성

Scaffold는 기본적으로 콘텐츠 인셋을 적용합니다. 여기에 추가로 windowInsetsPadding(WindowInsets.systemBars)까지 주면 상·하단 여백이 이중 적용될 수 있습니다. 하나로 통일해 주세요.

두 가지 중 택1:

  • 상위 Modifier에서만 인셋 처리:
 Scaffold(
     modifier = Modifier
         .fillMaxSize()
-        .background(color = White)
-        .windowInsetsPadding(WindowInsets.systemBars),
+        .background(color = White),
     ) { inner ->
     Box(modifier = Modifier.padding(inner)) {
  • 혹은 Scaffold의 인셋을 0으로 두고 상위 Modifier에서 처리 유지:
 Scaffold(
     modifier = Modifier
         .fillMaxSize()
         .background(color = White)
         .windowInsetsPadding(WindowInsets.systemBars),
+    contentWindowInsets = WindowInsets(0),
 ) { inner ->
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 27182bf and 89f12b3.

📒 Files selected for processing (13)
  • app/src/main/java/com/into/websoso/core/common/ui/base/BaseActivity.kt (1 hunks)
  • app/src/main/java/com/into/websoso/core/common/util/ExtentionFuction.kt (1 hunks)
  • app/src/main/java/com/into/websoso/ui/expandedFeedImage/ExpandedFeedImageActivity.kt (1 hunks)
  • app/src/main/java/com/into/websoso/ui/expandedFeedImage/ExpandedFeedImageScreen.kt (2 hunks)
  • app/src/main/java/com/into/websoso/ui/login/LoginActivity.kt (2 hunks)
  • app/src/main/java/com/into/websoso/ui/main/MainActivity.kt (0 hunks)
  • app/src/main/java/com/into/websoso/ui/notification/NotificationActivity.kt (2 hunks)
  • app/src/main/java/com/into/websoso/ui/notificationDetail/NotificationDetailActivity.kt (2 hunks)
  • app/src/main/java/com/into/websoso/ui/splash/SplashActivity.kt (2 hunks)
  • app/src/main/java/com/into/websoso/ui/userStorage/UserStorageActivity.kt (3 hunks)
  • app/src/main/res/layout/activity_login.xml (0 hunks)
  • app/src/main/res/layout/activity_splash.xml (1 hunks)
  • feature/signin/src/main/java/com/into/websoso/feature/signin/SignInScreen.kt (2 hunks)
💤 Files with no reviewable changes (2)
  • app/src/main/java/com/into/websoso/ui/main/MainActivity.kt
  • app/src/main/res/layout/activity_login.xml
🧰 Additional context used
🧬 Code graph analysis (5)
app/src/main/java/com/into/websoso/ui/notificationDetail/NotificationDetailActivity.kt (1)
app/src/main/java/com/into/websoso/core/common/util/ExtentionFuction.kt (1)
  • setupWhiteSystemBar (166-176)
app/src/main/java/com/into/websoso/ui/userStorage/UserStorageActivity.kt (1)
app/src/main/java/com/into/websoso/core/common/util/ExtentionFuction.kt (1)
  • setupWhiteSystemBar (166-176)
app/src/main/java/com/into/websoso/ui/login/LoginActivity.kt (1)
app/src/main/java/com/into/websoso/core/common/util/ExtentionFuction.kt (1)
  • setupWhiteSystemBar (166-176)
app/src/main/java/com/into/websoso/ui/notification/NotificationActivity.kt (1)
app/src/main/java/com/into/websoso/core/common/util/ExtentionFuction.kt (1)
  • setupWhiteSystemBar (166-176)
app/src/main/java/com/into/websoso/ui/expandedFeedImage/ExpandedFeedImageActivity.kt (1)
app/src/main/java/com/into/websoso/ui/expandedFeedImage/ExpandedFeedImageScreen.kt (1)
  • ExpandedFeedImageScreen (31-74)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build
🔇 Additional comments (16)
app/src/main/java/com/into/websoso/core/common/ui/base/BaseActivity.kt (1)

33-33: WindowInsets를 CONSUMED로 반환하면 자식 뷰/프래그먼트가 인셋을 못 받을 수 있어요

루트에서 인셋을 소비하면 하위 뷰(특히 추가로 windowInsetsPadding을 쓰는 Compose/뷰)가 인셋을 못 받아 중복/부재 문제가 교차로 발생할 수 있습니다. 상위에서만 인셋을 처리할지, 자식에게 위임할지 정책을 확정해 주세요. 자식에서도 인셋을 활용한다면 반환값을 그대로 유지하는 편이 안전합니다.

정책을 자식 위임으로 할 경우:

-            WindowInsetsCompat.CONSUMED
+            insets
app/src/main/java/com/into/websoso/ui/expandedFeedImage/ExpandedFeedImageScreen.kt (1)

46-48: windowInsetsPadding(WindowInsets.systemBars) 적용 방향 좋습니다

배경을 먼저 깔고(system 뒤 포함) 그 다음 인셋 패딩을 적용하는 순서가 적절합니다. 이미지 및 상단 컨트롤이 시스템 바에 가리지 않습니다.

feature/signin/src/main/java/com/into/websoso/feature/signin/SignInScreen.kt (1)

84-85: systemBars 전부에 패딩을 주는 변경의 파급범위 확인 필요

이전엔 주로 하단 네비게이션 영역만 고려했는데, 이제 상단 상태바까지 포함됩니다. 상단 여백 증가가 의도된 UI인지, 외부에서 추가로 인셋을 적용하는 레이어(예: Scaffold, Activity 루트)와 중복되지 않는지 확인해 주세요.

app/src/main/java/com/into/websoso/ui/notificationDetail/NotificationDetailActivity.kt (1)

22-23: LGTM — 시스템 바 설정 일관화

enableEdgeToEdge() 이후 setupWhiteSystemBar() 호출로 다른 화면과 정책이 맞춰졌습니다.

app/src/main/java/com/into/websoso/ui/notification/NotificationActivity.kt (1)

25-26: LGTM — 시스템 바 정책 일관화

기존 setupWhiteStatusBar()setupWhiteSystemBar() 전환이 잘 반영되었습니다.

app/src/main/java/com/into/websoso/ui/login/LoginActivity.kt (4)

8-8: LGTM!

AppCompatActivity에서 ComponentActivity로의 변경은 Compose 기반 UI에 적합한 선택입니다.


24-24: 클래스 상속 변경이 올바르게 적용되었습니다

AppCompatActivity에서 ComponentActivity로의 변경으로 Compose 기반 UI에 더 적합한 구조가 되었습니다.


36-37: 시스템 바 설정 순서 — 문제 없음

enableEdgeToEdge() 호출 후 setupWhiteSystemBar()로 시스템 바 색상·외관을 설정하는 순서는 Android 권장 순서와 일치합니다. 이후 WindowInsets 처리가 적절히 적용되는지 확인하세요.


17-17: 함수명 변경 확인: setupWhiteStatusBar → setupWhiteSystemBar (문제 없음)

기존 setupWhiteStatusBar 호출은 코드베이스에서 발견되지 않았습니다. 새 정의는 app/src/main/java/com/into/websoso/core/common/util/ExtentionFuction.kt의 fun Activity.setupWhiteSystemBar()이며, LoginActivity/NotificationActivity/NotificationDetailActivity/UserStorageActivity 등에서 setupWhiteSystemBar()로 호출되고 있습니다.

app/src/main/res/layout/activity_splash.xml (3)

2-4: 데이터 바인딩 구조로 올바르게 변경되었습니다

레이아웃이 데이터 바인딩을 지원하도록 <layout> 태그로 래핑되었고, 필요한 네임스페이스도 적절히 선언되었습니다.


6-8: 빈 데이터 블록

현재는 빈 <data> 블록이지만, 향후 바인딩 변수가 필요할 때를 대비한 구조입니다.


10-37: 기존 UI 구조가 그대로 유지되었습니다

데이터 바인딩 구조로 변경되었지만 실제 UI 요소들과 제약사항은 모두 동일하게 유지되어 기존 기능에 영향을 주지 않습니다.

app/src/main/java/com/into/websoso/ui/splash/SplashActivity.kt (4)

10-10: BaseActivity 사용으로 일관성 있는 구조

BaseActivity로 변경하여 앱 전반의 Activity 구조가 일관성을 갖게 되었습니다.


12-12: 데이터 바인딩 import 추가

ActivitySplashBinding import가 추가되어 데이터 바인딩을 사용할 준비가 완료되었습니다.


21-21: BaseActivity와 데이터 바인딩 구조가 올바르게 적용되었습니다

BaseActivity<ActivitySplashBinding>를 사용하여 타입 안전한 바인딩과 일관된 Activity 구조를 확보했습니다.


27-32: 기존 로직이 그대로 유지되었습니다

Activity 생명주기와 관련된 핵심 로직이 변경되지 않아 기능상 문제가 없을 것으로 보입니다.

Copy link

@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: 0

🧹 Nitpick comments (2)
app/src/main/java/com/into/websoso/core/common/util/ExtentionFuction.kt (2)

164-169: 대안 제안: enableEdgeToEdge(SystemBarStyle)로 테마 연동 및 제스처 내비 대응 강화

activity-ktx(1.8+)를 사용 중이면, SystemBarStyle을 이용해 테마에 따라 아이콘 명암과 스크림을 일관되게 적용할 수 있습니다. 추후 확장성과 API 차등처리를 줄이는 데 유리합니다.

예시:

import androidx.activity.SystemBarStyle
import androidx.activity.enableEdgeToEdge
import android.graphics.Color

fun Activity.setSystemBars(darkIcons: Boolean) {
    val light = SystemBarStyle.light(Color.TRANSPARENT, Color.TRANSPARENT)
    val dark = SystemBarStyle.dark(Color.TRANSPARENT)
    enableEdgeToEdge(
        statusBarStyle = if (darkIcons) light else dark,
        navigationBarStyle = if (darkIcons) light else dark,
    )
}

참고: 제스처 내비 환경에서는 내비 아이콘이 거의 보이지 않으므로 상태바/내비를 분리 제어할 필요가 있으면 오버로드로 분화해도 좋습니다.


1-1: 파일명 오타 니트픽: ExtentionFuction → ExtensionFunction

유틸 파일명 오타가 누적되면 검색/탐색성이 떨어집니다. 리네임을 권장합니다.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 89f12b3 and 75cf53c.

📒 Files selected for processing (6)
  • app/src/main/java/com/into/websoso/core/common/ui/base/BaseActivity.kt (2 hunks)
  • app/src/main/java/com/into/websoso/core/common/util/ExtentionFuction.kt (1 hunks)
  • app/src/main/java/com/into/websoso/ui/login/LoginActivity.kt (2 hunks)
  • app/src/main/java/com/into/websoso/ui/notification/NotificationActivity.kt (2 hunks)
  • app/src/main/java/com/into/websoso/ui/notificationDetail/NotificationDetailActivity.kt (2 hunks)
  • app/src/main/java/com/into/websoso/ui/userStorage/UserStorageActivity.kt (3 hunks)
🚧 Files skipped from review as they are similar to previous changes (5)
  • app/src/main/java/com/into/websoso/ui/userStorage/UserStorageActivity.kt
  • app/src/main/java/com/into/websoso/ui/login/LoginActivity.kt
  • app/src/main/java/com/into/websoso/ui/notification/NotificationActivity.kt
  • app/src/main/java/com/into/websoso/ui/notificationDetail/NotificationDetailActivity.kt
  • app/src/main/java/com/into/websoso/core/common/ui/base/BaseActivity.kt
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build
🔇 Additional comments (2)
app/src/main/java/com/into/websoso/core/common/util/ExtentionFuction.kt (2)

164-169: LGTM: 시스템바 아이콘 토글 유틸 일관화

WindowInsetsControllerCompat를 통해 상태바/내비게이션바 아이콘 색을 한곳에서 토글하도록 정리된 점 좋습니다.


164-169: 네이밍 혼동: isLightMode → darkIcons 계열로 변경 권장

isAppearanceLightStatusBars = true는 '밝은 배경에서 어두운 아이콘'을 의미하므로 isLightMode는 오해 소지 있음. darkIcons 계열 네이밍으로 변경 권장.

-fun Activity.setupSystemBarIconColor(isLightMode: Boolean) {
-    WindowCompat.getInsetsController(this.window, this.window.decorView).apply {
-        isAppearanceLightStatusBars = isLightMode
-        isAppearanceLightNavigationBars = isLightMode
-    }
-}
+fun Activity.setSystemBarDarkIcons(darkIcons: Boolean) {
+    WindowCompat.getInsetsController(window, window.decorView).apply {
+        isAppearanceLightStatusBars = darkIcons
+        isAppearanceLightNavigationBars = darkIcons
+    }
+}

호출부 검색 결과: 리포지토리에서 setupSystemBarIconColor 호출을 찾지 못했습니다(검색 제한 가능). 변경 시 호출부 전부 점검·수정 필요.

@m6z1 m6z1 merged commit f35c659 into develop Sep 11, 2025
2 checks passed
@m6z1 m6z1 deleted the feat/754 branch September 11, 2025 13:27
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: EdgeToEdge 대응

3 participants