Skip to content

refactor(messenger): split ChatViewModel's reducer into per-area files - #1933

Merged
bmc08gt merged 2 commits into
code/cashfrom
refactor/chat-reducer-split
Nov 3, 2026
Merged

bmc08gt merged 2 commits into
code/cashfrom
refactor/chat-reducer-split

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Step B1 of the desktop chat split: ChatViewModel.stateReducer was one when of about 370 lines. Its branches now live in nine reducer files next to it, one per area:

ChatOpenReducer (open, group, lobby, members, chat-wide inputs), PinsReducer, SendReducer, TypingReducer, ComposerPhotosReducer, MessageActionReducer (selection, edit, delete, reply, mentions), ReactionsReducer, JumpReturnReducer, UnreadReducer.

stateReducer(event, lifetime) keeps its signature and tries each area in turn, so State, Event and every caller are untouched. The dispatcher's when over Event has no else, so the compiler still rejects an Event that isn't routed to an area.

No logic changed. The only edits outside the move are narrowedFor, withQuickReactionStrip and ROUTED_TO_PROFILE going from private to internal so the new files can use them, and the imports.

How "verbatim" was checked: the stripped, non-blank lines of the old branch region (367) and of the new when bodies match as multisets, and git diff --color-moved --color-moved-ws=allow-indentation-change shows the branches as moved. The messenger unit suite runs 1,130 tests with the same names and no failures on both code/cash and this branch.

stateReducer's branches move verbatim into nine reducer files in the same
package. stateReducer dispatches to them in turn; State, Event and the
reducer's signature are unchanged. The private helpers narrowedFor and
withQuickReactionStrip, and the ROUTED_TO_PROFILE constant, become internal
so the new files can reach them.
@bmc08gt bmc08gt self-assigned this Nov 2, 2026
@github-actions github-actions Bot added the type: refactor Code restructuring, no behavior change label Nov 2, 2026
The dispatcher is a when over Event with no else, grouping each area's
events and forwarding to that area's reducer, so adding an Event without
routing it is a compile error again. Area reducers return a non-null
reducer; branch bodies are unchanged.
@bmc08gt
bmc08gt merged commit 414b2c3 into code/cash Nov 3, 2026
5 checks passed
bmc08gt added a commit that referenced this pull request Nov 3, 2026
…ee-pane

* origin/code/cash: (44 commits)
  refactor(chat-list): move the chat list into a KMP module and wire it into the desktop graph (#1950)
  build(deps): bump dev.zacsweers.metro from 1.4.5 to 1.5.1 (#1901)
  feat(flipcash): add return-payment contract scaffolding (#1949)
  refactor(chat-ui): make shared/chat-ui a KMP module (#1934)
  build(deps): bump com.google.firebase:firebase-bom from 34.19.0 to 35.1.0 (#1900)
  build(deps): bump io.ktor:ktor-network from 3.4.1 to 3.6.0 (#1909)
  build(deps): bump rinku from 1.6.0 to 1.9.0 (#1907)
  build(deps): bump androidx.webkit:webkit from 1.17.0 to 1.18.0 (#1906)
  build(deps): bump agp from 9.4.1 to 9.5.0 (#1905)
  build(deps): bump androidx-datastore from 1.2.1 to 1.3.0 (#1904)
  build(deps): bump compose-multiplatform from 1.12.1 to 1.12.2 (#1903)
  build(deps): bump com.google.android.gms:play-services-base (#1902)
  build(deps): bump okhttp from 5.5.0 to 5.5.1 (#1899)
  refactor(messenger): split ChatViewModel's reducer into per-area files (#1933)
  refactor(amount-entry): make shared/amount-entry a KMP module (#1932)
  fix(build): stop KMP host tests building release variants and debug manifests changing per commit (#1948)
  refactor(theme): collapse Avenir into one family with a real Medium face (#1947)
  perf: run independent hot-path calls concurrently (#1945)
  docs(claude): test gestures with device input and keep mode state at screen level (#1943)
  build: bump Flipcash to 2026.11.2
  ...

# Conflicts:
#	CLAUDE.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: refactor Code restructuring, no behavior change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant