Skip to content

feat(tipping): Tips tab + tip card flow (scaffold) - #1121

Merged
bmc08gt merged 2 commits into
code/cashfrom
tipping-feature
Jul 22, 2026
Merged

feat(tipping): Tips tab + tip card flow (scaffold)#1121
bmc08gt merged 2 commits into
code/cashfrom
tipping-feature

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

The tipping feature scaffold: the Tips tab, tip-card flow, and tip-chats list.

Stacked on #1120 (refactor/scannable-rendering) — review/merge that first. Base will retarget to code/cash once #1120 lands.

Changes

  • features/tipping module: TippingFlowScreen + TipFlowViewModel + screens (TipCard, Tips, TipInfo). The user's own tip card is built via TippingCoordinator.resolveTipCard() and rendered through ScannableRenderer; the Tips list surfaces tip-DM conversations.
  • core flow model: TipStep / TipResult, plus the tip-hand drawables.
  • Navigation: wire the Tips tab into AppRoute, NavBarButton, NavigationBar, and the scanner nav (ScannerDecorItem / ScannerNavigationBar), gated on the Tipping feature flag.

Scope

Scaffold only. Deliberately not in this PR (follow-ups): scanning tip cards + the tip payment modal, full tip chats, blur hashes, and the share-tip-card flow (share controller / Linkify).

Testing

./gradlew :apps:flipcash:app:assembleDebug — BUILD SUCCESSFUL (stack of #1120 + this).

bmc08gt added 2 commits July 22, 2026 13:18
- Reorganize bills: RenderedBill -> ScannableRenderer, AnimatedBill ->
  AnimatedScannable, composables into components/{bills,cards,receipts}
  (adds the TipCard renderer); BillContainerView -> ScannableContainer.
- Widen BillState.bill to Scannable? and add SessionController.showTipCard so a
  non-payment tip card can be presented in the container (no grab/valuation);
  add tip SessionState fields wired to the new Tipping feature flag.
- Theme: add the tipCard color token; bump the xxl corner shape.
- Incidental: enable Gradle parallel tooling; small ResolverService refactor.
- Add the tipping feature module: TippingFlowScreen + TipFlowViewModel + screens
  (TipCard, Tips, TipInfo); the tip card is built via TippingCoordinator.
- Add core tipping flow steps (TipStep/TipResult) and tip-hand drawables.
- Wire the Tips tab into navigation (AppRoute, NavBarButton, NavigationBar,
  ScannerDecorItem/ScannerNavigationBar), gated on the Tipping feature flag.

Scaffold only — scanning tip cards, the tip payment modal, tip chats, and blur
hashes are follow-ups.
@github-actions github-actions Bot added type: feature New functionality area: scanner QR/Kikcode scanning, camera area: build-system Gradle, convention plugins, build-logic labels Jul 22, 2026
Base automatically changed from refactor/scannable-rendering to code/cash July 22, 2026 17:25
@bmc08gt
bmc08gt merged commit a36d774 into code/cash Jul 22, 2026
3 checks passed
@bmc08gt
bmc08gt deleted the tipping-feature branch July 22, 2026 17:25
bmc08gt added a commit that referenced this pull request Jul 24, 2026
* refactor(scannable): render Scannables through the bill container

- Reorganize bills: RenderedBill -> ScannableRenderer, AnimatedBill ->
  AnimatedScannable, composables into components/{bills,cards,receipts}
  (adds the TipCard renderer); BillContainerView -> ScannableContainer.
- Widen BillState.bill to Scannable? and add SessionController.showTipCard so a
  non-payment tip card can be presented in the container (no grab/valuation);
  add tip SessionState fields wired to the new Tipping feature flag.
- Theme: add the tipCard color token; bump the xxl corner shape.
- Incidental: enable Gradle parallel tooling; small ResolverService refactor.

* feat(tipping): tip card flow, Tips tab, tip chats scaffold

- Add the tipping feature module: TippingFlowScreen + TipFlowViewModel + screens
  (TipCard, Tips, TipInfo); the tip card is built via TippingCoordinator.
- Add core tipping flow steps (TipStep/TipResult) and tip-hand drawables.
- Wire the Tips tab into navigation (AppRoute, NavBarButton, NavigationBar,
  ScannerDecorItem/ScannerNavigationBar), gated on the Tipping feature flag.

Scaffold only — scanning tip cards, the tip payment modal, tip chats, and blur
hashes are follow-ups.
bmc08gt added a commit that referenced this pull request Jul 27, 2026
… order (#1157)

Users who customized their nav bar order before Tips was added to the
NavBarButton enum (#1121) had a persisted order string without Tips.
NavBarConfig.deserialize only fell back to defaultOrder on an empty list,
so it reconstructed the stored order verbatim, missing Tips. The scanner
nav bar filter can only remove buttons, never add them, so enabling the
tipping beta flag never surfaced the Tips tab on those devices.

deserialize now merges any button missing from the persisted order,
inserting each at its position in defaultOrder. Self-heals affected
devices on next launch with no migration.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: build-system Gradle, convention plugins, build-logic area: scanner QR/Kikcode scanning, camera type: feature New functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant