Skip to content

DRAFT - Installment offers#5000

Draft
sztomek wants to merge 5 commits intomainfrom
feat/installments-offers
Draft

DRAFT - Installment offers#5000
sztomek wants to merge 5 commits intomainfrom
feat/installments-offers

Conversation

@sztomek
Copy link
Contributor

@sztomek sztomek commented Feb 16, 2026

Description

Fixes #

Testing Instructions

Screenshots or Screencast

Checklist

  • If this is a user-facing change, I have added an entry in CHANGELOG.md
  • Ensure the linter passes (./gradlew spotlessApply to automatically apply formatting/linting)
  • I have considered whether it makes sense to add tests for my changes
  • All strings that need to be localized are in modules/services/localization/src/main/res/values/strings.xml
  • Any jetpack compose components I added or changed are covered by compose previews
  • I have updated (or requested that someone edit) the spreadsheet to reflect any new or changed analytics.

I have tested any UI changes...

  • with different themes
  • with a landscape orientation
  • with the device set to have a large display and font size
  • for accessibility with TalkBack

Copilot AI review requested due to automatic review settings February 16, 2026 14:27
@dangermattic
Copy link
Collaborator

1 Message
📖 This PR is still a Draft: some checks will be skipped.

Generated by 🚫 Danger

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 PR adds support for promotional offers (Trial and Winback) on installment subscription plans, specifically for the Plus Yearly Installment plan. Previously, installment plans only supported base plans without offers, but this change enables the system to apply trial periods and winback offers to installment payment plans.

Changes:

  • Extended the subscription plan data model to support offers on installment plans by adding isInstallment parameter to SubscriptionPlan.WithOffer and findOfferPlan method
  • Added comprehensive test coverage for installment offer functionality including trial and winback offers
  • Updated analytics tracking across multiple features to include installment status
  • Enhanced UI components to properly display installment plans with offers, including custom display names and correct price calculations

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated no comments.

Show a summary per file
File Description
modules/services/payment/src/main/kotlin/au/com/shiftyjelly/pocketcasts/payment/Data.kt Extended data model to support offers on installment plans by adding isInstallment parameter to SubscriptionPlan.WithOffer, findOfferPlan, and SubscriptionOffer.offerId methods
modules/services/payment/src/test/kotlin/au/com/shiftyjelly/pocketcasts/payment/SubscriptionPlansTest.kt Added test data for installment plans with offers and comprehensive test cases validating offer ID generation, plan finding, and unsupported offer types
modules/features/profile/src/main/java/au/com/shiftyjelly/pocketcasts/profile/winback/WinbackViewModel.kt Updated winback flow to support installment offers by checking both installment and non-installment variants and adding installment tracking to analytics
modules/features/profile/src/test/kotlin/au/com/shiftyjelly/pocketcasts/profile/winback/WinbackViewModelTest.kt Updated test expectations to include isInstallment parameter in winback offer assertions and analytics verification
modules/features/profile/src/main/java/au/com/shiftyjelly/pocketcasts/profile/winback/WinbackOfferPage.kt Updated Compose preview parameters to include isInstallment field for proper preview rendering
modules/features/account/src/main/java/au/com/shiftyjelly/pocketcasts/account/viewmodel/OnboardingUpgradeFeaturesViewModel.kt Modified to support finding offer plans for installment subscriptions when feature flag is enabled and added installment tracking to analytics
modules/features/account/src/main/java/au/com/shiftyjelly/pocketcasts/account/onboarding/components/SubscriptionPlanRow.kt Enhanced UI to handle installment offers including custom display names, correct price-per-period calculations, and savings percentage logic
modules/services/localization/src/main/res/values/strings.xml Added new string resource for Plus yearly trial installments display name

@wpmobilebot
Copy link
Collaborator

App Icon📲 You can test the changes from this Pull Request in 📱 Mobile by scanning the QR code below to install the corresponding build.

App Name📱 Mobile
Build TypePrototype
Build Number9406
Version8.5-rc-2
Application IDau.com.shiftyjelly.pocketcasts
Commit3e120eb
Installation URL7jial4hllipr0
Automatticians: You can use our internal self-serve MC tool to give yourself access to those builds if needed.

@wpmobilebot
Copy link
Collaborator

App Icon📲 You can test the changes from this Pull Request in ⌚ Wear by scanning the QR code below to install the corresponding build.
App Name⌚ Wear
Build TypeDebugProd
Build Number9406
Version8.5-rc-2
Application IDau.com.shiftyjelly.pocketcasts
Commit3e120eb
Direct Downloadpocketcasts-wear-prototype-build-pr5000-3e120eb.apk
Installation URL7jial4hllipr0
Automatticians: You can use our internal self-serve MC tool to give yourself access to those builds if needed.
App Icon📲 You can test the changes from this Pull Request in 🚗 Automotive by scanning the QR code below to install the corresponding build.
App Name🚗 Automotive
Build TypeDebugProd
Build Number9406
Version8.5-rc-2
Application IDau.com.shiftyjelly.pocketcasts
Commit3e120eb
Direct Downloadpocketcasts-automotive-prototype-build-pr5000-3e120eb.apk
Installation URL7jial4hllipr0
Automatticians: You can use our internal self-serve MC tool to give yourself access to those builds if needed.

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