import React, { useContext, useState } from "react";
import { Container, Col, Row, Dropdown, Form } from "react-bootstrap";
import { Spinner } from "react-bootstrap";
import { defaultNetworks } from "src/services/network/networkProvider";
import { UserPrefContext } from "src/services/userPref/userPrefProvider";
import LabelCard from "./LabelCard/LabelCard";
import Dropzone from "../Misc/Dropzone/Dropzone";
import ImportExport from "../Misc/ImportExport/ImportExport";
import "./LabelsPage.css";
const LabelsPage: React.FC = () => {
const userPrefContext = useContext(UserPrefContext);
if (!userPrefContext) {
return (
);
}
const { labelMap, networkMap, setLabelMap } = userPrefContext;
const [searchFilter, setSearchFilter] = useState("");
const [typefilter, setTypefilter] = useState("All");
const [networkNameFilter, setNetworkNameFilter] = useState("All");
return (
<>
Labels
Label data is stored in your browser's local storage.
Network:
{networkMap.get(networkNameFilter) ||
defaultNetworks.get(networkNameFilter) ||
networkNameFilter}
setNetworkNameFilter("All")}>
All
{[
...new Set(
Object.values(labelMap).map((label) => label.networkName)
),
].map((labelName, index) => (
setNetworkNameFilter(labelName)}
key={index}
>
{labelName}
))}
Label Type:
{typefilter}
setTypefilter("All")}>
All
setTypefilter("Account")}>
Accounts
setTypefilter("Contract")}>
Contracts
setTypefilter("Transaction")}>
Transactions
setTypefilter("Tx Block")}>
Tx Blocks
setTypefilter("DS Block")}>
DS Blocks
) => {
setSearchFilter(e.target.value);
}}
/>
{Object.entries(labelMap).length === 0 ? (
x} dropCb={setLabelMap} />
) : (
Object.entries(labelMap)
.filter(([, v]) => typefilter === "All" || v.type === typefilter)
.filter(
([, v]) =>
networkNameFilter === "All" ||
v.networkName === networkNameFilter
)
.filter(
([, v]) =>
v.name && v.name.includes && v.name.includes(searchFilter)
)
.map(([k, v]) => (
))
)}
>
);
};
export default LabelsPage;