You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Each has its own in-flight state and neither knows about the other's writes.
User-visible symptom: change the view preference in Settings, and an already-composed feed
switcher still shows the old value until the feed screen is re-entered.
Why it happened
No feature module in this repo depends on another — that is a deliberate convention that keeps
modules conflict-free for parallel work. :feature:messages therefore could not read :feature:profile's repository, and duplicating a narrow accessor in :core:network was the
smaller evil at the time.
What to do
Promote a single account-preferences owner — a :core:preferences (or similar) module holding the UserSettings model, the partial-PATCH call and one observable cache — and have both :feature:profile's Settings screen and :feature:messages's feed switcher consume it. Then delete ViewingPreferenceStore and fold SettingsRepository onto the shared owner.
Best done once the Settings epic (#31) has finished landing, so it is not fighting five parallel
branches.
Follow-up from #33 and #19, both of which needed the same account preference and deliberately did
not create a feature→feature dependency to get it.
Current state
Two independent paths now read and write
PATCH /api/user/update::feature:profile→SettingsRepository(from Settings: View preferences (viewingPreference) and link previews (showPreviews) #33) — models all fifteen fields, backs theSettings screen,
@Singletonwith a process-scoped in-memory cache.:core:network→ViewingPreferenceStore(from Feed: view preferences (All / My / Following / Followers) andonlyMine#19) — a narrow accessor forviewingPreferenceso:feature:messagescan drive the feed switcher.Each has its own in-flight state and neither knows about the other's writes.
User-visible symptom: change the view preference in Settings, and an already-composed feed
switcher still shows the old value until the feed screen is re-entered.
Why it happened
No feature module in this repo depends on another — that is a deliberate convention that keeps
modules conflict-free for parallel work.
:feature:messagestherefore could not read:feature:profile's repository, and duplicating a narrow accessor in:core:networkwas thesmaller evil at the time.
What to do
Promote a single account-preferences owner — a
:core:preferences(or similar) module holding theUserSettingsmodel, the partial-PATCH call and one observable cache — and have both:feature:profile's Settings screen and:feature:messages's feed switcher consume it. Then deleteViewingPreferenceStoreand foldSettingsRepositoryonto the shared owner.Best done once the Settings epic (#31) has finished landing, so it is not fighting five parallel
branches.