import { useState, useEffect } from "react"; import { Modal, ModalOverlay, ModalContent, ModalHeader, HStack, ModalCloseButton, ModalBody, Text, Input, Center, Button, Box, } from "@chakra-ui/react"; import { DeleteIcon } from "@chakra-ui/icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faSave } from "@fortawesome/free-solid-svg-icons"; import { slicedText } from "../../TransactionRequests"; const STORAGE_KEY = "address-book"; interface SavedAddressInfo { address: string; label: string; } interface AddressBookParams { isAddressBookOpen: boolean; closeAddressBook: () => void; showAddress: string; setShowAddress: (value: string) => void; setAddress: (value: string) => void; } function AddressBook({ isAddressBookOpen, closeAddressBook, showAddress, setShowAddress, setAddress, }: AddressBookParams) { const [newAddressInput, setNewAddressInput] = useState(""); const [newLableInput, setNewLabelInput] = useState(""); const [savedAddresses, setSavedAddresses] = useState([]); useEffect(() => { setSavedAddresses(JSON.parse(localStorage.getItem(STORAGE_KEY) ?? "[]")); }, []); useEffect(() => { setNewAddressInput(showAddress); }, [showAddress]); useEffect(() => { localStorage.setItem(STORAGE_KEY, JSON.stringify(savedAddresses)); }, [savedAddresses]); // reset label when modal is reopened useEffect(() => { setNewLabelInput(""); }, [isAddressBookOpen]); return ( Address Book setNewAddressInput(e.target.value)} /> setNewLabelInput(e.target.value)} />
{savedAddresses.length > 0 && ( Select from saved addresses: {savedAddresses.map(({ address, label }, i) => ( ))} )}
); } export default AddressBook;