-
Notifications
You must be signed in to change notification settings - Fork 1
Feat/remove_kakao_login: 카카오 로그인 삭제 #334
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughThis change set removes all code, dependencies, modules, and features related to login (especially Kakao login) and point management from the project. It deletes associated domain, data, and network layers, Gradle configurations, UI components, navigation, and related resources. Remaining code is refactored to eliminate references to these features, simplifying onboarding, main, and mypage flows. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant App
participant MainActivity
participant OnBoardingActivity
User->>App: Launches app
App->>MainActivity: Shows main UI (no login/point)
User->>OnBoardingActivity: (if onboarding needed)
OnBoardingActivity->>App: Tracks onboarding events
Note over App,MainActivity: All login/point flows and UI removed
Estimated code review effort🎯 5 (Critical) | ⏱️ ~90+ minutes Poem
Note ⚡️ Unit Test Generation is now available in beta!Learn more here, or try it out under "Finishing Touches" below. ✨ Finishing Touches
🧪 Generate unit tests
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
|
coderabbit 리뷰만 받고 target branch를 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
🧹 Nitpick comments (2)
app/src/main/res/layout/activity_sample.xml (1)
36-36: Consider if animation speed change is necessary for this PR.The splash logo animation speed increase from 1 to 1.5 seems unrelated to the core objective of removing Kakao login functionality. This change might be better suited for a separate UI improvement PR.
app/src/main/java/com/hmh/hamyeonham/StartActivity.kt (1)
28-28: Consider renaming method for clarity.The method name
navigateToLogin()is misleading since it now navigates toMainActivity. Consider renaming tonavigateToMain()for better code readability.- if (it.animatedFraction == 1.0f) { - navigateToLogin() - } + if (it.animatedFraction == 1.0f) { + navigateToMain() + }- private fun navigateToLogin() { + private fun navigateToMain() { startActivity(Intent(this, MainActivity::class.java)) finish() }Also applies to: 33-36
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (100)
.github/workflows/develop_PR_builder.yml(0 hunks).github/workflows/release.yml(0 hunks)app/build.gradle.kts(0 hunks)app/proguard-rules.pro(0 hunks)app/src/main/AndroidManifest.xml(0 hunks)app/src/main/java/com/hmh/hamyeonham/HMHApplication.kt(0 hunks)app/src/main/java/com/hmh/hamyeonham/StartActivity.kt(2 hunks)app/src/main/java/com/hmh/hamyeonham/navigation/DefaultNavigationProvider.kt(0 hunks)app/src/main/res/layout/activity_sample.xml(1 hunks)build-logic/convention/src/main/kotlin/com/hmh/hamyeonham/plugin/CommonConfigs.kt(0 hunks)core/common/src/main/java/com/hmh/hamyeonham/common/navigation/NavigationProvider.kt(0 hunks)core/common/src/main/java/com/hmh/hamyeonham/common/permission/PermissionActivity.kt(2 hunks)core/common/src/main/java/com/hmh/hamyeonham/common/permission/PermissionExt.kt(2 hunks)core/common/src/main/java/com/hmh/hamyeonham/common/qualifier/OAuth.kt(0 hunks)core/database/src/main/java/com/hmh/hamyeonham/core/database/HMHRoomDatabase.kt(3 hunks)core/database/src/main/java/com/hmh/hamyeonham/core/database/di/DatabaseModule.kt(2 hunks)core/designsystem/src/main/res/values/themes.xml(2 hunks)core/network/build.gradle.kts(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/authenticator/AuthenticatorUtil.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/authenticator/HMHAuthenticator.kt(2 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/datastore/network/DefaultUserPreference.kt(2 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/datastore/network/UserPreference.kt(1 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/interceptor/AuthInterceptor.kt(1 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/interceptor/HeaderInterceptor.kt(1 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/di/AuthModule.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/di/DataStoreModule.kt(2 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/di/NetModule.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/di/PointModule.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/login/AuthService.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/login/model/LoginRequest.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/login/model/LoginResponse.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/point/PointService.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/ChallengeDateRequest.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/EarnPointRequest.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/EarnPointResponse.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/PointListResponse.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/UsablePointResponse.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/UsePointResponse.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/signup/model/SignUpRequest.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/signup/model/SignUpResponse.kt(0 hunks)core/viewmodel/main/build.gradle.kts(0 hunks)core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/MainEffect.kt(0 hunks)core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/MainViewModel.kt(1 hunks)data/login/.gitignore(0 hunks)data/login/build.gradle.kts(0 hunks)data/login/src/main/AndroidManifest.xml(0 hunks)data/login/src/main/java/com/hmh/hamyeonham/login/DefaultAuthRepository.kt(0 hunks)data/login/src/main/java/com/hmh/hamyeonham/login/di/AuthModule.kt(0 hunks)data/login/src/main/java/com/hmh/hamyeonham/login/mapper/LoginMapper.kt(0 hunks)data/point/.gitignore(0 hunks)data/point/build.gradle.kts(0 hunks)data/point/src/main/AndroidManifest.xml(0 hunks)data/point/src/main/java/com/hmh/hamyeonham/data/point/PointMapper.kt(0 hunks)data/point/src/main/java/com/hmh/hamyeonham/data/point/di/PointBinder.kt(0 hunks)data/point/src/main/java/com/hmh/hamyeonham/data/point/repository/DefaultPointRepository.kt(0 hunks)data/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/mapper/MypageMapper.kt(1 hunks)data/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/repository/DefaultUserInfoRepository.kt(1 hunks)domain/login/.gitignore(0 hunks)domain/login/build.gradle.kts(0 hunks)domain/login/src/main/AndroidManifest.xml(0 hunks)domain/login/src/main/java/com/hmh/hamyeonham/login/model/Login.kt(0 hunks)domain/login/src/main/java/com/hmh/hamyeonham/login/model/SignRequestDomain.kt(0 hunks)domain/login/src/main/java/com/hmh/hamyeonham/login/model/SignUpUser.kt(0 hunks)domain/login/src/main/java/com/hmh/hamyeonham/login/repository/AuthRepository.kt(0 hunks)domain/point/.gitignore(0 hunks)domain/point/build.gradle.kts(0 hunks)domain/point/src/main/AndroidManifest.xml(0 hunks)domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/EarnPoint.kt(0 hunks)domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/PointInfo.kt(0 hunks)domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/UsablePoint.kt(0 hunks)domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/UsePoint.kt(0 hunks)domain/point/src/main/java/com/hmh/hamyeonham/domain/point/repository/PointRepository.kt(0 hunks)domain/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/model/UserInfo.kt(0 hunks)feature/challenge/build.gradle.kts(0 hunks)feature/challenge/src/main/AndroidManifest.xml(0 hunks)feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/ChallengeFragment.kt(1 hunks)feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/point/PointActivity.kt(0 hunks)feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/point/PointAdapter.kt(0 hunks)feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/point/PointViewModel.kt(0 hunks)feature/challenge/src/main/res/layout/activity_point.xml(0 hunks)feature/challenge/src/main/res/layout/fragment_challenge.xml(0 hunks)feature/login/build.gradle.kts(0 hunks)feature/login/src/main/AndroidManifest.xml(0 hunks)feature/login/src/main/java/com/hmh/hamyeonham/feature/login/LoginActivity.kt(0 hunks)feature/login/src/main/java/com/hmh/hamyeonham/feature/login/LoginViewModel.kt(0 hunks)feature/login/src/main/java/com/hmh/hamyeonham/feature/login/LoginViewPagerAdapter.kt(0 hunks)feature/login/src/main/res/layout/activity_login.xml(0 hunks)feature/login/src/main/res/values/strings.xml(0 hunks)feature/main/src/main/java/com/hmh/hamyeonham/feature/main/MainActivity.kt(1 hunks)feature/main/src/main/res/values/strings.xml(0 hunks)feature/mypage/build.gradle.kts(0 hunks)feature/mypage/src/main/java/com/hmh/hamyeonham/mypage/MyPageFragment.kt(3 hunks)feature/mypage/src/main/java/com/hmh/hamyeonham/mypage/viewmodel/MyPageViewModel.kt(1 hunks)feature/mypage/src/main/res/layout/fragment_my_page.xml(2 hunks)feature/mypage/src/main/res/values/strings.xml(1 hunks)feature/onboarding/build.gradle.kts(0 hunks)feature/onboarding/src/main/java/com/hmh/hamyeonham/feature/onboarding/OnBoardingActivity.kt(1 hunks)feature/onboarding/src/main/java/com/hmh/hamyeonham/feature/onboarding/viewmodel/OnBoardingViewModel.kt(2 hunks)gradle/libs.versions.toml(0 hunks)settings.gradle.kts(0 hunks)
💤 Files with no reviewable changes (76)
- core/viewmodel/main/build.gradle.kts
- domain/login/.gitignore
- feature/challenge/build.gradle.kts
- feature/onboarding/build.gradle.kts
- data/login/.gitignore
- domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/EarnPoint.kt
- core/common/src/main/java/com/hmh/hamyeonham/common/qualifier/OAuth.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/signup/model/SignUpResponse.kt
- core/network/build.gradle.kts
- domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/UsablePoint.kt
- domain/point/.gitignore
- domain/login/src/main/AndroidManifest.xml
- app/proguard-rules.pro
- core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/ChallengeDateRequest.kt
- data/login/src/main/AndroidManifest.xml
- core/network/src/main/java/com/hmh/hamyeonham/core/network/di/AuthModule.kt
- domain/point/src/main/AndroidManifest.xml
- domain/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/model/UserInfo.kt
- feature/login/build.gradle.kts
- feature/mypage/build.gradle.kts
- domain/login/build.gradle.kts
- feature/challenge/src/main/AndroidManifest.xml
- data/point/.gitignore
- domain/login/src/main/java/com/hmh/hamyeonham/login/model/Login.kt
- core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/MainEffect.kt
- feature/login/src/main/res/layout/activity_login.xml
- .github/workflows/release.yml
- .github/workflows/develop_PR_builder.yml
- data/point/src/main/AndroidManifest.xml
- feature/login/src/main/AndroidManifest.xml
- feature/main/src/main/res/values/strings.xml
- app/build.gradle.kts
- data/point/build.gradle.kts
- domain/point/build.gradle.kts
- build-logic/convention/src/main/kotlin/com/hmh/hamyeonham/plugin/CommonConfigs.kt
- domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/UsePoint.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/EarnPointRequest.kt
- settings.gradle.kts
- app/src/main/java/com/hmh/hamyeonham/HMHApplication.kt
- app/src/main/AndroidManifest.xml
- app/src/main/java/com/hmh/hamyeonham/navigation/DefaultNavigationProvider.kt
- data/login/build.gradle.kts
- core/common/src/main/java/com/hmh/hamyeonham/common/navigation/NavigationProvider.kt
- data/login/src/main/java/com/hmh/hamyeonham/login/mapper/LoginMapper.kt
- feature/challenge/src/main/res/layout/fragment_challenge.xml
- core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/UsablePointResponse.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/di/PointModule.kt
- gradle/libs.versions.toml
- core/network/src/main/java/com/hmh/hamyeonham/core/network/login/model/LoginRequest.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/EarnPointResponse.kt
- domain/login/src/main/java/com/hmh/hamyeonham/login/model/SignUpUser.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/authenticator/AuthenticatorUtil.kt
- feature/login/src/main/java/com/hmh/hamyeonham/feature/login/LoginViewPagerAdapter.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/login/model/LoginResponse.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/login/AuthService.kt
- feature/login/src/main/java/com/hmh/hamyeonham/feature/login/LoginActivity.kt
- feature/challenge/src/main/res/layout/activity_point.xml
- core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/UsePointResponse.kt
- feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/point/PointActivity.kt
- feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/point/PointViewModel.kt
- domain/login/src/main/java/com/hmh/hamyeonham/login/model/SignRequestDomain.kt
- data/login/src/main/java/com/hmh/hamyeonham/login/DefaultAuthRepository.kt
- domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/PointInfo.kt
- data/point/src/main/java/com/hmh/hamyeonham/data/point/PointMapper.kt
- feature/login/src/main/res/values/strings.xml
- feature/login/src/main/java/com/hmh/hamyeonham/feature/login/LoginViewModel.kt
- data/point/src/main/java/com/hmh/hamyeonham/data/point/di/PointBinder.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/di/NetModule.kt
- domain/point/src/main/java/com/hmh/hamyeonham/domain/point/repository/PointRepository.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/PointListResponse.kt
- domain/login/src/main/java/com/hmh/hamyeonham/login/repository/AuthRepository.kt
- data/login/src/main/java/com/hmh/hamyeonham/login/di/AuthModule.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/signup/model/SignUpRequest.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/point/PointService.kt
- data/point/src/main/java/com/hmh/hamyeonham/data/point/repository/DefaultPointRepository.kt
- feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/point/PointAdapter.kt
🧰 Additional context used
🧬 Code Graph Analysis (1)
feature/main/src/main/java/com/hmh/hamyeonham/feature/main/MainActivity.kt (1)
core/common/src/main/java/com/hmh/hamyeonham/common/context/ContextExt.kt (1)
getAppNameFromPackageName(91-96)
⏰ 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: PR Checker
🔇 Additional comments (30)
data/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/repository/DefaultUserInfoRepository.kt (1)
4-4: Mapper Function Verified; Import Change ApprovedThe
toUserInfoextension is defined in
data/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/mapper/MypageMapper.kt(line 6)No further changes are needed—your import update is correct and the code can be approved.
data/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/mapper/MypageMapper.kt (2)
1-1: LGTM: Package relocation aligns with refactoring goals.The package change from
login.mappertouserinfo.mapperis consistent with moving mapper functionality from the login module to the userinfo module as part of the Kakao login removal.
6-10: ✅ UserInfo mapping verified
domain/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/model/UserInfo.ktcontains onlyval name: String, with nopointproperty.core/network/src/main/java/com/hmh/hamyeonham/core/network/mypage/model/UserInfoResponse.ktstill defines bothnameandpoint.- The
toUserInfo()extension correctly maps the single required field (name) and intentionally omitspointto match the simplified domain model.All required fields are accounted for and aligned with the refactoring.
feature/mypage/src/main/res/values/strings.xml (1)
27-34: LGTM! String resources properly updated for profile feature.The addition of profile-related strings and removal of point-related strings aligns well with the Kakao login removal and point feature cleanup. The new strings provide comprehensive coverage for profile information display.
core/designsystem/src/main/res/values/themes.xml (2)
1-1: LGTM! Tools namespace properly added.The addition of the tools namespace is necessary for the ignore annotation used below.
11-11: LGTM! Edge-to-edge enforcement opt-out supports UI stability.Adding
android:windowOptOutEdgeToEdgeEnforcementwith proper API level handling helps maintain consistent window behavior after removing login UI components.core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/datastore/network/UserPreference.kt (2)
3-3: LGTM! Interface renaming simplifies authentication preferences.The rename from
HMHNetworkPreferencetoUserPreferenceis clearer and aligns with the authentication consolidation effort.
7-7: userId type consistency verified across codebaseAll occurrences of
userIdhave been updated toLongwith no remainingIntreferences.• core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/datastore/network/UserPreference.kt –
var userId: Long
• core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/datastore/network/DefaultUserPreference.kt –override var userId: Long(usespreferences.getLong)feature/mypage/src/main/res/layout/fragment_my_page.xml (1)
77-77: LGTM! Layout constraints properly updated after point UI removal.The constraint references have been correctly updated to anchor to
tv_user_nameinstead of the removed point-related views, maintaining proper layout flow.Also applies to: 98-98
core/network/src/main/java/com/hmh/hamyeonham/core/network/di/DataStoreModule.kt (1)
8-9: LGTM! Clean refactoring from HMHNetworkPreference to UserPreference.The import statements and DI binding have been correctly updated to use the renamed preference classes. The functionality remains unchanged.
Also applies to: 74-74
core/database/src/main/java/com/hmh/hamyeonham/core/database/HMHRoomDatabase.kt (1)
33-33: Database version bump looks correct.The version increment from 1 to 2 is appropriate for the schema changes being made.
core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/authenticator/HMHAuthenticator.kt (2)
4-4: LGTM! Consistent refactoring to UserPreference.The import and constructor parameter have been correctly updated to use the renamed UserPreference interface.
Also applies to: 19-19
48-52: Consider the user experience when token refresh fails.Token refresh failures now just return
nullinstead of triggering logout. This means users will encounter authentication errors rather than being automatically logged out. Ensure this aligns with the intended user experience for the new authentication flow.core/database/src/main/java/com/hmh/hamyeonham/core/database/di/DatabaseModule.kt (1)
21-29: LGTM! Proper implementation of database migration.The builder pattern correctly adds the migration and follows Room database best practices for schema upgrades.
core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/interceptor/HeaderInterceptor.kt (1)
3-3: LGTM! Clean interface refactoring.The change from
HMHNetworkPreferencetoUserPreferencemaintains the same functionality while aligning with the broader network layer refactoring.Also applies to: 10-10
core/common/src/main/java/com/hmh/hamyeonham/common/permission/PermissionExt.kt (1)
4-4: Excellent improvement in permission checking approach.The refactoring from
UsageStatsManager.queryUsageStats()toAppOpsManagerdirect permission checks is more reliable and performant. The implementation correctly handles API level differences and provides explicit permission status.Also applies to: 42-65
core/common/src/main/java/com/hmh/hamyeonham/common/permission/PermissionActivity.kt (2)
13-13: Clean code improvement using Kotlin extensions.The use of
toUri()extension function instead ofUri.parse()is a nice improvement for readability and consistency with Kotlin conventions.Also applies to: 120-120
72-72: No explicit imports required for extension functionsThe functions
hasUsageStatsPermission()andhasOverlayPermission()are declared in PermissionExt.kt under the same package (com.hmh.hamyeonham.common.permission) and are therefore visible in PermissionActivity.kt without any import. No action needed.Likely an incorrect or invalid review comment.
app/src/main/java/com/hmh/hamyeonham/StartActivity.kt (1)
9-9: Navigation change aligns with login removal.Correctly updated to navigate directly to
MainActivityinstead ofLoginActivity, which aligns with the PR objective of removing Kakao login functionality.Also applies to: 34-34
core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/datastore/network/DefaultUserPreference.kt (2)
9-11: Clean interface refactoring.The class rename and interface change align with the broader network layer refactoring while maintaining the same functionality.
33-39: No userId Int references found—change to Long is safe.
- Searched across the Kotlin codebase for any
userIdusages expecting anInt; none were found.- Both
UserPreferenceinterface andDefaultUserPreferenceimplementation now consistently useLong.- No further updates are required for this change.
feature/main/src/main/java/com/hmh/hamyeonham/feature/main/MainActivity.kt (2)
48-54: LGTM! Clean removal of point-related effects.The simplified effect handling now only manages network errors, which aligns with the removal of point features.
93-112: Good implementation of unlock package dialog.The dialog properly uses the
getAppNameFromPackageNameextension to display user-friendly app names and maintains proper dialog lifecycle handling.feature/mypage/src/main/java/com/hmh/hamyeonham/mypage/MyPageFragment.kt (2)
72-97: Clean simplification of logout and withdrawal flows.The direct method calls to
logout()andwithdrawal()reflect the simplified ViewModel implementation without authentication handling.
123-137: Good use of Android KTX extensions.Using
toUri()extension is cleaner and more idiomatic thanUri.parse().feature/onboarding/src/main/java/com/hmh/hamyeonham/feature/onboarding/OnBoardingActivity.kt (1)
115-147: Good formatting improvements for JSON property creation.The multi-line formatting makes the Amplitude tracking code more readable and maintainable.
feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/ChallengeFragment.kt (1)
177-183: Clean simplification of challenge creation flow.The direct navigation to
NewChallengeActivitywithout point dependencies simplifies the user flow appropriately.feature/onboarding/src/main/java/com/hmh/hamyeonham/feature/onboarding/viewmodel/OnBoardingViewModel.kt (1)
65-65: Excellent simplification of OnBoardingViewModel.The removal of all authentication dependencies and network logic results in a clean, focused ViewModel that only manages onboarding UI state.
Also applies to: 169-174
core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/MainViewModel.kt (1)
100-109: Clean removal of point-related logicThe simplified implementation correctly preserves the core functionality while removing point management. Error handling is appropriately maintained.
feature/mypage/src/main/java/com/hmh/hamyeonham/mypage/viewmodel/MyPageViewModel.kt (1)
11-13: Good improvement to error handlingAdding error messages to the failure cases improves debuggability and user feedback.
core/database/src/main/java/com/hmh/hamyeonham/core/database/HMHRoomDatabase.kt
Show resolved
Hide resolved
core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/interceptor/AuthInterceptor.kt
Show resolved
Hide resolved
feature/mypage/src/main/java/com/hmh/hamyeonham/mypage/MyPageFragment.kt
Show resolved
Hide resolved
feature/mypage/src/main/java/com/hmh/hamyeonham/mypage/viewmodel/MyPageViewModel.kt
Show resolved
Hide resolved
feature/mypage/src/main/java/com/hmh/hamyeonham/mypage/viewmodel/MyPageViewModel.kt
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🔭 Outside diff range comments (1)
core/common/src/main/java/com/hmh/hamyeonham/common/permission/PermissionExt.kt (1)
127-137: Consider aligning Fragment implementation with AppCompatActivity.The
Fragment.hasUsageStatsPermission()method still uses the oldUsageStatsManagerapproach while theAppCompatActivityversion was updated to useAppOpsManager. This creates inconsistency in permission checking behavior.Consider updating the Fragment implementation to match:
fun Fragment.hasUsageStatsPermission(): Boolean { - val usageStatsManager = - requireContext().getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager - val time = System.currentTimeMillis() - val stats = usageStatsManager.queryUsageStats( - UsageStatsManager.INTERVAL_DAILY, - time - 1000 * 60, - time, - ) - return stats != null && stats.isNotEmpty() + val ops = requireContext().getSystemService(Context.APP_OPS_SERVICE) as AppOpsManager + val mode = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + ops.unsafeCheckOpNoThrow( + AppOpsManager.OPSTR_GET_USAGE_STATS, + android.os.Process.myUid(), + requireContext().packageName + ) + } else { + ops.checkOpNoThrow( + AppOpsManager.OPSTR_GET_USAGE_STATS, + android.os.Process.myUid(), + requireContext().packageName + ) + } + + return when (mode) { + AppOpsManager.MODE_ALLOWED -> true + AppOpsManager.MODE_DEFAULT, + AppOpsManager.MODE_IGNORED, + AppOpsManager.MODE_ERRORED -> false + else -> false + } }
🧹 Nitpick comments (2)
app/src/main/java/com/hmh/hamyeonham/StartActivity.kt (1)
9-9: Update method name to reflect actual behavior.The method
navigateToLogin()now navigates toMainActivity, which creates a naming inconsistency that could confuse future developers.- private fun navigateToLogin() { + private fun navigateToMain() {And update the call site:
- navigateToLogin() + navigateToMain()Also applies to: 34-34
feature/mypage/src/main/java/com/hmh/hamyeonham/mypage/MyPageFragment.kt (1)
111-115: Remove commented code instead of leaving it.The commented-out navigation to login activity should be removed entirely rather than left as comments, as it's no longer needed after removing login functionality.
-// val intent = navigationProvider.toLogin() -// intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK) -// startActivity(intent) -// activity?.finish()
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (100)
.github/workflows/develop_PR_builder.yml(0 hunks).github/workflows/release.yml(0 hunks)app/build.gradle.kts(0 hunks)app/proguard-rules.pro(0 hunks)app/src/main/AndroidManifest.xml(0 hunks)app/src/main/java/com/hmh/hamyeonham/HMHApplication.kt(0 hunks)app/src/main/java/com/hmh/hamyeonham/StartActivity.kt(2 hunks)app/src/main/java/com/hmh/hamyeonham/navigation/DefaultNavigationProvider.kt(0 hunks)app/src/main/res/layout/activity_sample.xml(1 hunks)build-logic/convention/src/main/kotlin/com/hmh/hamyeonham/plugin/CommonConfigs.kt(0 hunks)core/common/src/main/java/com/hmh/hamyeonham/common/navigation/NavigationProvider.kt(0 hunks)core/common/src/main/java/com/hmh/hamyeonham/common/permission/PermissionActivity.kt(2 hunks)core/common/src/main/java/com/hmh/hamyeonham/common/permission/PermissionExt.kt(2 hunks)core/common/src/main/java/com/hmh/hamyeonham/common/qualifier/OAuth.kt(0 hunks)core/database/src/main/java/com/hmh/hamyeonham/core/database/HMHRoomDatabase.kt(3 hunks)core/database/src/main/java/com/hmh/hamyeonham/core/database/di/DatabaseModule.kt(2 hunks)core/designsystem/src/main/res/values/themes.xml(2 hunks)core/network/build.gradle.kts(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/authenticator/AuthenticatorUtil.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/authenticator/HMHAuthenticator.kt(2 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/datastore/network/DefaultUserPreference.kt(2 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/datastore/network/UserPreference.kt(1 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/interceptor/AuthInterceptor.kt(1 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/interceptor/HeaderInterceptor.kt(1 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/di/AuthModule.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/di/DataStoreModule.kt(2 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/di/NetModule.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/di/PointModule.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/login/AuthService.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/login/model/LoginRequest.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/login/model/LoginResponse.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/point/PointService.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/ChallengeDateRequest.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/EarnPointRequest.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/EarnPointResponse.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/PointListResponse.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/UsablePointResponse.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/UsePointResponse.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/signup/model/SignUpRequest.kt(0 hunks)core/network/src/main/java/com/hmh/hamyeonham/core/network/signup/model/SignUpResponse.kt(0 hunks)core/viewmodel/main/build.gradle.kts(0 hunks)core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/MainEffect.kt(0 hunks)core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/MainViewModel.kt(1 hunks)data/login/.gitignore(0 hunks)data/login/build.gradle.kts(0 hunks)data/login/src/main/AndroidManifest.xml(0 hunks)data/login/src/main/java/com/hmh/hamyeonham/login/DefaultAuthRepository.kt(0 hunks)data/login/src/main/java/com/hmh/hamyeonham/login/di/AuthModule.kt(0 hunks)data/login/src/main/java/com/hmh/hamyeonham/login/mapper/LoginMapper.kt(0 hunks)data/point/.gitignore(0 hunks)data/point/build.gradle.kts(0 hunks)data/point/src/main/AndroidManifest.xml(0 hunks)data/point/src/main/java/com/hmh/hamyeonham/data/point/PointMapper.kt(0 hunks)data/point/src/main/java/com/hmh/hamyeonham/data/point/di/PointBinder.kt(0 hunks)data/point/src/main/java/com/hmh/hamyeonham/data/point/repository/DefaultPointRepository.kt(0 hunks)data/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/mapper/MypageMapper.kt(1 hunks)data/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/repository/DefaultUserInfoRepository.kt(1 hunks)domain/login/.gitignore(0 hunks)domain/login/build.gradle.kts(0 hunks)domain/login/src/main/AndroidManifest.xml(0 hunks)domain/login/src/main/java/com/hmh/hamyeonham/login/model/Login.kt(0 hunks)domain/login/src/main/java/com/hmh/hamyeonham/login/model/SignRequestDomain.kt(0 hunks)domain/login/src/main/java/com/hmh/hamyeonham/login/model/SignUpUser.kt(0 hunks)domain/login/src/main/java/com/hmh/hamyeonham/login/repository/AuthRepository.kt(0 hunks)domain/point/.gitignore(0 hunks)domain/point/build.gradle.kts(0 hunks)domain/point/src/main/AndroidManifest.xml(0 hunks)domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/EarnPoint.kt(0 hunks)domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/PointInfo.kt(0 hunks)domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/UsablePoint.kt(0 hunks)domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/UsePoint.kt(0 hunks)domain/point/src/main/java/com/hmh/hamyeonham/domain/point/repository/PointRepository.kt(0 hunks)domain/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/model/UserInfo.kt(0 hunks)feature/challenge/build.gradle.kts(0 hunks)feature/challenge/src/main/AndroidManifest.xml(0 hunks)feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/ChallengeFragment.kt(1 hunks)feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/point/PointActivity.kt(0 hunks)feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/point/PointAdapter.kt(0 hunks)feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/point/PointViewModel.kt(0 hunks)feature/challenge/src/main/res/layout/activity_point.xml(0 hunks)feature/challenge/src/main/res/layout/fragment_challenge.xml(0 hunks)feature/login/build.gradle.kts(0 hunks)feature/login/src/main/AndroidManifest.xml(0 hunks)feature/login/src/main/java/com/hmh/hamyeonham/feature/login/LoginActivity.kt(0 hunks)feature/login/src/main/java/com/hmh/hamyeonham/feature/login/LoginViewModel.kt(0 hunks)feature/login/src/main/java/com/hmh/hamyeonham/feature/login/LoginViewPagerAdapter.kt(0 hunks)feature/login/src/main/res/layout/activity_login.xml(0 hunks)feature/login/src/main/res/values/strings.xml(0 hunks)feature/main/src/main/java/com/hmh/hamyeonham/feature/main/MainActivity.kt(1 hunks)feature/main/src/main/res/values/strings.xml(0 hunks)feature/mypage/build.gradle.kts(0 hunks)feature/mypage/src/main/java/com/hmh/hamyeonham/mypage/MyPageFragment.kt(3 hunks)feature/mypage/src/main/java/com/hmh/hamyeonham/mypage/viewmodel/MyPageViewModel.kt(1 hunks)feature/mypage/src/main/res/layout/fragment_my_page.xml(2 hunks)feature/mypage/src/main/res/values/strings.xml(1 hunks)feature/onboarding/build.gradle.kts(0 hunks)feature/onboarding/src/main/java/com/hmh/hamyeonham/feature/onboarding/OnBoardingActivity.kt(1 hunks)feature/onboarding/src/main/java/com/hmh/hamyeonham/feature/onboarding/viewmodel/OnBoardingViewModel.kt(2 hunks)gradle/libs.versions.toml(0 hunks)settings.gradle.kts(0 hunks)
💤 Files with no reviewable changes (76)
- feature/onboarding/build.gradle.kts
- feature/mypage/build.gradle.kts
- feature/challenge/build.gradle.kts
- data/point/src/main/AndroidManifest.xml
- core/viewmodel/main/build.gradle.kts
- core/network/build.gradle.kts
- data/login/.gitignore
- data/point/.gitignore
- domain/login/.gitignore
- feature/challenge/src/main/AndroidManifest.xml
- feature/login/build.gradle.kts
- feature/challenge/src/main/res/layout/fragment_challenge.xml
- core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/MainEffect.kt
- build-logic/convention/src/main/kotlin/com/hmh/hamyeonham/plugin/CommonConfigs.kt
- domain/login/src/main/AndroidManifest.xml
- domain/point/.gitignore
- domain/point/src/main/AndroidManifest.xml
- feature/login/src/main/AndroidManifest.xml
- app/build.gradle.kts
- data/login/src/main/AndroidManifest.xml
- .github/workflows/release.yml
- settings.gradle.kts
- domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/UsablePoint.kt
- .github/workflows/develop_PR_builder.yml
- domain/point/build.gradle.kts
- domain/login/build.gradle.kts
- domain/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/model/UserInfo.kt
- domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/UsePoint.kt
- domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/EarnPoint.kt
- app/src/main/java/com/hmh/hamyeonham/HMHApplication.kt
- data/point/build.gradle.kts
- feature/login/src/main/res/layout/activity_login.xml
- core/common/src/main/java/com/hmh/hamyeonham/common/navigation/NavigationProvider.kt
- data/login/build.gradle.kts
- core/network/src/main/java/com/hmh/hamyeonham/core/network/login/model/LoginResponse.kt
- core/common/src/main/java/com/hmh/hamyeonham/common/qualifier/OAuth.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/UsePointResponse.kt
- app/src/main/java/com/hmh/hamyeonham/navigation/DefaultNavigationProvider.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/UsablePointResponse.kt
- domain/login/src/main/java/com/hmh/hamyeonham/login/model/Login.kt
- data/login/src/main/java/com/hmh/hamyeonham/login/mapper/LoginMapper.kt
- app/src/main/AndroidManifest.xml
- core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/EarnPointResponse.kt
- data/point/src/main/java/com/hmh/hamyeonham/data/point/di/PointBinder.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/login/model/LoginRequest.kt
- domain/login/src/main/java/com/hmh/hamyeonham/login/model/SignUpUser.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/authenticator/AuthenticatorUtil.kt
- data/login/src/main/java/com/hmh/hamyeonham/login/di/AuthModule.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/PointListResponse.kt
- domain/login/src/main/java/com/hmh/hamyeonham/login/model/SignRequestDomain.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/di/PointModule.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/di/AuthModule.kt
- feature/login/src/main/java/com/hmh/hamyeonham/feature/login/LoginActivity.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/signup/model/SignUpResponse.kt
- feature/main/src/main/res/values/strings.xml
- feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/point/PointActivity.kt
- feature/login/src/main/res/values/strings.xml
- domain/point/src/main/java/com/hmh/hamyeonham/domain/point/repository/PointRepository.kt
- feature/challenge/src/main/res/layout/activity_point.xml
- app/proguard-rules.pro
- data/point/src/main/java/com/hmh/hamyeonham/data/point/PointMapper.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/ChallengeDateRequest.kt
- feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/point/PointAdapter.kt
- feature/login/src/main/java/com/hmh/hamyeonham/feature/login/LoginViewPagerAdapter.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/point/PointService.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/di/NetModule.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/login/AuthService.kt
- domain/point/src/main/java/com/hmh/hamyeonham/domain/point/model/PointInfo.kt
- gradle/libs.versions.toml
- data/login/src/main/java/com/hmh/hamyeonham/login/DefaultAuthRepository.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/point/model/EarnPointRequest.kt
- data/point/src/main/java/com/hmh/hamyeonham/data/point/repository/DefaultPointRepository.kt
- domain/login/src/main/java/com/hmh/hamyeonham/login/repository/AuthRepository.kt
- feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/point/PointViewModel.kt
- feature/login/src/main/java/com/hmh/hamyeonham/feature/login/LoginViewModel.kt
- core/network/src/main/java/com/hmh/hamyeonham/core/network/signup/model/SignUpRequest.kt
🧰 Additional context used
🧬 Code Graph Analysis (1)
feature/main/src/main/java/com/hmh/hamyeonham/feature/main/MainActivity.kt (1)
core/common/src/main/java/com/hmh/hamyeonham/common/context/ContextExt.kt (1)
getAppNameFromPackageName(91-96)
⏰ 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: PR Checker
🔇 Additional comments (28)
core/designsystem/src/main/res/values/themes.xml (1)
11-11: Confirm compile-/targetSdk ≥ 34 before relying onandroid:windowOptOutEdgeToEdgeEnforcement.The attribute was introduced in API 34 (Android 14).
If yourcompileSdkVersion/targetSdkVersionare still ≤ 33 the build will fail at aapt-compile time. Double-checkbuild.gradleand CI configs have already been bumped; otherwise guard the item with:<item name="android:windowOptOutEdgeToEdgeEnforcement" tools:targetApi="34" tools:ignore="NewApi">true</item>This keeps older compile targets building while silencing lint.
data/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/repository/DefaultUserInfoRepository.kt (1)
4-4: LGTM! Clean import refactoring.The import update correctly reflects the movement of the
toUserInfomapper from the login module to the userinfo module as part of the broader cleanup.data/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/mapper/MypageMapper.kt (2)
1-1: LGTM! Package relocation aligns with module restructuring.The package change from
com.hmh.hamyeonham.login.mappertocom.hmh.hamyeonham.userinfo.mappercorrectly reflects the movement of this mapper from the login module to the userinfo module.
6-10: Domain modelUserInfono longer containspoint—all good.I’ve verified that
domain/userinfo/src/main/java/com/hmh/hamyeonham/userinfo/model/UserInfo.ktonly definesval nameand has nopointproperty. You can safely ignore the original concern.feature/mypage/src/main/res/layout/fragment_my_page.xml (1)
77-77: LGTM! Constraint updates properly handle removal of point section.The constraint updates correctly anchor the journey elements (
tv_journeyandv_journey) totv_user_nameafter removing the point-related UI elements. This maintains proper layout structure and spacing.Also applies to: 98-98
core/viewmodel/main/src/main/java/com/hmh/hamyeonham/core/viewmodel/MainViewModel.kt (1)
100-109: LGTM! Function simplified correctly after point feature removal.The
updateDailyChallengeFailedfunction is now appropriately streamlined to focus solely on unlocking functionality. The removal of point-related logic aligns with the broader removal of the point management feature while preserving proper error handling.app/src/main/res/layout/activity_sample.xml (1)
36-36: LGTM! Animation speed increase aligns with simplified onboarding.Increasing the Lottie animation speed from 1 to 1.5 is appropriate given the removal of login flows. The faster animation provides a more streamlined user experience without login-related delays.
core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/datastore/network/UserPreference.kt (1)
3-3: All references updated successfully
The interface rename toUserPreferenceand theuserIdtype change fromInttoLonghave been applied consistently—no remaining references toHMHNetworkPreferenceoruserId: Intwere found. Approved.feature/main/src/main/java/com/hmh/hamyeonham/feature/main/MainActivity.kt (1)
97-100: LGTM! Improved formatting enhances readability.The dialog creation formatting is much more readable with proper indentation. The functional logic remains unchanged while improving code maintainability.
core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/interceptor/HeaderInterceptor.kt (1)
3-3: LGTM! Clean interface refactoring.The replacement of
HMHNetworkPreferencewithUserPreferenceis a clean refactoring that maintains the same functionality while aligning with the broader authentication simplification.Also applies to: 10-10
app/src/main/java/com/hmh/hamyeonham/StartActivity.kt (1)
26-30: LGTM! Simplified splash screen flow.The direct navigation to MainActivity after animation completion aligns well with the removal of login functionality.
core/database/src/main/java/com/hmh/hamyeonham/core/database/di/DatabaseModule.kt (1)
22-29: Migration Verified: MIGRATION_1_2 Properly DefinedMIGRATION_1_2 is correctly declared in
HMHRoomDatabase.kt(from version 1→2) withoverride fun migrate(…)executing the necessaryCREATE TABLE IF NOT EXISTSstatements foruser_authanduser_profile. TheDatabaseModuleproperly adds this migration to the Room builder—LGTM.core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/authenticator/HMHAuthenticator.kt (2)
4-4: LGTM! Clean interface refactoring.The replacement of
HMHNetworkPreferencewithUserPreferencealigns with the broader authentication simplification.Also applies to: 19-19
48-52: Consider handling token refresh failures.With the removal of
authenticatorUtil.handleLogout(), failed token refresh scenarios may leave the app in an inconsistent state. Consider what should happen when token refresh fails - should the user be redirected somewhere or should tokens be cleared?The current implementation returns
nullon refresh failure, which typically means the original request fails. Verify this aligns with the expected user experience when tokens become invalid.core/network/src/main/java/com/hmh/hamyeonham/core/network/di/DataStoreModule.kt (1)
8-9: LGTM! Clean refactoring of preference classes.The import statements and binding method have been correctly updated to use the new
UserPreferenceinterface andDefaultUserPreferenceimplementation, maintaining consistency with the removal of network-specific authentication preferences.Also applies to: 74-74
core/database/src/main/java/com/hmh/hamyeonham/core/database/HMHRoomDatabase.kt (1)
54-89: Migration MIGRATION_1_2 is correctly registeredVerified that in
DatabaseModule.ktthe callbuilder.addMigrations(HMHRoomDatabase.MIGRATION_1_2)is present, so the schema migration from version 1 to 2 will be applied as intended. No further changes needed.
core/common/src/main/java/com/hmh/hamyeonham/common/permission/PermissionActivity.kt (1)
3-3: LGTM! Clean refactoring with proper imports and URI handling.The addition of necessary imports and use of the
toUri()extension function improves code readability. The consolidation of permission checking logic into extension functions is a good architectural improvement.Also applies to: 7-7, 13-13, 120-120
core/common/src/main/java/com/hmh/hamyeonham/common/permission/PermissionExt.kt (1)
41-65: Excellent improvement to permission checking logic.The refactored
hasUsageStatsPermission()method usingAppOpsManageris much more reliable than the previous approach of querying usage stats data. The API level handling and comprehensive mode checking are well implemented.feature/mypage/src/main/res/values/strings.xml (1)
27-34: LGTM! Well-structured profile strings.The new profile-related strings are well-organized and provide clear labeling for user profile information. The addition of login status indicators and guest user guidance enhances the user experience in the simplified mypage flow.
core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/datastore/network/DefaultUserPreference.kt (2)
9-11: All references to old preference names anduserId: Intremoved – no further action neededA full-text search across the codebase returned zero occurrences of:
DefaultHMHNetworkPreferenceorHMHNetworkPreference- Any
userId: IntdeclarationsNo leftover references remain. Changes are consistent and complete. Approving.
33-37: Verified userId is consistently Long
AlluserIddeclarations and usages have been audited:
- No remaining
userId: Intproperties or DAO methods expecting anInt- No
getInt/putIntcalls for"user_id"in preferences- Database schema uses
INTEGER(SQLite’s 64-bit type), which aligns with Kotlin’sLongNo further changes required.
feature/mypage/src/main/java/com/hmh/hamyeonham/mypage/MyPageFragment.kt (3)
80-80: LGTM! Method name simplification.The changes from
handleLogout()tologout()andhandleWithdrawal()towithdrawal()simplify the method names appropriately.Also applies to: 93-93
100-106: Good improvement with dynamic error messages.The changes from observing
userEffecttoeffectand using dynamiceffect.messageinstead of fixed string resources provide better user feedback.
31-31: Good use of toUri() extension function.Using the
toUri()extension function is cleaner than manual URI parsing. The import and usage are correct.Also applies to: 126-126, 134-134
feature/onboarding/src/main/java/com/hmh/hamyeonham/feature/onboarding/OnBoardingActivity.kt (1)
115-145: LGTM! Improved code formatting and readability.The reformatting of JSON object creation and
AmplitudeUtils.trackEventWithProperties()calls improves readability without changing functionality. The multiline formatting makes the code easier to understand and maintain.feature/challenge/src/main/java/com/hmh/hamyeonham/challenge/ChallengeFragment.kt (1)
177-182: LGTM! Simplified challenge creation flow.The simplification of the challenge creation button to directly launch
NewChallengeActivitywithout point-related checks improves the user flow by removing unnecessary complexity.feature/onboarding/src/main/java/com/hmh/hamyeonham/feature/onboarding/viewmodel/OnBoardingViewModel.kt (2)
65-65: LGTM! Simplified constructor removes authentication dependencies.The removal of
AuthRepositoryandHMHNetworkPreferencedependencies aligns with the removal of login functionality and simplifies the ViewModel.
169-174: Verify the impact of simplified sign-up flow.The
signUp()method now only emits success and tracks the event without performing any network operations. Ensure this aligns with the intended user experience and that no user data needs to be persisted during onboarding.Please confirm that the simplified onboarding flow (without user account creation) meets the product requirements and doesn't break the user journey.
core/network/src/main/java/com/hmh/hamyeonham/core/network/auth/interceptor/AuthInterceptor.kt
Show resolved
Hide resolved
feature/mypage/src/main/java/com/hmh/hamyeonham/mypage/viewmodel/MyPageViewModel.kt
Show resolved
Hide resolved
feature/mypage/src/main/java/com/hmh/hamyeonham/mypage/viewmodel/MyPageViewModel.kt
Show resolved
Hide resolved
kangyuri1114
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
Summary by CodeRabbit
Removed Features
UI/UX Changes
Dependency and Build Changes
Bug Fixes
Documentation
End-users will no longer see login, sign-up, or point-related features in the app.