Skip to content

Commit

Permalink
(PC-31042) feat: use new categoryTree in categoriesModal
Browse files Browse the repository at this point in the history
  • Loading branch information
tconte-pass committed Sep 12, 2024
1 parent 7853f5e commit 8c5e3b4
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import styled from 'styled-components/native'

import { SearchGroupNameEnumv2 } from 'api/gen'
import { CategoriesSectionItem } from 'features/search/components/CategoriesSectionItem/CategoriesSectionItem'
import { CategoryTree } from 'features/search/helpers/categoriesHelpers/categoryTree'
import {
MappedGenreTypes,
MappedNativeCategories,
Expand All @@ -14,7 +15,11 @@ import { RadioButton } from 'ui/components/radioButtons/RadioButton'
import { VerticalUl } from 'ui/components/Ul'
import { AccessibleBicolorIcon } from 'ui/svg/icons/types'

export type CategoriesMapping = MappingTree | MappedNativeCategories | MappedGenreTypes
export type CategoriesMapping =
| CategoryTree
| MappingTree
| MappedNativeCategories
| MappedGenreTypes

export interface CategoriesSectionProps<
T extends CategoriesMapping,
Expand All @@ -24,7 +29,7 @@ export interface CategoriesSectionProps<
allValue: N
data?: T
descriptionContext: DescriptionContext
getIcon?: T extends MappingTree
getIcon?: T extends MappingTree | CategoryTree
? (categoryName: SearchGroupNameEnumv2) => FC<AccessibleBicolorIcon> | undefined
: undefined
onSelect: (item: N) => void
Expand Down
21 changes: 10 additions & 11 deletions src/features/search/helpers/categoriesHelpers/categoriesHelpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ import {
SearchGroupResponseModelv2,
SubcategoriesResponseModelv2,
} from 'api/gen'
import { useSearchResults } from 'features/search/api/useSearchResults/useSearchResults'
import { CATEGORY_CRITERIA, CategoriesModalView } from 'features/search/enums'
import {
CategoryTree,
createCategoryTree,
} from 'features/search/helpers/categoriesHelpers/categoryTree'
import {
MappedNativeCategories,
MappingTree,
createMappingTree,
getBooksGenreTypes,
getBooksNativeCategories,
getKeyFromStringLabel,
Expand All @@ -27,7 +28,7 @@ import {
SearchState,
} from 'features/search/types'
import { FACETS_FILTERS_ENUM } from 'libs/algolia/enums/facetsEnums'
import { useSubcategories } from 'libs/subcategories/useSubcategories'
import { useCategories } from 'libs/subcategories/useCategories'

type Item = SearchGroupNameEnumv2 | NativeCategoryIdEnumv2 | string | null

Expand Down Expand Up @@ -342,15 +343,13 @@ export function getNativeCategories(
}

export const useNativeCategories = (searchGroup?: SearchGroupNameEnumv2) => {
const { data: subcategories } = useSubcategories()
const { facets } = useSearchResults()

const tree = createMappingTree(subcategories, facets)
const { data: categoryTree } = useCategories()
const tree = createCategoryTree(categoryTree)

const mappedNativeCategories =
searchGroup &&
searchGroup !== SearchGroupNameEnumv2.NONE &&
(tree[searchGroup].children as MappedNativeCategories)
(tree[searchGroup]?.children as MappedNativeCategories)

const nativeCategories = mappedNativeCategories ? Object.entries(mappedNativeCategories) : []

Expand Down Expand Up @@ -499,7 +498,7 @@ export function getDescription(
return undefined
}

export function getDefaultFormView(tree: MappingTree, searchState: SearchState) {
export function getDefaultFormView(tree: CategoryTree, searchState: SearchState) {
const { offerGenreTypes, offerCategories, offerNativeCategories } = searchState

if (!offerCategories?.[0]) return CategoriesModalView.CATEGORIES
Expand All @@ -516,7 +515,7 @@ export function getDefaultFormView(tree: MappingTree, searchState: SearchState)
}

export function getDefaultFormValues(
tree: MappingTree | undefined,
tree: CategoryTree | undefined,
searchState: SearchState
): CategoriesModalFormProps {
if (!tree)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,14 @@ import {
getIcon,
handleCategoriesSearchPress,
} from 'features/search/helpers/categoriesHelpers/categoriesHelpers'
import { createCategoryTree } from 'features/search/helpers/categoriesHelpers/categoryTree'
import {
createMappingTree,
MappedGenreTypes,
MappedNativeCategories,
} from 'features/search/helpers/categoriesHelpers/mapping-tree'
import { NativeCategoryEnum, SearchState } from 'features/search/types'
import { FacetData } from 'libs/algolia/types'
import { useCategories } from 'libs/subcategories/useCategories'
import { useSubcategories } from 'libs/subcategories/useSubcategories'
import { Form } from 'ui/components/Form'
import { AppModal } from 'ui/components/modals/AppModal'
Expand Down Expand Up @@ -54,15 +55,15 @@ export const CategoriesModal = ({
isVisible = false,
hideModal,
onClose,
facets,
}: CategoriesModalProps) => {
const { data } = useSubcategories()
const { data: categoryList } = useCategories()
const { data: subcategoriesData } = useSubcategories()
const { modal } = useTheme()
const { dispatch, searchState } = useSearch()

const tree = useMemo(() => {
return createMappingTree(data, facets)
}, [data, facets])
return createCategoryTree(categoryList)
}, [categoryList])

const {
formState: { isSubmitting },
Expand All @@ -82,7 +83,7 @@ export const CategoriesModal = ({
const nativeCategories = useMemo(() => {
return (category &&
category !== SearchGroupNameEnumv2.NONE &&
tree[category].children) as MappedNativeCategories
tree[category]?.children) as MappedNativeCategories
}, [category, tree])

const genreTypes = useMemo(() => {
Expand Down Expand Up @@ -160,11 +161,11 @@ export const CategoriesModal = ({

const handleSearchPress = useCallback(
(form: CategoriesModalFormProps) => {
if (!data) {
if (!subcategoriesData) {
return
}

const searchPressData = handleCategoriesSearchPress(form, data)
const searchPressData = handleCategoriesSearchPress(form, subcategoriesData)

let additionalSearchState: SearchState = { ...searchState, ...searchPressData?.payload }
additionalSearchState = {
Expand All @@ -175,7 +176,7 @@ export const CategoriesModal = ({
dispatch({ type: 'SET_STATE', payload: additionalSearchState })
hideModal()
},
[data, dispatch, hideModal, searchState]
[subcategoriesData, dispatch, hideModal, searchState]
)

const handleReset = useCallback(() => {
Expand All @@ -197,8 +198,8 @@ export const CategoriesModal = ({
)

const modalTitle = useMemo(() => {
return getCategoriesModalTitle(data, currentView, category, nativeCategory)
}, [category, currentView, data, nativeCategory])
return getCategoriesModalTitle(subcategoriesData, currentView, category, nativeCategory)
}, [category, currentView, subcategoriesData, nativeCategory])

const shouldDisplayBackButton = useMemo(
() =>
Expand Down

0 comments on commit 8c5e3b4

Please sign in to comment.