๐ :: (#798) ๊ทธ๋๋ค ๋ฒ์ ๋ง์ด๊ทธ๋ ์ด์ - #799
Hidden character warning
Conversation
WalkthroughUpgrades Gradle, Kotlin, AGP, Compose and Compose compiler; adds compose compiler plugin across modules; removes androidx.window/accompanist adaptive and DisplayFeature usage; refactors HomeScreen pull-to-refresh to callback-driven isRefreshing; removes windowInsets from ModalBottomSheet API; UI tweaks (dividers, ripple) and minor formatting/import changes. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor User
participant HomeScreen
participant ViewModel
participant Network
Note over HomeScreen: Pull-to-refresh (callback-based)
User->>HomeScreen: Pull gesture
HomeScreen->>HomeScreen: set isRefreshing = true
HomeScreen->>ViewModel: onRefresh() (UpdateMeal intent)
ViewModel->>Network: request meal update
Network-->>ViewModel: MealUpdated / Error
ViewModel-->>HomeScreen: emit state/side-effect
HomeScreen->>HomeScreen: set isRefreshing = false
HomeScreen->>User: show success or error toast
sequenceDiagram
autonumber
participant MainActivity
participant PlayCore
participant System
Note over MainActivity: In-app update via launcher
MainActivity->>PlayCore: build AppUpdateOptions(IMMEDIATE)
MainActivity->>System: startIntentSenderForResult via updateLauncher
System-->>MainActivity: onActivityResult (update result)
MainActivity->>PlayCore: handle result (complete / retry / error)
Estimated code review effort๐ฏ 3 (Moderate) | โฑ๏ธ ~30 minutes
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touchesโ Failed checks (1 warning, 1 inconclusive)
โ Passed checks (1 passed)
โจ Finishing touches
๐งช Generate unit tests (beta)
๐ Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro ๐ Files selected for processing (10)
โ Files skipped from review due to trivial changes (3)
๐ง Files skipped from review as they are similar to previous changes (3)
๐ Additional comments (4)
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: 1
๐งน Nitpick comments (4)
core/design-system/src/main/java/team/aliens/dms/android/core/designsystem/Clickable.kt (1)
5-6: Material3 ripple usage is correct; consider avoiding work whenripple == falseThe migration to
material3.rippleand passing it as anindicationis fine. Right now,ripple(...)is evaluated even when therippleflag is false due to.takeIf { ripple }. If you care about avoiding that extra work and making intent clearer, you could switch to:indication = if (ripple) { ripple( color = rippleColor ?: DmsTheme.colorScheme.surfaceVariant, radius = rippleRadius ?: Dp.Unspecified, ) } else { null }This keeps behavior the same while skipping ripple creation when disabled.
Also applies to: 26-31
app/build.gradle.kts (1)
38-43: Minor: remove duplicateaaptOptions.cruncherEnabled = falsein debug buildType
aaptOptions.cruncherEnabled = falseis set twice in the debug block. Itโs harmless but redundant; you can drop one of them to keep the config clean.core/ui/build.gradle.kts (1)
58-63: Consider moving Compose test JUnit to the test configuration
implementation(libs.androidx.compose.test.junit)is currently in the main implementation configuration. Itโs usually intended only for tests and can be moved toandroidTestImplementation(ortestImplementationas appropriate) to avoid shipping test-only code in the main artifact.app/src/main/java/team/aliens/dms/android/app/MainActivity.kt (1)
41-51: Adaptive layout TODO is a good placeholder; consider linking a tracking itemLeaving the TODO above
windowSizeClasskeeps the intent clear after removing the previous adaptive layout code. If you have a tracking issue (e.g., GitHub/Jira ID), consider referencing it in the comment so itโs easier to discover later.
๐ Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
๐ Files selected for processing (13)
app/build.gradle.kts(1 hunks)app/src/main/java/team/aliens/dms/android/app/DmsApp.kt(0 hunks)app/src/main/java/team/aliens/dms/android/app/MainActivity.kt(1 hunks)buildSrc/src/main/kotlin/ProjectProperties.kt(1 hunks)core/design-system/build.gradle.kts(1 hunks)core/design-system/src/main/java/team/aliens/dms/android/core/designsystem/Clickable.kt(2 hunks)core/design-system/src/main/java/team/aliens/dms/android/core/designsystem/Modal.kt(0 hunks)core/ui/build.gradle.kts(1 hunks)core/widget/build.gradle.kts(1 hunks)feature/build.gradle.kts(1 hunks)feature/src/main/java/team/aliens/dms/android/feature/main/home/HomeScreen.kt(4 hunks)gradle/libs.versions.toml(3 hunks)gradle/wrapper/gradle-wrapper.properties(1 hunks)
๐ค Files with no reviewable changes (2)
- core/design-system/src/main/java/team/aliens/dms/android/core/designsystem/Modal.kt
- app/src/main/java/team/aliens/dms/android/app/DmsApp.kt
๐งฐ Additional context used
๐งฌ Code graph analysis (1)
app/src/main/java/team/aliens/dms/android/app/MainActivity.kt (2)
core/design-system/src/main/java/team/aliens/dms/android/core/designsystem/Theme.kt (1)
DmsTheme(11-35)app/src/main/java/team/aliens/dms/android/app/DmsApp.kt (1)
DmsApp(34-95)
๐ Additional comments (14)
feature/src/main/java/team/aliens/dms/android/feature/main/home/HomeScreen.kt (4)
115-120: LGTM - Clean pull-to-refresh state management.The callback-based pattern with explicit
isRefreshingstate aligns well with Material3'sPullToRefreshBoxAPI. The state is properly managed: set totrueon refresh trigger and reset in side effect handlers.
122-138: LGTM - Comprehensive side effect handling.All paths correctly reset
isRefreshingtofalse, preventing the refresh indicator from getting stuck. Both success and error cases provide appropriate user feedback.
232-241: LGTM - MealCards integration and layout spacing.The
onRefreshcallback is correctly wired to allow refresh from the empty state button withinMealCard. The bottom spacer provides clearance for the bottom navigation bar.
188-194: PullToRefreshBox API is correct and compatible with Material3 1.3.2.The implementation at lines 188-194 matches the Material3 1.3.2 API signature exactly:
state: PullToRefreshStateโisRefreshing: BooleanโonRefresh: () -> UnitโAll parameters are properly typed and ordered. No API compatibility issues found.
gradle/wrapper/gradle-wrapper.properties (1)
4-4: Gradle 8.11.1 bump looks consistent with the rest of the toolchain upgradesThe wrapper URL change is straightforward and aligns with the AGP/Kotlin/Compose bumps; just ensure CI and local environments are actually using this wrapper when running builds.
buildSrc/src/main/kotlin/ProjectProperties.kt (1)
2-4: SDK level bump to 36 is consistent with the migrationRaising both
COMPILE_SDKandTARGET_SDKto 36 is aligned with the Gradle/Kotlin/Compose upgrades and centralizes the config cleanly inProjectProperties.core/widget/build.gradle.kts (1)
1-9: Compose compiler plugin addition fits the new toolchainAdding
libs.plugins.compose.compilerhere is consistent with other modules and with the Kotlin 2.0/AGP 8.x migration, especially sincebuildFeatures.compose = trueis enabled.app/build.gradle.kts (1)
4-13: App module now correctly opts into the Compose compiler pluginAdding
compose.compilerto the application module keeps it in sync with the library modules and is required for the upgraded Kotlin/Compose stack.feature/build.gradle.kts (1)
4-11: Feature module Compose compiler plugin usage is consistent with other modulesEnabling
libs.plugins.compose.compilerhere matches the pattern in app/core modules and is appropriate since this module is Compose-heavy.core/ui/build.gradle.kts (1)
4-9: Compose compiler plugin is correctly added to the core UI moduleAdding the Compose compiler plugin here aligns this module with the rest of the Compose stack and the Kotlin 2.0 upgrade.
core/design-system/build.gradle.kts (1)
9-9: Compose compiler plugin adoption aligns with Kotlin 2.0.0 best practices.Adding the Compose compiler plugin and removing the deprecated
composeOptionsblock is the correct approach for Kotlin 2.0.0 and Compose 1.7.8.Please verify cross-module consistency by confirming that all modules (e.g.,
feature,app,core/ui/widget) adopt the same Compose compiler plugin pattern, and run your test suite to ensure Kotlin 2.0.0 and Compose 1.7.8 compatibility.gradle/libs.versions.toml (3)
50-50: Compose compiler plugin version alignment is correct.The new
composeCompilerversion (2.0.0, line 50) andcompose-compilerplugin (line 122) both correctly referencekotlinJvm(2.0.0), ensuring version alignment.Also applies to: 122-122
1-122: Removal of androidx-window is applied consistently across the codebase.Verification confirms no remaining references to
androidx-windowexist in anybuild.gradle.ktsfiles, gradle files, or source code imports. The removal from the version catalog is complete and consistent.
24-24: Verify Kotlin 2.0.0 breaking changes and KSP processor compatibility; major versions are officially supported.Kotlin 2.0.0 is compatible with AGP 8.9.1 (requires AGP 8.5+), Compose 1.7.8 officially supports Kotlin 2.0.0 with the new compose-compiler plugin (correctly added in the PR), and Hilt 2.51.1 is compatible with both. KSP 2.0.0-1.0.24 is officially supported by Kotlin 2.0.0 (K2 compiler).
However, Kotlin 2.0.0 introduced breaking changes (invokedynamic lambda defaults, type-resolution changes, warnings elevated to errors, and stricter overload resolution). Additionally, KSP processors (including compose-destinations-ksp used in this codebase) must be K2/KSP2-compatible.
Verify:
- Kotlin 2.0.0 breaking changes do not impact the codebase (review Compatibility guide for Kotlin 2.0.x for breaking patterns like conflicting inherited members, overload priority changes, and type approximation differences).
- The compose-destinations library version used is K2/KSP2-compatible (check its release notes or bump to a version explicitly supporting Kotlin 2.0.0 if needed).
| if (uiState.newNoticesExist) { | ||
| AnnouncementCard( | ||
| modifier = Modifier.fillMaxWidth(), | ||
| visible = true, | ||
| onNavigateToAnnouncementList = onNavigateToAnnouncementList, | ||
| ) | ||
| } else { | ||
| Spacer(modifier = Modifier.height(DefaultHomeScreenVerticalSpace)) | ||
| } |
There was a problem hiding this comment.
Exit animation will not play due to conditional composition.
The AnnouncementCard is conditionally composed only when newNoticesExist is true. When it becomes false, the component is removed from composition entirely and replaced with a Spacer, so the exit animation (slideOutVertically + fadeOut) defined in AnnouncementCard will never run.
To preserve the exit animation:
- if (uiState.newNoticesExist) {
- AnnouncementCard(
- modifier = Modifier.fillMaxWidth(),
- visible = true,
- onNavigateToAnnouncementList = onNavigateToAnnouncementList,
- )
- } else {
- Spacer(modifier = Modifier.height(DefaultHomeScreenVerticalSpace))
- }
+ AnnouncementCard(
+ modifier = Modifier.fillMaxWidth(),
+ visible = uiState.newNoticesExist,
+ onNavigateToAnnouncementList = onNavigateToAnnouncementList,
+ )
+ if (!uiState.newNoticesExist) {
+ Spacer(modifier = Modifier.height(DefaultHomeScreenVerticalSpace))
+ }Alternatively, if exit animation is not needed, you can remove AnimatedVisibility from AnnouncementCard and simplify it.
๐ Committable suggestion
โผ๏ธ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| if (uiState.newNoticesExist) { | |
| AnnouncementCard( | |
| modifier = Modifier.fillMaxWidth(), | |
| visible = true, | |
| onNavigateToAnnouncementList = onNavigateToAnnouncementList, | |
| ) | |
| } else { | |
| Spacer(modifier = Modifier.height(DefaultHomeScreenVerticalSpace)) | |
| } | |
| AnnouncementCard( | |
| modifier = Modifier.fillMaxWidth(), | |
| visible = uiState.newNoticesExist, | |
| onNavigateToAnnouncementList = onNavigateToAnnouncementList, | |
| ) | |
| if (!uiState.newNoticesExist) { | |
| Spacer(modifier = Modifier.height(DefaultHomeScreenVerticalSpace)) | |
| } |
There was a problem hiding this comment.
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/team/aliens/dms/android/app/MainActivity.kt (1)
68-84: Based on my verification through the Play Core library documentation and codebase inspection:The review comment is accurate and well-founded. The Play Core library documentation explicitly requires checking
updateAvailability()andisUpdateTypeAllowed()before callingstartUpdateFlowForResult(). The current implementation at lines 72-83 unconditionally invokes the update flow without these required precondition checks, which violates documented API requirements and can cause unexpected behavior when no update is available.Update availability check and error handling are missing and must be added.
The code at lines 72โ83 calls
startUpdateFlowForResultwithout verifying:
appUpdateInfo.updateAvailability() == UPDATE_AVAILABLE(orDEVELOPER_TRIGGERED_UPDATE_IN_PROGRESSfor resumed updates)appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)- Any error handling via
addOnFailureListenerPer Play Core library documentation, apply the suggested checks:
appUpdateInfoTask.addOnSuccessListener { appUpdateInfo -> + if (appUpdateInfo.updateAvailability() == com.google.android.play.core.install.model.UpdateAvailability.UPDATE_AVAILABLE && + appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE) + ) { val updateOptions = AppUpdateOptions .newBuilder(AppUpdateType.IMMEDIATE) .setAllowAssetPackDeletion(true) .build() appUpdateManager.startUpdateFlowForResult( appUpdateInfo, updateLauncher, updateOptions, ) + } }Also add error handling:
appUpdateInfoTask.addOnFailureListener { exception -> // Log or handle the failure to fetch update info }
๐งน Nitpick comments (4)
gradle/libs.versions.toml (1)
49-49: Clarify compose-compiler version reference.Line 121 defines the compose-compiler plugin using
version.ref = "kotlinJvm"(which resolves to 2.0.0), but a dedicatedcomposeCompilerversion exists at line 49 (also 2.0.0). While both reference the same version currently, usingversion.ref = "composeCompiler"would improve clarity and reduce maintenance risk if the versions ever need to diverge.- compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlinJvm" } + compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "composeCompiler" }Also applies to: 121-121
feature/src/main/java/team/aliens/dms/android/feature/notice/NoticeDetailsScreen.kt (1)
102-107: HorizontalDivider usage is correct; consider a shared wrapper if reusedUsing
HorizontalDividerwithDividerDefaults.ThicknessandDmsTheme.colorScheme.linekeeps behavior and theming clear and explicit. If this exact divider style is reused across multiple screens (as it seems from the PR scope), consider extracting a smallDmsHorizontalDividerin the design system to centralize thickness/color and avoid repetition.feature/src/main/java/team/aliens/dms/android/feature/main/application/ApplicationScreen.kt (1)
40-81: LocalLifecycleOwner import is correct; consider moving lifecycle observation into DisposableEffectSwitching to
androidx.lifecycle.compose.LocalLifecycleOwneris consistent withcollectAsStateWithLifecycleand keeps all lifecycleโcompose usage in one place, so this import change looks good.Given the ongoing lifecycle/Compose upgrades, this is also a good moment to avoid doing
LocalLifecycleOwner.current.lifecycle.addObserver(viewModel)directly in the composable body, since it will be executed on every recomposition. A cleaner pattern is to register/unregister once withDisposableEffect:@@ - val viewModel: ApplicationViewModel = hiltViewModel() - val uiState by viewModel.stateFlow.collectAsStateWithLifecycle() - var selectedTab by remember { mutableIntStateOf(0) } - val tabs = listOf("์ ์ฒญ", "ํฌํ") - - LocalLifecycleOwner.current.lifecycle.addObserver(viewModel) + val viewModel: ApplicationViewModel = hiltViewModel() + val uiState by viewModel.stateFlow.collectAsStateWithLifecycle() + var selectedTab by remember { mutableIntStateOf(0) } + val tabs = listOf("์ ์ฒญ", "ํฌํ") + + val lifecycleOwner = LocalLifecycleOwner.current + DisposableEffect(lifecycleOwner, viewModel) { + lifecycleOwner.lifecycle.addObserver(viewModel) + onDispose { + lifecycleOwner.lifecycle.removeObserver(viewModel) + } + }(Remember to add
import androidx.compose.runtime.DisposableEffectif you apply this.)app/src/main/java/team/aliens/dms/android/app/MainActivity.kt (1)
33-39: Consider implementing the forced update modal or tracking this TODO.For
IMMEDIATEupdates, unhandled cancellation leaves the app in an inconsistent state. The user can continue using an outdated version, which may defeat the purpose of forcing an immediate update.Would you like me to open an issue to track the implementation of the forced update modal, or generate a basic implementation that re-triggers the update flow on cancellation?
๐ Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
๐ Files selected for processing (14)
app/src/main/java/team/aliens/dms/android/app/MainActivity.kt(4 hunks)core/design-system/src/main/java/team/aliens/dms/android/core/designsystem/Buttons.kt(5 hunks)core/design-system/src/main/java/team/aliens/dms/android/core/designsystem/Modal.kt(1 hunks)core/ui/src/main/java/team/aliens/dms/android/core/ui/CollectInLaunchedEffectWithLifecycle.kt(1 hunks)feature/src/main/java/team/aliens/dms/android/feature/main/application/ApplicationScreen.kt(2 hunks)feature/src/main/java/team/aliens/dms/android/feature/main/home/HomeScreen.kt(3 hunks)feature/src/main/java/team/aliens/dms/android/feature/main/mypage/MyPageScreen.kt(2 hunks)feature/src/main/java/team/aliens/dms/android/feature/notice/NoticeDetailsScreen.kt(2 hunks)feature/src/main/java/team/aliens/dms/android/feature/outing/OutingApplicationScreen.kt(4 hunks)feature/src/main/java/team/aliens/dms/android/feature/point/PointHistoryScreen.kt(1 hunks)feature/src/main/java/team/aliens/dms/android/feature/resetpassword/AccountVerificationScreen.kt(2 hunks)feature/src/main/java/team/aliens/dms/android/feature/resetpassword/ResetPasswordViewModel.kt(2 hunks)gradle/libs.versions.toml(3 hunks)shared/validator/build.gradle.kts(1 hunks)
โ Files skipped from review due to trivial changes (2)
- feature/src/main/java/team/aliens/dms/android/feature/point/PointHistoryScreen.kt
- feature/src/main/java/team/aliens/dms/android/feature/resetpassword/ResetPasswordViewModel.kt
๐ง Files skipped from review as they are similar to previous changes (2)
- core/design-system/src/main/java/team/aliens/dms/android/core/designsystem/Modal.kt
- feature/src/main/java/team/aliens/dms/android/feature/main/home/HomeScreen.kt
๐ Additional comments (11)
feature/src/main/java/team/aliens/dms/android/feature/main/mypage/MyPageScreen.kt (1)
23-25: HorizontalDivider + DividerDefaults usage looks correctSwitching to
HorizontalDividerandDividerDefaults.Thicknesskeeps behavior aligned with Material3โs current API and preserves your existing custom line color. No functional issues spotted in the updated option divider block.Please run the module build / UI tests after the Gradle & Compose upgrade to confirm there are no breaking API changes around
HorizontalDividerorDividerDefaultsin your exact Compose version.Also applies to: 535-540
feature/src/main/java/team/aliens/dms/android/feature/resetpassword/AccountVerificationScreen.kt (2)
65-81: Side-effect handling remains correct; trailing comma is fineThe InvalidEmailFormat branch still correctly shows the toast with the expected string; adding the trailing comma is purely formatting and has no behavioral impact. All good here.
158-171: TextField keyboardOptions unchanged in behavior
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next,)is equivalent to the previous form; the trailing comma is valid Kotlin and doesnโt alter runtime behavior. This keeps the multi-line call consistent and is fine as-is.core/design-system/src/main/java/team/aliens/dms/android/core/designsystem/Buttons.kt (2)
18-19: LGTM! Correct imports for Compose Material3 API migration.The new imports support the migration from deprecated
DividertoHorizontalDivider, aligning with Material3 best practices.
597-602: LGTM! Consistent API migration from deprecated Divider.All four divider instances in the preview function have been correctly migrated to
HorizontalDividerwith explicit styling parameters, ensuring visual consistency and compatibility with the updated Compose Material3 APIs.Also applies to: 671-676, 745-750, 842-847
shared/validator/build.gradle.kts (1)
12-14: โ JVM toolchain alignment is correct.The addition of
jvmToolchain(17)establishes consistency across modules and aligns with Kotlin 2.0.0 requirements. This configuration pairs well with thejava = "17"version inlibs.versions.toml.gradle/libs.versions.toml (1)
19-49: Major version upgrades are well-coordinated but require verification.Kotlin 2.0.0 is fully compatible with Gradle 6.8.3 through 8.5, and the Gradle 8.9.1 upgrade is within a reasonable range. When upgrading to Kotlin 2.0.0, KSP libraries and Android Gradle Plugin versions must also be updated, which is done here correctly (AGP 8.9.1, KSP 2.0.0-1.0.24). For Kotlin 2.0 or higher, configure Compose using the Compose Compiler Gradle plugin, and when using it, you don't have to check Compose to Kotlin compatibility.
However, verify that all modules using Compose have migrated to use the Compose Compiler Gradle plugin and have removed explicit
kotlinCompilerExtensionVersionconfigurations, as this PR summary mentions that adoption is in progress.core/ui/src/main/java/team/aliens/dms/android/core/ui/CollectInLaunchedEffectWithLifecycle.kt (1)
9-9: LocalLifecycleOwner import migration matches lifecycleโcompose and keeps behavior unchangedSwitching to
androidx.lifecycle.compose.LocalLifecycleOwneris the correct migration for newer Compose/lifecycle artifacts and preserves the existing behavior ofcollectInLaunchedEffectWithLifecycle, since the defaultlifecyclestill comes fromLocalLifecycleOwner.current.lifecycle. Please just confirm that the correspondinglifecycle-runtime-compose(or equivalent) dependency is present and on a version compatible with your upgraded AGP/Kotlin/Compose stack.feature/src/main/java/team/aliens/dms/android/feature/notice/NoticeDetailsScreen.kt (1)
11-13: Imports align with Material3 divider migrationThe added imports cleanly support the new divider implementation below and are consistent with the Material3 HorizontalDivider/DividerDefaults pattern.
feature/src/main/java/team/aliens/dms/android/feature/main/application/ApplicationScreen.kt (1)
150-155: Trailing comma on remainsOptionTitle argument is fineThe added trailing comma on
remainsOptionTitle = uiState.appliedRemainsOption?.title,is idiomatic Kotlin for multiโline calls and has no behavioral impact. It improves future diffs and formatting.feature/src/main/java/team/aliens/dms/android/feature/outing/OutingApplicationScreen.kt (1)
29-29: LGTM!Import required for the updated
menuAnchorAPI.
There was a problem hiding this comment.
Actionable comments posted: 0
๐งน Nitpick comments (1)
core/design-system/src/main/java/team/aliens/dms/android/core/designsystem/Modal.kt (1)
29-31: Default now blocks backโpress dismissal for all sheets using this wrapperChanging the default from the libraryโs
ModalBottomSheetDefaults.propertiestoModalBottomSheetProperties(shouldDismissOnBackPress = false)means everyModalBottomSheetthat relies on the default will no longer dismiss on system back. Thatโs a fairly visible global behavior change.If this was only meant to fix the deprecation/ABI change around
ModalBottomSheetDefaults.properties, consider either:
- keeping the previous behavior via
properties: ModalBottomSheetProperties = ModalBottomSheetDefaults.properties, or- overriding
propertiesat specific call sites that must not be dismissible, instead of changing the designโsystem default.Please doubleโcheck that all affected screens are expected to ignore backโpress for sheet dismissal.
๐ Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
๐ Files selected for processing (2)
core/design-system/src/main/java/team/aliens/dms/android/core/designsystem/Modal.kt(1 hunks)feature/src/main/java/team/aliens/dms/android/feature/outing/OutingApplicationScreen.kt(4 hunks)
๐ง Files skipped from review as they are similar to previous changes (1)
- feature/src/main/java/team/aliens/dms/android/feature/outing/OutingApplicationScreen.kt
๊ฐ์
์์ ์ฌํญ
์ถ๊ฐ ๋ก ํ ๋ง
Summary by CodeRabbit
Chores
New Features
Style / UX
โ๏ธ Tip: You can customize this high-level summary in your review settings.