feat(RevenueCatUI): Tab selected-state (PWENG-65)#3664
Open
AlvaroBrey wants to merge 7 commits into
Open
Conversation
Contributor
Author
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## alvarobrey/pweng-57-resolver #3664 +/- ##
=============================================================
Coverage 80.48% 80.48%
=============================================================
Files 403 403
Lines 16717 16717
Branches 2386 2386
=============================================================
Hits 13455 13455
Misses 2322 2322
Partials 940 940 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Contributor
Author
|
@cursor review |
d4e83d3 to
f712a7c
Compare
c7fa19c to
1d7720c
Compare
b3836e0 to
50f79b8
Compare
1c15d31 to
fd18a34
Compare
50f79b8 to
64862dc
Compare
fd18a34 to
abf2497
Compare
2073b6b to
3d2df28
Compare
abf2497 to
445a2cf
Compare
dda51db to
9a17073
Compare
445a2cf to
92cb005
Compare
9a17073 to
d77344e
Compare
92cb005 to
287498f
Compare
d77344e to
8f64ee7
Compare
7875cf2 to
447c5f0
Compare
828b66e to
2019bef
Compare
Contributor
Author
|
@cursor review |
Contributor
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 2019bef. Configure here.
447c5f0 to
13c315c
Compare
2019bef to
ef06a92
Compare
13c315c to
776f015
Compare
ef06a92 to
ebeb35c
Compare
776f015 to
3685a78
Compare
ebeb35c to
6bbbe94
Compare
3685a78 to
26892a7
Compare
5320435 to
71fe206
Compare
26892a7 to
196d178
Compare
71fe206 to
f464f20
Compare
196d178 to
4eab460
Compare
f464f20 to
8661e79
Compare
4eab460 to
0a3bab0
Compare
8661e79 to
120a967
Compare
0a3bab0 to
19e96e5
Compare
…a hidden tab still publishes
…parity with iOS) Reverts the effect of e830f1e: a hidden Tabs component should not publish its selected tab id into the state store, matching the merged iOS reference implementation.
19e96e5 to
7924dc1
Compare
120a967 to
072ff84
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Wires tab selection into the store:
TabsComponent.stateUpdatesfires on selection, publishing the selected tab id as a$valuepayload. Hidden tabs still publish on first composition so sibling components aren't left on stale state. The 4 reader component states (Text, Image, Stack, Icon) passstateReader = stateStoreProvider()::currentValueOrDefaultintoConditionContext.End-to-end instrumentation tests for the read path (state condition drives a text swap) and write path (tab click publishes to store). Paywall-tester example (bottom text):
Screen_recording_20260629_125906.webm
Note
Medium Risk
Touches paywall override resolution and shared component state across Text/Image/Stack/Icon; behavior changes for state-driven tabs but is scoped to RevenueCatUI with new tests.
Overview
Connects tab selection to the paywall state store so other components can react via
state_conditionoverrides.When a Tabs component is visible,
TabsComponentViewrunsstateUpdateson first show and whenever the selection changes, writing the selected tab id (payload reference) intoPaywallStateStore. Hidden tabs do not publish (store stays on declared defaults).Text, Image, Stack, and Icon component states now pass
stateReader = stateStore::currentValueOrDefaultintoConditionContext, so overrides keyed on store values recompose when tab state changes.TabsComponentStylecarriesstateUpdatesand each tab style includes anidfrom the model.Adds instrumentation tests for the read path (state override swaps copy) and write path (tab click updates store), plus a paywall-tester sample with
selectedTabdeclarations and tab-dependent offer text.Reviewed by Cursor Bugbot for commit 072ff84. Bugbot is set up for automated code reviews on this repo. Configure here.