fix(saved-components): remove unused variables and pagination component
fix(market-card): refactor totalComponentsMetadata function to improve readability fix(StorePage): remove unused import and add logic to handle pagination rendering based on search and loading status
This commit is contained in:
parent
127721e986
commit
06595c2f16
3 changed files with 45 additions and 42 deletions
|
|
@ -1,11 +1,13 @@
|
||||||
import { useContext, useEffect, useState } from "react";
|
import { useContext, useEffect, useState } from "react";
|
||||||
|
|
||||||
import PaginatorComponent from "../../../../components/PaginatorComponent";
|
|
||||||
import { SkeletonCardComponent } from "../../../../components/skeletonCardComponent";
|
import { SkeletonCardComponent } from "../../../../components/skeletonCardComponent";
|
||||||
import { alertContext } from "../../../../contexts/alertContext";
|
import { alertContext } from "../../../../contexts/alertContext";
|
||||||
import { AuthContext } from "../../../../contexts/authContext";
|
import { AuthContext } from "../../../../contexts/authContext";
|
||||||
import { TabsContext } from "../../../../contexts/tabsContext";
|
import { TabsContext } from "../../../../contexts/tabsContext";
|
||||||
import { getStoreComponents } from "../../../../controllers/API";
|
import {
|
||||||
|
getStoreComponents,
|
||||||
|
getStoreSavedComponents,
|
||||||
|
} from "../../../../controllers/API";
|
||||||
import { storeComponent } from "../../../../types/store";
|
import { storeComponent } from "../../../../types/store";
|
||||||
import { MarketCardComponent } from "../../../StorePage/components/market-card";
|
import { MarketCardComponent } from "../../../StorePage/components/market-card";
|
||||||
|
|
||||||
|
|
@ -22,9 +24,6 @@ export default function SavedComponents(): JSX.Element {
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
const [filteredCategories, setFilteredCategories] = useState(new Set());
|
const [filteredCategories, setFilteredCategories] = useState(new Set());
|
||||||
const { setErrorData } = useContext(alertContext);
|
const { setErrorData } = useContext(alertContext);
|
||||||
const [totalRowsCount, setTotalRowsCount] = useState(0);
|
|
||||||
const [size, setPageSize] = useState(10);
|
|
||||||
const [index, setPageIndex] = useState(1);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
handleGetComponents();
|
handleGetComponents();
|
||||||
|
|
@ -32,11 +31,9 @@ export default function SavedComponents(): JSX.Element {
|
||||||
|
|
||||||
const handleGetComponents = () => {
|
const handleGetComponents = () => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
getStoreComponents(index - 1, 10000)
|
getStoreComponents(0, 10000)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
setTotalRowsCount(res.length);
|
handleAddedOnly(res);
|
||||||
setData(res);
|
|
||||||
setLoading(false);
|
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
|
|
@ -47,13 +44,12 @@ export default function SavedComponents(): JSX.Element {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function handleChangePagination(pageIndex: number, pageSize: number) {
|
function handleAddedOnly(components: storeComponent[]) {
|
||||||
setLoading(true);
|
getStoreSavedComponents()
|
||||||
getStoreComponents(pageIndex, pageSize)
|
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
setData(res);
|
const idSet = new Set(res.map((item) => item.id));
|
||||||
setPageIndex(pageIndex);
|
const filteredArray = components.filter((item) => idSet.has(item.id));
|
||||||
setPageSize(pageSize);
|
setData(filteredArray);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
|
@ -65,8 +61,6 @@ export default function SavedComponents(): JSX.Element {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const renderPagination = data.length > 0 && !loading;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{loading ? (
|
{loading ? (
|
||||||
|
|
@ -92,20 +86,6 @@ export default function SavedComponents(): JSX.Element {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{renderPagination && (
|
|
||||||
<div className="relative mt-3">
|
|
||||||
<PaginatorComponent
|
|
||||||
storeComponent={true}
|
|
||||||
pageIndex={index}
|
|
||||||
pageSize={size}
|
|
||||||
totalRowsCount={totalRowsCount}
|
|
||||||
paginate={(pageSize, pageIndex) => {
|
|
||||||
handleChangePagination(pageIndex, pageSize);
|
|
||||||
}}
|
|
||||||
></PaginatorComponent>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,10 @@ export const MarketCardComponent = ({ data }: { data: storeComponent }) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const totalComponentsMetadata = () => {
|
||||||
|
return data?.metadata ? data.metadata["total"] : 0;
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card className="group relative flex flex-col justify-between overflow-hidden transition-all hover:shadow-md">
|
<Card className="group relative flex flex-col justify-between overflow-hidden transition-all hover:shadow-md">
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -147,7 +151,7 @@ export const MarketCardComponent = ({ data }: { data: storeComponent }) => {
|
||||||
<ShadTooltip content="Components">
|
<ShadTooltip content="Components">
|
||||||
<span className="flex items-center gap-1.5 text-xs text-foreground">
|
<span className="flex items-center gap-1.5 text-xs text-foreground">
|
||||||
<IconComponent name="ToyBrick" className="h-4 w-4" />
|
<IconComponent name="ToyBrick" className="h-4 w-4" />
|
||||||
123
|
{totalComponentsMetadata()}
|
||||||
</span>
|
</span>
|
||||||
</ShadTooltip>
|
</ShadTooltip>
|
||||||
<ShadTooltip content="Favorites">
|
<ShadTooltip content="Favorites">
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,6 @@ import {
|
||||||
SelectTrigger,
|
SelectTrigger,
|
||||||
SelectValue,
|
SelectValue,
|
||||||
} from "../../components/ui/select";
|
} from "../../components/ui/select";
|
||||||
import { Switch } from "../../components/ui/switch";
|
|
||||||
import { alertContext } from "../../contexts/alertContext";
|
import { alertContext } from "../../contexts/alertContext";
|
||||||
import { StoreContext } from "../../contexts/storeContext";
|
import { StoreContext } from "../../contexts/storeContext";
|
||||||
import { TabsContext } from "../../contexts/tabsContext";
|
import { TabsContext } from "../../contexts/tabsContext";
|
||||||
|
|
@ -47,9 +46,12 @@ export default function StorePage(): JSX.Element {
|
||||||
const [size, setPageSize] = useState(10);
|
const [size, setPageSize] = useState(10);
|
||||||
const [index, setPageIndex] = useState(1);
|
const [index, setPageIndex] = useState(1);
|
||||||
const [errorApiKey, setErrorApiKey] = useState(false);
|
const [errorApiKey, setErrorApiKey] = useState(false);
|
||||||
const { setSavedFlows } = useContext(StoreContext);
|
const { setSavedFlows, savedFlows } = useContext(StoreContext);
|
||||||
const [tags, setTags] = useState<string[]>([]);
|
const [tags, setTags] = useState<string[]>([]);
|
||||||
const tagListId = useRef<{ id: string; name: string }[]>([]);
|
const tagListId = useRef<{ id: string; name: string }[]>([]);
|
||||||
|
const [renderPagination, setRenderPagination] = useState(
|
||||||
|
searchData?.length > 0 && !loading && !search
|
||||||
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getStoreTags().then((res) => {
|
getStoreTags().then((res) => {
|
||||||
|
|
@ -59,6 +61,10 @@ export default function StorePage(): JSX.Element {
|
||||||
});
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setRenderPagination(searchData?.length > 0 && !loading && !search);
|
||||||
|
}, [loading, search]);
|
||||||
|
|
||||||
async function getSavedComponents() {
|
async function getSavedComponents() {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
const result = await getStoreSavedComponents();
|
const result = await getStoreSavedComponents();
|
||||||
|
|
@ -110,8 +116,10 @@ export default function StorePage(): JSX.Element {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
searchComponent(inputText).then(
|
searchComponent(inputText).then(
|
||||||
(res) => {
|
(res) => {
|
||||||
setLoading(false);
|
|
||||||
setSearchData(res);
|
setSearchData(res);
|
||||||
|
setData(res);
|
||||||
|
setRenderPagination(false);
|
||||||
|
setLoading(false);
|
||||||
},
|
},
|
||||||
(error) => {
|
(error) => {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
|
|
@ -124,9 +132,11 @@ export default function StorePage(): JSX.Element {
|
||||||
getStoreComponents(pageIndex, pageSize)
|
getStoreComponents(pageIndex, pageSize)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
setData(res);
|
setData(res);
|
||||||
|
setSearchData(res);
|
||||||
setPageIndex(pageIndex);
|
setPageIndex(pageIndex);
|
||||||
setPageSize(pageSize);
|
setPageSize(pageSize);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
|
setRenderPagination(true);
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
setSearchData([]);
|
setSearchData([]);
|
||||||
|
|
@ -138,8 +148,6 @@ export default function StorePage(): JSX.Element {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const renderPagination = searchData.length > 0 && !loading && !search;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Header />
|
<Header />
|
||||||
|
|
@ -171,9 +179,6 @@ export default function StorePage(): JSX.Element {
|
||||||
</span>
|
</span>
|
||||||
<div className="flex w-full flex-col gap-4 p-4">
|
<div className="flex w-full flex-col gap-4 p-4">
|
||||||
<div className="flex items-center justify-center gap-4">
|
<div className="flex items-center justify-center gap-4">
|
||||||
<div className="flex w-[13%] items-center justify-center gap-3 text-sm">
|
|
||||||
Added Only <Switch />
|
|
||||||
</div>
|
|
||||||
<div className="relative h-12 w-[35%]">
|
<div className="relative h-12 w-[35%]">
|
||||||
<Input
|
<Input
|
||||||
placeholder="Search Flows and Components"
|
placeholder="Search Flows and Components"
|
||||||
|
|
@ -200,7 +205,21 @@ export default function StorePage(): JSX.Element {
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex w-[13%] items-center justify-center gap-3 text-sm">
|
<div className="flex w-[13%] items-center justify-center gap-3 text-sm">
|
||||||
<Select onValueChange={(value) => {}}>
|
<Select
|
||||||
|
onValueChange={(value) => {
|
||||||
|
setFilteredCategories(new Set());
|
||||||
|
if (value === "Flow") {
|
||||||
|
setSearchData(data.filter((f) => f.is_component === false));
|
||||||
|
setRenderPagination(false);
|
||||||
|
} else if (value === "Component") {
|
||||||
|
setSearchData(data.filter((f) => f.is_component === true));
|
||||||
|
setRenderPagination(false);
|
||||||
|
} else {
|
||||||
|
setSearchData(data);
|
||||||
|
setRenderPagination(true);
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
<SelectTrigger className="w-[180px]">
|
<SelectTrigger className="w-[180px]">
|
||||||
<SelectValue placeholder="Both" />
|
<SelectValue placeholder="Both" />
|
||||||
</SelectTrigger>
|
</SelectTrigger>
|
||||||
|
|
@ -264,7 +283,7 @@ export default function StorePage(): JSX.Element {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{renderPagination && (
|
{renderPagination && (
|
||||||
<div className="relative mt-3">
|
<div className="relative my-3">
|
||||||
<PaginatorComponent
|
<PaginatorComponent
|
||||||
storeComponent={true}
|
storeComponent={true}
|
||||||
pageIndex={index}
|
pageIndex={index}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue