Skip to content

feat(wallet): add home ad banners#6466

Open
SeniorZhai wants to merge 14 commits into
masterfrom
feat/wallet-home-ad-banner
Open

feat(wallet): add home ad banners#6466
SeniorZhai wants to merge 14 commits into
masterfrom
feat/wallet-home-ad-banner

Conversation

@SeniorZhai

Copy link
Copy Markdown
Member

No description provided.

@SeniorZhai SeniorZhai force-pushed the feat/wallet-home-ad-banner branch from 38a3e40 to acf2935 Compare June 23, 2026 08:04
@SeniorZhai SeniorZhai requested a review from Copilot June 23, 2026 08:09
@SeniorZhai SeniorZhai added the testing Now testing, but you can review label Jun 23, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds support for dynamic “home ad banners” on the wallet home screens by fetching banner configs from the referral service, rendering them in the existing banner pager, tracking interactions, and persisting dismissals.

Changes:

  • Introduces WalletHomeBanner/WalletHomeBannerAction models plus filtering (visibleWalletHomeBanners) and stores closed banner IDs in preferences.
  • Fetches wallet home banners via ReferralService/ReferralRepository, wires them into WalletHomeState, and renders dynamic banner pages in Compose.
  • Adds/extends tests covering banner visibility, priority filtering, and referral service endpoint/query behavior.

Reviewed changes

Copilot reviewed 16 out of 16 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
app/src/test/java/one/mixin/android/ui/wallet/home/WalletHomeBuilderTest.kt Adds tests ensuring banner card visibility when dynamic banners exist / are closed / are prioritized.
app/src/test/java/one/mixin/android/api/service/ReferralServiceTest.kt New reflection-based test validating referral banners endpoint and lang query usage.
app/src/main/java/one/mixin/android/util/analytics/AnalyticsTracker.kt Adds tracking helper and source constants for wallet home ad banner interactions.
app/src/main/java/one/mixin/android/ui/wallet/WalletViewModel.kt Exposes walletHomeBanners() via ReferralRepository.
app/src/main/java/one/mixin/android/ui/wallet/WalletHomePrivacyFragment.kt Fetches, filters, renders, tracks, and persists dismissal of dynamic banners.
app/src/main/java/one/mixin/android/ui/wallet/WalletHomePreferences.kt Adds preference key for closed dynamic banner IDs.
app/src/main/java/one/mixin/android/ui/wallet/WalletHomeClassicFragment.kt Mirrors privacy fragment behavior for dynamic banners in classic wallet home.
app/src/main/java/one/mixin/android/ui/wallet/WalletFragment.kt Triggers banner refresh as part of wallet update flow.
app/src/main/java/one/mixin/android/ui/wallet/home/WalletHomeState.kt Extends state/callbacks to carry dynamic banners and banner interactions.
app/src/main/java/one/mixin/android/ui/wallet/home/components/BannerCards.kt Renders dynamic banner pages (icon/title/description/actions) in the pager and supports closing them.
app/src/main/java/one/mixin/android/ui/setting/LogAndDebugFragment.kt Includes new preference key in debug/diagnostic preference list.
app/src/main/java/one/mixin/android/ui/home/web3/Web3ViewModel.kt Exposes walletHomeBanners() via ReferralRepository for classic/web3 wallet flows.
app/src/main/java/one/mixin/android/repository/ReferralRepository.kt Implements banner fetch with bot session warm-up and error handling.
app/src/main/java/one/mixin/android/Constants.kt Minor formatting change around referral constants.
app/src/main/java/one/mixin/android/api/service/ReferralService.kt Adds app-banners endpoint + lang query helper.
app/src/main/java/one/mixin/android/api/response/WalletHomeBanner.kt New banner models + filtering/sorting helper.

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

Comment thread app/src/main/java/one/mixin/android/api/service/ReferralService.kt Outdated
@SeniorZhai SeniorZhai force-pushed the feat/wallet-home-ad-banner branch 10 times, most recently from 4f91c1c to 1f0f377 Compare June 23, 2026 15:49
@SeniorZhai SeniorZhai requested a review from Copilot June 24, 2026 05:03
@SeniorZhai SeniorZhai force-pushed the feat/wallet-home-ad-banner branch from 1f0f377 to 87eff1d Compare June 24, 2026 05:06

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 24 out of 24 changed files in this pull request and generated 5 comments.

Comments suppressed due to low confidence (1)

app/src/main/java/one/mixin/android/api/service/ReferralService.kt:21

  • walletHomeBannerLang() concatenates language + "-" + country, which can yield invalid values like en- if country is empty. Prefer Locale#toLanguageTag() to generate a valid BCP 47 language tag.

Comment thread app/src/main/java/one/mixin/android/di/AppModule.kt Outdated
Comment thread app/src/main/java/one/mixin/android/ui/wallet/home/components/BannerCards.kt Outdated
@SeniorZhai SeniorZhai removed the testing Now testing, but you can review label Jun 24, 2026
@SeniorZhai SeniorZhai requested a review from Copilot June 24, 2026 08:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 23 out of 23 changed files in this pull request and generated 3 comments.

Comment on lines 532 to 535
val b = sourceRequest.newBuilder()
b.addHeader("User-Agent", API_UA)
.addHeader("Accept-Language", Locale.getDefault().language)
.addHeader("Accept-Language", Locale.getDefault().language + "-" + Locale.getDefault().country)
.addHeader("Mixin-Device-Id", getStringDeviceId(resolver))
Comment on lines +201 to +207
Row(
modifier = Modifier
.fillMaxWidth()
.padding(top = 22.dp, end = 22.dp, bottom = bottomPadding)
.clickable { onClick(banner) },
verticalAlignment = Alignment.Top,
) {
@SeniorZhai SeniorZhai force-pushed the feat/wallet-home-ad-banner branch from ecf05d7 to d91cbd4 Compare June 24, 2026 08:39
@SeniorZhai

Copy link
Copy Markdown
Member Author

@copilot resolve the merge conflicts in this pull request

…-banner

# Conflicts:
#	app/src/main/java/one/mixin/android/ui/wallet/WalletFragment.kt
#	app/src/main/java/one/mixin/android/ui/wallet/WalletHomePrivacyFragment.kt

Copilot AI commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Merge conflicts resolved in commit 485b519. The conflicts were in WalletFragment.kt and WalletHomePrivacyFragment.kt due to the fix(wallet): refresh perps positions on home commit on master. The resolution keeps both the ad banner feature and the new perps position refresh logic.

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.

3 participants