From 5bc99219155b47f6e68272c9aaeddaae72f24d9f Mon Sep 17 00:00:00 2001 From: marcuscastelo Date: Tue, 2 Dec 2025 10:47:38 -0300 Subject: [PATCH 1/4] refactor(search): restructure module and add recent food store --- .../application/store/recentFoodStore.ts | 0 .../search/ui}/SearchLoadingIndicator.tsx | 0 .../search/ui}/TemplateSearchBar.tsx | 0 .../search/ui}/TemplateSearchModal.tsx | 12 ++++---- .../search/ui}/TemplateSearchResultItem.tsx | 0 .../search/ui}/TemplateSearchResults.tsx | 4 +-- .../search/ui}/TemplateSearchTabs.tsx | 0 .../search/ui/openTemplateSearchModal.tsx | 2 +- .../application/templateSearchLogic.ts | 2 +- .../tests/templateSearchLogic.test.ts | 2 +- .../usecases/templateSearchState.ts | 2 +- .../templateSearchTabPreference.ts | 2 +- .../tests/templateSearchTabPreference.test.ts | 2 +- src/routes/test-app.tsx | 28 ++++++------------- src/sections/day-diet/components/DayMeals.tsx | 2 +- .../ItemView/ItemEdit/ItemEditModal.tsx | 2 +- .../recipe/components/RecipeEditModal.tsx | 2 +- 17 files changed, 26 insertions(+), 36 deletions(-) create mode 100644 src/modules/recent-food/application/store/recentFoodStore.ts rename src/{sections/search/components => modules/search/ui}/SearchLoadingIndicator.tsx (100%) rename src/{sections/search/components => modules/search/ui}/TemplateSearchBar.tsx (100%) rename src/{sections/search/components => modules/search/ui}/TemplateSearchModal.tsx (97%) rename src/{sections/search/components => modules/search/ui}/TemplateSearchResultItem.tsx (100%) rename src/{sections/search/components => modules/search/ui}/TemplateSearchResults.tsx (90%) rename src/{sections/search/components => modules/search/ui}/TemplateSearchTabs.tsx (100%) rename src/{sections => modules}/search/ui/openTemplateSearchModal.tsx (94%) diff --git a/src/modules/recent-food/application/store/recentFoodStore.ts b/src/modules/recent-food/application/store/recentFoodStore.ts new file mode 100644 index 000000000..e69de29bb diff --git a/src/sections/search/components/SearchLoadingIndicator.tsx b/src/modules/search/ui/SearchLoadingIndicator.tsx similarity index 100% rename from src/sections/search/components/SearchLoadingIndicator.tsx rename to src/modules/search/ui/SearchLoadingIndicator.tsx diff --git a/src/sections/search/components/TemplateSearchBar.tsx b/src/modules/search/ui/TemplateSearchBar.tsx similarity index 100% rename from src/sections/search/components/TemplateSearchBar.tsx rename to src/modules/search/ui/TemplateSearchBar.tsx diff --git a/src/sections/search/components/TemplateSearchModal.tsx b/src/modules/search/ui/TemplateSearchModal.tsx similarity index 97% rename from src/sections/search/components/TemplateSearchModal.tsx rename to src/modules/search/ui/TemplateSearchModal.tsx index c00f4aec3..9a9901bca 100644 --- a/src/sections/search/components/TemplateSearchModal.tsx +++ b/src/modules/search/ui/TemplateSearchModal.tsx @@ -18,6 +18,12 @@ import { updateRecentFood, } from '~/modules/recent-food/application/usecases/recentFoodCrud' import { createNewRecentFood } from '~/modules/recent-food/domain/recentFood' +import { TemplateSearchBar } from '~/modules/search/ui/TemplateSearchBar' +import { TemplateSearchResults } from '~/modules/search/ui/TemplateSearchResults' +import { + type TemplateSearchTab, + TemplateSearchTabs, +} from '~/modules/search/ui/TemplateSearchTabs' import { debouncedSearch, refetchTemplates, @@ -36,12 +42,6 @@ import { EANButton } from '~/sections/common/components/EANButton' import { PageLoading } from '~/sections/common/components/PageLoading' import { EANInsertModal } from '~/sections/ean/components/EANInsertModal' import { openItemEditModal } from '~/sections/item/ui/openItemEditModal' -import { TemplateSearchBar } from '~/sections/search/components/TemplateSearchBar' -import { TemplateSearchResults } from '~/sections/search/components/TemplateSearchResults' -import { - type TemplateSearchTab, - TemplateSearchTabs, -} from '~/sections/search/components/TemplateSearchTabs' import { formatError } from '~/shared/formatError' import { closeModal, diff --git a/src/sections/search/components/TemplateSearchResultItem.tsx b/src/modules/search/ui/TemplateSearchResultItem.tsx similarity index 100% rename from src/sections/search/components/TemplateSearchResultItem.tsx rename to src/modules/search/ui/TemplateSearchResultItem.tsx diff --git a/src/sections/search/components/TemplateSearchResults.tsx b/src/modules/search/ui/TemplateSearchResults.tsx similarity index 90% rename from src/sections/search/components/TemplateSearchResults.tsx rename to src/modules/search/ui/TemplateSearchResults.tsx index 3974c3722..868c48e9e 100644 --- a/src/sections/search/components/TemplateSearchResults.tsx +++ b/src/modules/search/ui/TemplateSearchResults.tsx @@ -1,13 +1,13 @@ import { type Accessor, For, Show } from 'solid-js' import { type Template } from '~/modules/diet/template/domain/template' +import { SearchLoadingIndicator } from '~/modules/search/ui/SearchLoadingIndicator' +import { TemplateSearchResultItem } from '~/modules/search/ui/TemplateSearchResultItem' import { debouncedTab, templates, } from '~/modules/template-search/application/usecases/templateSearchState' import { Alert } from '~/sections/common/components/Alert' -import { SearchLoadingIndicator } from '~/sections/search/components/SearchLoadingIndicator' -import { TemplateSearchResultItem } from '~/sections/search/components/TemplateSearchResultItem' export function TemplateSearchResults(props: { search: string diff --git a/src/sections/search/components/TemplateSearchTabs.tsx b/src/modules/search/ui/TemplateSearchTabs.tsx similarity index 100% rename from src/sections/search/components/TemplateSearchTabs.tsx rename to src/modules/search/ui/TemplateSearchTabs.tsx diff --git a/src/sections/search/ui/openTemplateSearchModal.tsx b/src/modules/search/ui/openTemplateSearchModal.tsx similarity index 94% rename from src/sections/search/ui/openTemplateSearchModal.tsx rename to src/modules/search/ui/openTemplateSearchModal.tsx index 5031716e1..570e9e490 100644 --- a/src/sections/search/ui/openTemplateSearchModal.tsx +++ b/src/modules/search/ui/openTemplateSearchModal.tsx @@ -6,7 +6,7 @@ import { TemplateSearchModal, type TemplateSearchModalProps, -} from '~/sections/search/components/TemplateSearchModal' +} from '~/modules/search/ui/TemplateSearchModal' import { closeModal, openContentModal, diff --git a/src/modules/template-search/application/templateSearchLogic.ts b/src/modules/template-search/application/templateSearchLogic.ts index 63eedd523..144f07194 100644 --- a/src/modules/template-search/application/templateSearchLogic.ts +++ b/src/modules/template-search/application/templateSearchLogic.ts @@ -5,8 +5,8 @@ import type { Food } from '~/modules/diet/food/domain/food' import type { FoodSearchParams } from '~/modules/diet/food/domain/foodRepository' import type { Recipe } from '~/modules/diet/recipe/domain/recipe' import type { Template } from '~/modules/diet/template/domain/template' +import { availableTabs } from '~/modules/search/ui/TemplateSearchTabs' import { type User } from '~/modules/user/domain/user' -import { availableTabs } from '~/sections/search/components/TemplateSearchTabs' /** * Dependencies for fetchTemplatesByTabLogic diff --git a/src/modules/template-search/application/tests/templateSearchLogic.test.ts b/src/modules/template-search/application/tests/templateSearchLogic.test.ts index 3e6f6a7a3..349c23b74 100644 --- a/src/modules/template-search/application/tests/templateSearchLogic.test.ts +++ b/src/modules/template-search/application/tests/templateSearchLogic.test.ts @@ -9,11 +9,11 @@ import { createNewRecipe, promoteRecipe, } from '~/modules/diet/recipe/domain/recipe' +import { availableTabs } from '~/modules/search/ui/TemplateSearchTabs' import { fetchTemplatesByTabLogic, type FetchTemplatesDeps, } from '~/modules/template-search/application/templateSearchLogic' -import { availableTabs } from '~/sections/search/components/TemplateSearchTabs' describe('fetchTemplatesByTabLogic', () => { const mockFood = promoteNewFoodToFood( diff --git a/src/modules/template-search/application/usecases/templateSearchState.ts b/src/modules/template-search/application/usecases/templateSearchState.ts index bd8e098b4..b7a0f7b2e 100644 --- a/src/modules/template-search/application/usecases/templateSearchState.ts +++ b/src/modules/template-search/application/usecases/templateSearchState.ts @@ -9,9 +9,9 @@ import { fetchUserRecipes, } from '~/modules/diet/recipe/application/usecases/recipeCrud' import { fetchUserRecentFoods } from '~/modules/recent-food/application/usecases/recentFoodCrud' +import { type TemplateSearchTab } from '~/modules/search/ui/TemplateSearchTabs' import { fetchTemplatesByTabLogic } from '~/modules/template-search/application/templateSearchLogic' import { currentUser, currentUserId } from '~/modules/user/application/user' -import { type TemplateSearchTab } from '~/sections/search/components/TemplateSearchTabs' import { createDebouncedSignal } from '~/shared/utils/createDebouncedSignal' export const [templateSearch, setTemplateSearch] = createSignal('') diff --git a/src/modules/template-search/infrastructure/templateSearchTabPreference.ts b/src/modules/template-search/infrastructure/templateSearchTabPreference.ts index c50665c19..db91be0ed 100644 --- a/src/modules/template-search/infrastructure/templateSearchTabPreference.ts +++ b/src/modules/template-search/infrastructure/templateSearchTabPreference.ts @@ -8,7 +8,7 @@ import { availableTabs, type TemplateSearchTab, -} from '~/sections/search/components/TemplateSearchTabs' +} from '~/modules/search/ui/TemplateSearchTabs' const STORAGE_KEY = 'macroflows:template-search-tab' diff --git a/src/modules/template-search/infrastructure/tests/templateSearchTabPreference.test.ts b/src/modules/template-search/infrastructure/tests/templateSearchTabPreference.test.ts index 4b3455564..1f0bb2e32 100644 --- a/src/modules/template-search/infrastructure/tests/templateSearchTabPreference.test.ts +++ b/src/modules/template-search/infrastructure/tests/templateSearchTabPreference.test.ts @@ -1,6 +1,6 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import { availableTabs } from '~/sections/search/components/TemplateSearchTabs' +import { availableTabs } from '~/modules/search/ui/TemplateSearchTabs' let localStorageMock: Record = {} diff --git a/src/routes/test-app.tsx b/src/routes/test-app.tsx index 7777baeb2..758e5eb39 100644 --- a/src/routes/test-app.tsx +++ b/src/routes/test-app.tsx @@ -14,6 +14,7 @@ import { type Meal, promoteMeal, } from '~/modules/diet/meal/domain/meal' +import { openTemplateSearchModal } from '~/modules/search/ui/openTemplateSearchModal' import { showSuccess } from '~/modules/toast/application/toastManager' import { TestChart } from '~/sections/common/components/charts/TestChart' import { FloatInput } from '~/sections/common/components/FloatInput' @@ -27,11 +28,7 @@ import { Datepicker } from '~/sections/datepicker/components/Datepicker' import { type DateValueType } from '~/sections/datepicker/types' import DayMacros from '~/sections/day-diet/components/DayMacros' import { ItemView } from '~/sections/item/components/ItemView' -import { TemplateSearchModal } from '~/sections/search/components/TemplateSearchModal' -import { - openConfirmModal, - openContentModal, -} from '~/shared/modal/helpers/modalHelpers' +import { openConfirmModal } from '~/shared/modal/helpers/modalHelpers' import { openEditModal } from '~/shared/modal/helpers/modalHelpers' import { generateId } from '~/shared/utils/idUtils' import { logging } from '~/shared/utils/logging' @@ -197,21 +194,14 @@ export default function TestApp() {