Skip to content

Commit

Permalink
Lift up providers
Browse files Browse the repository at this point in the history
  • Loading branch information
andrzejewsky committed Jul 10, 2023
1 parent 6efd523 commit 24e1d64
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 18 deletions.
19 changes: 14 additions & 5 deletions src/components/ConditionalFilter/ConditionalFilters.tsx
Original file line number Diff line number Diff line change
@@ -1,27 +1,36 @@
import { Box, Text } from "@saleor/macaw-ui/next";
import React from "react";

import { FilterAPIProvider } from "./API/FilterAPIProvider";
import { FilterContainer } from "./FilterElement";
import { FiltersArea } from "./FiltersArea";
import { FilterValueProvider } from "./FilterValueProvider";
import { LeftOperandsProvider } from "./LeftOperandsProvider";

interface ConditionalFiltersProps {
provider: FilterValueProvider
valueProvider: FilterValueProvider
apiProvider: FilterAPIProvider
leftOperandsProvider: LeftOperandsProvider
onConfirm: (value: FilterContainer) => void
}

export const ConditionalFilters = ({ provider, onConfirm }: ConditionalFiltersProps) => {
export const ConditionalFilters = ({ valueProvider, apiProvider, leftOperandsProvider, onConfirm }: ConditionalFiltersProps) => {
const handleConfirm = (value: FilterContainer) => {
provider.persist(value)
valueProvider.persist(value)
onConfirm(value)
}

return (
<Box>
{provider.loading ? (
{valueProvider.loading ? (
<Text>Loading...</Text>
) : (
<FiltersArea filterValue={provider.value} onConfirm={handleConfirm} />
<FiltersArea
apiProvider={apiProvider}
leftOperandsProvider={leftOperandsProvider}
filterValue={valueProvider.value}
onConfirm={handleConfirm}
/>
)}
</Box>
);
Expand Down
11 changes: 5 additions & 6 deletions src/components/ConditionalFilter/FIltersArea.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,19 @@ import {
} from "@saleor/macaw-ui/next";
import React from "react";

import { useProductFilterAPIProvider } from "./API/ProductFilterAPIProvider";
import { FilterAPIProvider } from "./API/FilterAPIProvider";
import { FilterContainer } from "./FilterElement";
import { LeftOperandsProvider } from "./LeftOperandsProvider";
import { useFilterContainer } from "./useFilterContainer";
import { useFilterLeftOperandsProvider } from "./useFilterLeftOperands";

interface FiltersAreaProps {
filterValue: FilterContainer
apiProvider: FilterAPIProvider
leftOperandsProvider: LeftOperandsProvider
onConfirm: (value: FilterContainer) => void
}

export const FiltersArea = ({ filterValue, onConfirm }: FiltersAreaProps) => {
const apiProvider = useProductFilterAPIProvider();
const leftOperandsProvider = useFilterLeftOperandsProvider();

export const FiltersArea = ({ filterValue, apiProvider, leftOperandsProvider, onConfirm }: FiltersAreaProps) => {
const {
value,
addEmpty,
Expand Down
11 changes: 5 additions & 6 deletions src/components/ConditionalFilter/FiltersArea.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,19 @@ import {
} from "@saleor/macaw-ui/next";
import React from "react";

import { useProductFilterAPIProvider } from "./API/ProductFilterAPIProvider";
import { FilterAPIProvider } from "./API/FilterAPIProvider";
import { FilterContainer } from "./FilterElement";
import { LeftOperandsProvider } from "./LeftOperandsProvider";
import { useFilterContainer } from "./useFilterContainer";
import { useFilterLeftOperandsProvider } from "./useFilterLeftOperands";

interface FiltersAreaProps {
filterValue: FilterContainer
apiProvider: FilterAPIProvider
leftOperandsProvider: LeftOperandsProvider
onConfirm: (value: FilterContainer) => void
}

export const FiltersArea = ({ filterValue, onConfirm }: FiltersAreaProps) => {
const apiProvider = useProductFilterAPIProvider();
const leftOperandsProvider = useFilterLeftOperandsProvider();

export const FiltersArea = ({ filterValue, apiProvider, leftOperandsProvider, onConfirm }: FiltersAreaProps) => {
const {
value,
addEmpty,
Expand Down
11 changes: 10 additions & 1 deletion src/components/ConditionalFilter/index.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
import React from "react";

import { useProductFilterAPIProvider } from "./API/ProductFilterAPIProvider";
import { ConditionalFilters } from "./ConditionalFilters";
import { FilterContainer } from "./FilterElement";
import { useFilterLeftOperandsProvider } from "./useFilterLeftOperands";
import { useUrlValueProvider } from "./ValueProvider/useUrlValueProvider";

export const ConditionalProductFilters = () => {
const provider = useUrlValueProvider();
const apiProvider = useProductFilterAPIProvider();
const leftOperandsProvider = useFilterLeftOperandsProvider();

// @ts-expect-error
const handleConfirm = (value: FilterContainer) => {
}

return <ConditionalFilters provider={provider} onConfirm={handleConfirm} />
return <ConditionalFilters
valueProvider={provider}
apiProvider={apiProvider}
leftOperandsProvider={leftOperandsProvider}
onConfirm={handleConfirm}
/>
}

0 comments on commit 24e1d64

Please sign in to comment.