Skip to content

Comments

Opt/landing carousel#6102

Open
SeniorZhai wants to merge 37 commits intomasterfrom
opt/landing_carousel
Open

Opt/landing carousel#6102
SeniorZhai wants to merge 37 commits intomasterfrom
opt/landing_carousel

Conversation

@SeniorZhai
Copy link
Member

No description provided.

@SeniorZhai SeniorZhai force-pushed the opt/landing_carousel branch from 600117b to 68f1af0 Compare February 3, 2026 06:29
@SeniorZhai SeniorZhai force-pushed the opt/landing_carousel branch from 68f1af0 to 5091252 Compare February 3, 2026 06:38
@SeniorZhai SeniorZhai force-pushed the opt/landing_carousel branch from 1550d9b to 5af5cc3 Compare February 4, 2026 11:56
@SeniorZhai SeniorZhai force-pushed the opt/landing_carousel branch from f47a028 to 2048c72 Compare February 5, 2026 06:25
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request implements a landing page carousel feature with multiple UI improvements and refactoring of the PIN setup flow.

Changes:

  • Added a new landing page carousel showcasing Mixin features with auto-scrolling and indicators
  • Refactored PIN setup and creation logic by extracting shared code into TipFlowInteractor and TipCreateInteractor
  • Implemented mobile verification reminder functionality with a 60-day verification interval

Reviewed changes

Copilot reviewed 55 out of 56 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
app/src/main/res/values/strings.xml Added numerous string resources for carousel features, PIN setup, mobile verification, and mnemonic phrase instructions
app/src/main/res/values-zh-rTW/strings.xml Added Traditional Chinese translations for new carousel and landing features
app/src/main/res/values-zh-rCN/strings.xml Added Simplified Chinese translations for new carousel and landing features
app/src/main/res/layout/item_landing_feature.xml New layout file for individual carousel items with image, title, and description
app/src/main/res/layout/fragment_setup_name.xml Redesigned name setup UI with centered layout and modern button style
app/src/main/res/layout/fragment_landing.xml Replaced static logo with ViewPager2 for carousel and TabLayout for indicators
app/src/main/res/layout-v26/fragment_setup_name.xml Deleted API 26+ specific layout variant to consolidate design
app/src/main/res/drawable/*.xml Added multiple new drawable resources for carousel images, account features, and UI components
app/src/main/java/one/mixin/android/ui/tip/TipFragment.kt Major refactoring extracting business logic to TipFlowInteractor
app/src/main/java/one/mixin/android/ui/tip/TipFlowInteractor.kt New class containing extracted PIN creation/update logic from TipFragment
app/src/main/java/one/mixin/android/ui/tip/TipCreateInteractor.kt New class for handling PIN creation specifically
app/src/main/java/one/mixin/android/ui/landing/SetupPinViewModel.kt New ViewModel for PIN setup flow
app/src/main/java/one/mixin/android/ui/landing/components/SetPinPage.kt Redesigned PIN setup page with numeric keypad
app/src/main/java/one/mixin/android/ui/landing/components/SetupPinPage.kt Updated PIN setup page with error handling and retry functionality
app/src/main/java/one/mixin/android/ui/landing/components/QuizPage.kt Enhanced quiz page with bottom sheet result display
app/src/main/java/one/mixin/android/ui/landing/LandingFragment.kt Implemented carousel with feature items and auto-scrolling
app/src/main/java/one/mixin/android/ui/landing/LandingFeatureAdapter.kt New adapter for landing page carousel
app/src/main/java/one/mixin/android/ui/landing/CreateAccountConfirmBottomSheetDialogFragment.kt New bottom sheet for account creation confirmation
app/src/main/java/one/mixin/android/ui/wallet/PrivacyWalletFragment.kt Added mobile verification check before buy action
app/src/main/java/one/mixin/android/ui/wallet/ClassicWalletFragment.kt Added mobile verification check before buy action
app/src/main/java/one/mixin/android/ui/home/ConversationListFragment.kt Added verification reminder display logic
app/src/main/java/one/mixin/android/Constants.kt Added INTERVAL_60_DAYS constant

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

modifier = Modifier.align(Alignment.CenterHorizontally),
stringResource(R.string.More_Information),
text = if (!isConfirmStep) {
stringResource(R.string.Set_up_pin_desc_1)
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

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

The string resource "set_up_pin_desc_1" is referenced in SetPinPage.kt but not defined in strings.xml. This will cause a runtime crash when trying to display this text.

Suggested change
stringResource(R.string.Set_up_pin_desc_1)
"Set up your PIN"

Copilot uses AI. Check for mistakes.
text = if (!isConfirmStep) {
stringResource(R.string.Set_up_pin_desc_1)
} else {
stringResource(R.string.Set_up_pin_desc_2)
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

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

The string resource "set_up_pin_desc_2" is referenced in SetPinPage.kt but not defined in strings.xml. This will cause a runtime crash when trying to display this text.

Suggested change
stringResource(R.string.Set_up_pin_desc_2)
stringResource(R.string.Set_up_pin_desc_1)

Copilot uses AI. Check for mistakes.
private fun applySafeTopPadding(rootView: View) {
val originalPaddingTop: Int = rootView.paddingTop
ViewCompat.setOnApplyWindowInsetsListener(rootView) { v: View, insets: WindowInsetsCompat ->
val topInset: Int = insets.getInsets(WindowInsetsCompat.Type.displayCutout()).top
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

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

In the window insets handling for LandingActivity, the wrong inset type is being used. The code uses WindowInsetsCompat.Type.displayCutout() instead of WindowInsetsCompat.Type.statusBars(). The displayCutout insets are for device notches and cutouts, while statusBars are for the system status bar which is what should typically be used for top padding. This is inconsistent with the implementation in VerificationFragment.kt (line 150) and WebFragment.kt (line 446) which correctly use statusBars.

Suggested change
val topInset: Int = insets.getInsets(WindowInsetsCompat.Type.displayCutout()).top
val topInset: Int = insets.getInsets(WindowInsetsCompat.Type.statusBars()).top

Copilot uses AI. Check for mistakes.
private fun applySafeTopPadding(rootView: View) {
val originalPaddingTop: Int = rootView.paddingTop
ViewCompat.setOnApplyWindowInsetsListener(rootView) { v: View, insets: WindowInsetsCompat ->
val topInset: Int = insets.getInsets(WindowInsetsCompat.Type.displayCutout()).top
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

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

In the window insets handling, the wrong inset type is being used. The code uses WindowInsetsCompat.Type.displayCutout() instead of WindowInsetsCompat.Type.statusBars(). This is inconsistent with other fragments like VerificationFragment.kt and WebFragment.kt which correctly use statusBars for top padding.

Suggested change
val topInset: Int = insets.getInsets(WindowInsetsCompat.Type.displayCutout()).top
val topInset: Int = insets.getInsets(WindowInsetsCompat.Type.statusBars()).top

Copilot uses AI. Check for mistakes.
private fun applySafeTopPadding(rootView: View) {
val originalPaddingTop: Int = rootView.paddingTop
ViewCompat.setOnApplyWindowInsetsListener(rootView) { v: View, insets: WindowInsetsCompat ->
val topInset: Int = insets.getInsets(WindowInsetsCompat.Type.displayCutout()).top
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

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

In the window insets handling, the wrong inset type is being used. The code uses WindowInsetsCompat.Type.displayCutout() instead of WindowInsetsCompat.Type.statusBars(). This is inconsistent with other fragments like VerificationFragment.kt and WebFragment.kt which correctly use statusBars for top padding.

Suggested change
val topInset: Int = insets.getInsets(WindowInsetsCompat.Type.displayCutout()).top
val topInset: Int = insets.getInsets(WindowInsetsCompat.Type.statusBars()).top

Copilot uses AI. Check for mistakes.
private fun applySafeTopPadding(rootView: View) {
val originalPaddingTop: Int = rootView.paddingTop
ViewCompat.setOnApplyWindowInsetsListener(rootView) { v: View, insets: WindowInsetsCompat ->
val topInset: Int = insets.getInsets(WindowInsetsCompat.Type.displayCutout()).top
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

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

In the window insets handling, the wrong inset type is being used. The code uses WindowInsetsCompat.Type.displayCutout() instead of WindowInsetsCompat.Type.statusBars(). This is inconsistent with other fragments like VerificationFragment.kt and WebFragment.kt which correctly use statusBars for top padding.

Suggested change
val topInset: Int = insets.getInsets(WindowInsetsCompat.Type.displayCutout()).top
val topInset: Int = insets.getInsets(WindowInsetsCompat.Type.statusBars()).top

Copilot uses AI. Check for mistakes.
@SeniorZhai SeniorZhai force-pushed the opt/landing_carousel branch 2 times, most recently from fbde026 to 15e1b82 Compare February 10, 2026 11:52
@SeniorZhai SeniorZhai marked this pull request as ready for review February 10, 2026 14:02
# Conflicts:
#	app/src/main/java/one/mixin/android/ui/home/MainActivity.kt
#	app/src/main/java/one/mixin/android/ui/tip/TipFragment.kt
…ing_carousel

# Conflicts:
#	app/src/main/java/one/mixin/android/ui/home/ConversationListFragment.kt
#	app/src/main/java/one/mixin/android/ui/landing/LandingActivity.kt
#	app/src/main/java/one/mixin/android/ui/landing/MobileFragment.kt
#	app/src/main/java/one/mixin/android/ui/landing/VerificationFragment.kt
#	app/src/main/java/one/mixin/android/ui/wallet/PrivacyWalletFragment.kt
@SeniorZhai SeniorZhai force-pushed the opt/landing_carousel branch 2 times, most recently from 6dd79e5 to 4ef5ade Compare February 13, 2026 03:15
# Conflicts:
#	app/src/main/java/one/mixin/android/ui/tip/TipFragment.kt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant