Skip to content

Refactor dependency injection and code style improvements - #1475

Merged
marcuscastelo merged 3 commits into
rc/v0.16.0from
marcuscastelo/issue515
Mar 25, 2026
Merged

marcuscastelo merged 3 commits into
rc/v0.16.0from
marcuscastelo/issue515

Conversation

@marcuscastelo

Copy link
Copy Markdown
Owner

Centralize dependency injection for better maintainability and clarity. Simplify imports and enhance code style for improved readability.

Fixes #515

Copilot AI review requested due to automatic review settings March 24, 2026 23:40
@marcuscastelo marcuscastelo self-assigned this Mar 24, 2026
@vercel

vercel Bot commented Mar 24, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
macroflows Ready Ready Preview, Comment Mar 25, 2026 0:01am

@github-actions github-actions Bot added complexity-high High implementation complexity improvement Technical debt or general improvement labels Mar 24, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 refactors dependency injection across application/UI modules by moving repository/use-case wiring into the app DI container and converting several module-scope singletons into injected factories, aligning the codebase with the documented DI architecture (Fixes #515).

Changes:

  • Centralizes wiring for multiple feature modules in src/di/container.tsx and removes the legacy global src/di/useCases.ts.
  • Converts several application modules (recent-food, weight chart settings, cached search, measure, macro profile, recipe item use cases) to accept explicit injected dependencies instead of constructing infra defaults internally.
  • Updates UI/components and tests to consume container-owned instances via useContainer().

Reviewed changes

Copilot reviewed 33 out of 33 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/shared/utils/tests/convertApi2Food.test.ts Updates import to new convertApi2Food location.
src/sections/weight/components/WeightEvolution.tsx Switches chart settings access to container-provided weightChartSettings.
src/sections/search/components/TemplateSearchModal.tsx Uses container-provided recentFoodUseCases instead of direct imports.
src/sections/item/components/ItemView/ItemViewHeader/ItemViewName.tsx Moves recipe item use-cases access to useContainer().
src/sections/item/components/ItemView/ItemEdit/ItemQuantityControls.tsx Moves recipe item use-cases access to useContainer().
src/sections/item/components/ItemView/ItemEdit/ItemEditModal.tsx Wires recipeItemUseCases from container.
src/sections/ean/components/EANSearch.tsx Removes module-scope CRUD wiring; uses container foodCrud.
src/sections/common/components/buttons/RemoveFromRecentButton.tsx Uses container recentFoodUseCases for deletion.
src/modules/weight/application/weight/usecases/weightUseCases.ts Requires injected repositories (cache + weight repo) rather than building defaults.
src/modules/weight/application/chart/weightChartSettings.ts Replaces global signals with a factory (createWeightChartSettings) using an injected repository.
src/modules/template-search/application/usecases/templateSearchState.ts Requires injected recentFoodCrud, foodCrud, and recipeCrud.
src/modules/search/application/usecases/cachedSearchCrud.ts Requires injected repository instead of constructing a default one.
src/modules/recent-food/application/usecases/recentFoodCrud.ts Makes repository injection mandatory (still supports showPromise override).
src/modules/measure/application/usecases/measureState.ts Requires injected fetcher for body measures; keeps realtime init injectable.
src/modules/measure/application/usecases/measureCrud.ts Makes measure repository injection mandatory.
src/modules/diet/recent-food/ui/tests/RemoveFromRecentButton.test.tsx Updates test logic to reflect container-backed flow.
src/modules/diet/recent-food/application/usecases/touchRecentFoodForItem.ts Converts to factory with injected touchRecentFood.
src/modules/diet/recent-food/application/usecases/touchRecentFood.ts Converts to factory with injected auth + CRUD collaborators.
src/modules/diet/recent-food/application/usecases/tests/touchRecentFoodForItem.test.ts Updates test to use the new factory.
src/modules/diet/recent-food/application/usecases/tests/touchRecentFood.test.ts Updates test to use the new factory.
src/modules/diet/recent-food/application/usecases/recentFoodUseCases.ts Converts recent-food use cases to a factory and composes injected collaborators.
src/modules/diet/recent-food/application/usecases/deps.ts Removes centralized module-scope wiring for recent-food service.
src/modules/diet/macro-profile/application/usecases/macroProfileUseCases.ts Makes CRUD service injection mandatory.
src/modules/diet/macro-profile/application/service/macroProfileCrudService.ts Makes repository injection mandatory.
src/modules/diet/item/application/tests/recipeItemUseCases.test.ts Updates test to use createRecipeItemUseCases factory.
src/modules/diet/item/application/recipeItemUseCases.ts Removes module-scope singleton export; keeps factory + exported type.
src/modules/diet/food/infrastructure/api/application/convertApi2Food.ts Minor style tweak; now the canonical conversion location.
src/modules/diet/food/infrastructure/api/application/apiFood.ts Makes DI explicit (repository + cached-search CRUD required); updates imports.
src/modules/diet/food/application/usecases/foodCrud.ts Requires injected cachedSearchCrud and repository instance.
src/modules/diet/day-diet/application/usecases/dayUseCases.ts Makes dayRepository mandatory (injected by container).
src/di/useCases.ts Removes legacy global use-cases container.
src/di/container.tsx Centralizes construction and exposure of repositories/use-cases/settings via DI container.
docs/ARCHITECTURE_GUIDE.md Updates DI guidelines to match the refactor (container/test-only concrete wiring, UI uses useContainer()).

Comment thread src/modules/diet/recent-food/application/usecases/touchRecentFoodForItem.ts Outdated
Comment thread src/modules/weight/application/chart/weightChartSettings.ts Outdated
Comment thread src/modules/search/application/usecases/cachedSearchCrud.ts
Comment thread src/modules/diet/food/infrastructure/api/application/apiFood.ts
Comment thread src/modules/weight/application/weight/usecases/weightUseCases.ts
@marcuscastelo
marcuscastelo merged commit d0f7442 into rc/v0.16.0 Mar 25, 2026
5 checks passed
@marcuscastelo
marcuscastelo deleted the marcuscastelo/issue515 branch March 25, 2026 00:15

This branch was successfully deployed

1 active deployment
Preview — 413406dd Deployed Mar 25, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

complexity-high High implementation complexity improvement Technical debt or general improvement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Depency injection for repositories on all application files

2 participants