From 4cd9802c12378c46dd32118043dac059550271d2 Mon Sep 17 00:00:00 2001 From: Jordi Planas Date: Thu, 19 Oct 2023 19:10:31 +0200 Subject: [PATCH 1/4] Added privacy policy --- .../src/components/dao-steps/Summary.tsx | 18 +- .../src/recoil/newDaoChecked/atom.ts | 12 +- .../newDaoChecked/checkedIsValidSelector.ts | 4 +- apps/abcswap/src/pages/Swap.tsx | 18 +- .../src/components/PrivacyPolicyModal.tsx | 293 ++++++++++++++++++ pkg/commons-ui/src/components/TermsModal.tsx | 16 +- 6 files changed, 334 insertions(+), 27 deletions(-) create mode 100644 pkg/commons-ui/src/components/PrivacyPolicyModal.tsx diff --git a/apps/abclaunch/src/components/dao-steps/Summary.tsx b/apps/abclaunch/src/components/dao-steps/Summary.tsx index 4a0b483..50f6367 100644 --- a/apps/abclaunch/src/components/dao-steps/Summary.tsx +++ b/apps/abclaunch/src/components/dao-steps/Summary.tsx @@ -1,8 +1,9 @@ -import { Accordion, AccordionButton, AccordionIcon, AccordionItem, AccordionPanel, Box, Checkbox, Table, Tbody, Td, Text, Th, Thead, Tr, VStack } from "@chakra-ui/react"; -import { useRecoilValue, useSetRecoilState } from "recoil"; +import { Accordion, AccordionButton, AccordionIcon, AccordionItem, AccordionPanel, Box, Checkbox, HStack, Table, Tbody, Td, Text, Th, Thead, Tr, VStack } from "@chakra-ui/react"; +import { useRecoilValue, useRecoilState } from "recoil"; import { newDaoNameState, newDaoVotingState, newDaoTokenState, newDaoTokenSupplyState, newDaoAbcState, newDaoCheckedState } from "../../recoil"; import { getCollateralTokenInfo } from "../../utils/token-info"; import TermsModal from "commons-ui/src/components/TermsModal" +import PrivacyPolicyModal from "commons-ui/src/components/PrivacyPolicyModal" export default function Summary() { const daoName = useRecoilValue(newDaoNameState); @@ -10,7 +11,8 @@ export default function Summary() { const tokenSettings = useRecoilValue(newDaoTokenState); const initialTotalSupply = useRecoilValue(newDaoTokenSupplyState); const abcConfig = useRecoilValue(newDaoAbcState); - const setChecked = useSetRecoilState(newDaoCheckedState); + const [newDaoChecks, setNewDaoChecks] = useRecoilState(newDaoCheckedState); + return ( @@ -114,7 +116,15 @@ export default function Summary() { Review all the settings. If there are any mistakes, fix them before proceeding. - setChecked(e.target.checked)}> + setNewDaoChecks({...newDaoChecks, daoInfoChecked: e.target.checked})}>I confirm that the above information is correct + setNewDaoChecks({...newDaoChecks, legalsChecked: e.target.checked})}> + + I agree to the + + and + + + ) diff --git a/apps/abclaunch/src/recoil/newDaoChecked/atom.ts b/apps/abclaunch/src/recoil/newDaoChecked/atom.ts index 1e974ed..b80d442 100644 --- a/apps/abclaunch/src/recoil/newDaoChecked/atom.ts +++ b/apps/abclaunch/src/recoil/newDaoChecked/atom.ts @@ -1,6 +1,14 @@ import { atom } from "recoil"; -export default atom({ +type NewDaoCheckedState = { + daoInfoChecked: boolean; + legalsChecked: boolean; +}; + +export default atom({ key: 'newDaoChecked', - default: false, + default: { + daoInfoChecked: false, + legalsChecked: false, + } }); diff --git a/apps/abclaunch/src/recoil/newDaoChecked/checkedIsValidSelector.ts b/apps/abclaunch/src/recoil/newDaoChecked/checkedIsValidSelector.ts index 476a97a..96ca0e0 100644 --- a/apps/abclaunch/src/recoil/newDaoChecked/checkedIsValidSelector.ts +++ b/apps/abclaunch/src/recoil/newDaoChecked/checkedIsValidSelector.ts @@ -4,7 +4,7 @@ import newDaoCheckedAtom from "./atom"; export default selector({ key: 'newDaoCheckedIsValid', get: ({get}) => { - const checked = get(newDaoCheckedAtom); - return checked; + const checks = get(newDaoCheckedAtom); + return checks.daoInfoChecked && checks.legalsChecked; }, }); diff --git a/apps/abcswap/src/pages/Swap.tsx b/apps/abcswap/src/pages/Swap.tsx index 19a4fcc..a0df9e5 100644 --- a/apps/abcswap/src/pages/Swap.tsx +++ b/apps/abcswap/src/pages/Swap.tsx @@ -9,11 +9,12 @@ import { useAccount, useBalance } from "wagmi"; import { useProcessTransactions } from "transactions-modal"; import { TokenSelector } from "commons-ui/src/components/TokenSelector"; import TermsModal from "commons-ui/src/components/TermsModal"; +import PrivacyPolicyModal from "commons-ui/src/components/PrivacyPolicyModal"; import { useAbcInfo } from "../hooks/useAbcInfo"; import { useBondingCurvePrice } from "../hooks/useBondingCurvePrice"; import useSwapSteps from "../hooks/useSwapSteps"; -import {formatWithFixedDecimals} from "commons-ui/src/utils" +import { formatWithFixedDecimals } from "commons-ui/src/utils" export default function SimpleConvert() { @@ -155,9 +156,9 @@ export default function SimpleConvert() { You Send - + - handleAmountChange(e.target.value)} w="100%" ml="10px" mt="50px" fontSize="50px" border="none" placeholder='0' _focusVisible={{boxShadow: 'none'}} /> + handleAmountChange(e.target.value)} w="100%" ml="10px" mt="50px" fontSize="50px" border="none" placeholder='0' _focusVisible={{ boxShadow: 'none' }} /> @@ -184,8 +185,8 @@ export default function SimpleConvert() { You Receive - - + + @@ -200,7 +201,12 @@ export default function SimpleConvert() { setTerms(e.target.checked)}> - + + I agree to the + + and + + diff --git a/pkg/commons-ui/src/components/PrivacyPolicyModal.tsx b/pkg/commons-ui/src/components/PrivacyPolicyModal.tsx new file mode 100644 index 0000000..74a75e6 --- /dev/null +++ b/pkg/commons-ui/src/components/PrivacyPolicyModal.tsx @@ -0,0 +1,293 @@ +import { + Modal, + ModalBody, + ModalCloseButton, + ModalContent, + ModalOverlay, + Text, + Link, + VStack, + Button, + Heading, + useDisclosure, + ListItem, + UnorderedList, +} from '@chakra-ui/react'; + +export default function PrivacyPolicyModal() { + + const { isOpen, onOpen, onClose } = useDisclosure() + + return ( + <> + Privacy Policy + + + + + + + Privacy Policy + + This privacy policy (“Privacy Policy”) provides an extensive insight into how ABC Labs (“ABC Labs”, “We”, “us”, “our”) and all platforms affiliated with ABC Labs, including but not limited to the ABC Swap and ABC Launch Websites, all their Subdomans and affiliated applications [abcswap.xyz ; launch.abcswap.xyz] (collectively “Platforms”) collect, share or use data about you (“user(s)”, “You”, “your”) with connection to the Platforms. + + + This Privacy Policy, together with our Terms of Service (“Terms”) governs the collection and processing of your data and is applicable to all the information collected through the Platforms, upon the use of such Platforms, any related services, marketing, events and/or any other locations that are in any way linked to this Privacy Policy (collectively, the “Services”). + + + Please read this Policy and our Terms carefully. By accessing our Platforms, you are consenting to the information collection and use practices described in this Privacy Policy. If you do not agree to this Privacy Policy, you should immediately cease to continue the use of the Services. + + + COLLECTION OF INFORMATION + + + What information is collected? + + + + When you use our Services, our servers may automatically log standard data provided by the browser in use and may include but is not limited to, Internet Protocol (IP) address, browser type and version, geolocation data, username, email, crypto wallet addresses, voting history, and DAO addresses you subscribe to. + + + In certain cases, your consent to use personal information may be required, which may be withdrawn at any time, by reaching out to us via the contact details provided in this Privacy Policy or our Platforms. We shall get in touch with you every time consent to process any data is required. + + + We may need to collect and process additional personal information in order to provide services, perform any contractual obligations, or form any/all legal compliance. In such cases, we shall get in contact with you. + + + + How is the information collected? + + + We process personal information that the user provides directly through various channels: + + + + We also automatically collect information from your computer or mobile device when you browse through our Platforms. This information may include but is not limited to: + + + the time and date of your visit; + + + domain name; + + + operating system; + + + your computer or mobile used to access our services; + + + browser version number; + + + search terms entered on the Platforms; + + + pages and links used to access the Platforms + + + the pages of our Platforms that you access; + + + IP Address. + + + the content viewed and features accessed on our Platforms + + + the web pages and the search terms entered on ABC Labs websites + + + + + + USE OF INFORMATION + + + We may use the collected information for the following purposes: + + + + providing services to you; + + + marketing and business activities in relation to our services, including but not limited to newsletters sending, updates, marketing communications and other information that may be of interest to you; + + + complying with legal and regulatory obligations; + + + exercising or defending any legal rights; + + + monitoring the use of Platforms for business purposes which may include analysis of usage, measurement of site performance and generation of marketing reports; + + + for legitimate business interests, such as business research and analysis, managing our Platforms and Services; + + + looking into any complaints or queries; + + + preventing and responding to actual or potential fraud or illegal activities; + + + reviewing and processing any job application in case any user has applied for a position; + + + + operating our Platforms, customer support, marketing and research services related to the Platforms; + + + + cookies used are strictly necessary for the smooth functioning of the Platforms and Services. + + + + + We do not anticipate using your information for any purposes apart from business purposes. Our purposes include, but are not limited to: + + + + Operating and managing the Services; performing services requested by you such as responding to your comments, questions, and requests, and providing information support; sending you technical notices, updates, security alerts, information regarding changes to our policies, and support and administrative messages; detecting, preventing, and addressing fraud, breach of Terms, and threats, or harm; and compliance with legal and regulatory requirements. + + + Protecting the security and integrity of the Services; improving the Services and other websites, apps, products and services. + + + Notwithstanding the above, we may use information that does not identify you (including information that has been aggregated or de-identified) for any purpose except as prohibited by applicable law. + + + + SHARING AND DISCLOSURE OF INFORMATION + + + + We share personal information with our affiliates and third-party service providers that assist us in providing service. This may include, but is not limited to, sharing information with third-party contractors, bound by obligations of confidentiality, in connection with the processing of your personal information for the purposes described in this Privacy Policy, such as but not limited to, IT and communications service providers, third parties relevant to the services that we provide including regulators, authorities and governmental institutions. + + + We may transfer personal information outside Europe. In such cases, we shall ensure that it is protected and transferred in a manner consistent with legal requirements applicable to the information. + + + + SECURITY OF INFORMATION + + + + We ensure that your personal information collected by us is subject to appropriate security measures. + + + Professional Advisors - we share information for audits and legal compliances with our professional advisors. + + + Security and Compelled Disclosure - Information stored by us is shared with public officials for legal compliance enforcement and authorised security concerns. + + + We only store your information for a limited period of time and strictly only for as long as is necessary for the relevant purpose and/or for as long as it is necessary to comply with legal obligations, laws or regulations. + + + Fulfilling your Requests - we may share your information with you with your consent at your request or direction. + + + Notwithstanding the above, we may share information that does not identify you (including information that has been aggregated or de-identified) except as prohibited by applicable law. + + + + USE OF COOKIES + + + + Cookies are sent to your browser from the Platforms and stored on your device. Tracking technologies such as beacons, tags, and scripts are used to collect and track information and to improve and analyze our Services. + + + We may use and integrate third-party applications with our Platforms to improve the user experience. Cookies by such a third party may be placed on your browsing device, and they can be managed by checking the third party’s website for more information about cookie management and how to "opt-out" of receiving cookies from them. + + + You may instruct your browser to refuse all cookies or to indicate when a cookie is being sent. However, if you do not accept cookies, you may not be able to use some portions of our Service. + + + + EUROPEAN UNION / UNITED KINGDOM ADDENDUM + + + STORING OF DATA + + + + The personal information collected by us may be transferred to and processed in countries outside the European Economic Area (“EEA”) and the United Kingdom (“UK”). We will take all necessary steps to ensure that your personal information is treated securely and in accordance with this Privacy Policy. + + + For any transfers of data outside the EEA or the UK, the data transfer will be under the European Commission’s model contracts for the transfer of personal information to third countries (i.e., the standard contractual clauses) (the “Model Clauses”), or any equivalent contracts issued by the relevant competent authority of the UK. + + + + DATA PROTECTION RIGHTS‍ + + + You are entitled to a certain number of legal rights concerning the personal information we may hold about you. These rights can be exercised at any time by contacting us. + + + The following rights apply regarding the collection of your personal information: + + + + Right to Access: you have the right to access your personal information stored with us, how we use it, and who we share it with. + + + Right of Portability: you have the right to receive a copy of all your personal information stored by us in a structured, commonly used and machine-readable format and/or request transfer of the same to a third party, in certain circumstances and with certain exceptions. + + + Right to Rectification: you have the right to correct any inaccurate personal information. + + + Right to Erasure: in certain circumstances, you have the right to delete your personal information stored with us. There may be circumstances where you ask us to erase personal information, but we are legally entitled to retain it; in such circumstances, the same shall not be erased. + + + Right to Restrict Processing: you have the right to require us to stop processing the personal information we hold about you, other than for storage purposes, in certain circumstances. + + + Right to Objection: you have the right to object to our processing of your personal information. There may be circumstances where you object to or asks us to restrict the processing of personal information, but we are legally entitled to refuse that request. + + + Objection to Marketing: you can object to marketing at any time by opting out using the unsubscribe/opt-out function displayed in our communications to you. + + + Withdrawal of Consent: Where we rely on consent to process your personal information, you have the right to withdraw this consent at any time In certain circumstances it may be lawful for us to continue processing without consent if we have a legitimate reason (other than consent) for doing so. + + + The aforementioned rights are not absolute and may be limited by law. + + + + REQUESTS AND COMPLAINTS + + + + + If you have complaints about how we process your personal information, please contact us at info@abcswap.xyz and we will respond to your request as soon as possible. + + + If you think we have infringed data protection laws, you may file a claim with the data protection supervisory authority in the EEA country of your residence. + + + + + CONTACT US + + + For further information on the collection, use, disclosure, transfer or processing of personal information or the exercise of any of the rights listed above, please contact ABC Labs by sending an email to info@abcswap.xyz. + + + + + + + + ) +} diff --git a/pkg/commons-ui/src/components/TermsModal.tsx b/pkg/commons-ui/src/components/TermsModal.tsx index e706053..532b954 100644 --- a/pkg/commons-ui/src/components/TermsModal.tsx +++ b/pkg/commons-ui/src/components/TermsModal.tsx @@ -7,7 +7,6 @@ import { Text, Link, VStack, - HStack, Button, Heading, useDisclosure, @@ -16,23 +15,14 @@ import { UnorderedList, } from '@chakra-ui/react'; -interface TransactionModalProps { - location: "swap" | "launch"; -} - -export default function TransactionModal({ location }: TransactionModalProps) { +export default function TermsModal() { const { isOpen, onOpen, onClose } = useDisclosure() - const disclaimerText = location === "swap" ? 'I have read and agree to the' : 'I confirm that the above information is correct and that I have read and agree to the'; - - return ( <> - - {disclaimerText} - Terms of Service - + Terms of Service + From 1239b1712b274894d00903043ce7a389e181530a Mon Sep 17 00:00:00 2001 From: Jordi Planas Date: Thu, 19 Oct 2023 19:13:32 +0200 Subject: [PATCH 2/4] Fixed text terms modal --- pkg/commons-ui/src/components/TermsModal.tsx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pkg/commons-ui/src/components/TermsModal.tsx b/pkg/commons-ui/src/components/TermsModal.tsx index 532b954..0150bc4 100644 --- a/pkg/commons-ui/src/components/TermsModal.tsx +++ b/pkg/commons-ui/src/components/TermsModal.tsx @@ -57,10 +57,13 @@ export default function TermsModal() { b) Create a new DAO with an Augmented Bonding Curve c) Create a DAO vote to attach an Augmented Bonding Curve to an existing DAO + While the ABC Launch offers the tools to facilitate these activities, it is your responsibility to understand the associated risks and implications of creating or participating in an Augmented Bonding Curve. ABC Swap - While the ABC Launch offers the tools to facilitate these activities, it is your responsibility to understand the associated risks and implications of creating or participating in an Augmented Bonding Curve. + + The ABC Swap is designed to facilitate the swapping of tokens launched and governed by Augmented Bonding Curves ("ABC Tokens"). The primary functions and offerings of ABC Swap include but are not limited to: + a) Swapping ABC Tokens: Users can swap an ABC Token against the reserve currency of that ABC or other tokens. b) Wallet integration: ABC Swap supports direct integration with blockchain wallets, allowing users to manage and execute transactions seamlessly. @@ -260,7 +263,7 @@ export default function TermsModal() { - 8. Prohibited activities + 8. Prohibited Activities You agree not to engage in, or attempt to engage in, any of the following categories of prohibited activities in connection to your access and use of the Services: @@ -308,7 +311,7 @@ export default function TermsModal() { The services are non-custodial. When you deposit digital assets into any smart contract, you retain control over those digital assets at all times. The private key associated with the Ethereum address from which you transfer digital assets is the only private key that can control the digital assets you transfer into the smart contracts. You may withdraw digital assets from any smart contract only to the Ethereum address from which you deposited the digital assets. - All intellectual property rights, including but not limited to trademarks, logos, and content, related to Projects included in the AB Launch, and associated materials, are owned by their respective owners. You agree not to reproduce, distribute, or use any intellectual property without prior written consent from the respective owner. + All intellectual property rights, including but not limited to trademarks, logos, and content, related to Projects included in the ABC Launch, and associated materials, are owned by their respective owners. You agree not to reproduce, distribute, or use any intellectual property without prior written consent from the respective owner. @@ -336,10 +339,10 @@ export default function TermsModal() { While using the Services we may collect some personal data in order to provide our services, including your blockchain wallet address, completed transaction hashes and token IDs. - To comply with AML and KYC regulations, you may be required to provide personal information and documentation. We reserve the right to conduct AML and KYC checks on participants and may refuse participation to anyone who fails to meet the required standards. We use the information we collect to detect, prevent, and mitigate financial crime and other illicit or harmful activities on the Services . For these purposes, we may share the information we collect with blockchain analytics providers. We share information with these service providers only so that they can help us promote the safety, security, and integrity of the Services. + To comply with AML and KYC regulations, you may be required to provide personal information and documentation. We reserve the right to conduct AML and KYC checks on participants and may refuse participation to anyone who fails to meet the required standards. We use the information we collect to detect, prevent, and mitigate financial crime and other illicit or harmful activities on the Services. For these purposes, we may share the information we collect with blockchain analytics providers. We share information with these service providers only so that they can help us promote the safety, security, and integrity of the Services. - We may use third-party service providers which may receive or independently obtain your personal information from publicly-available sources. By accessing and using the Services , you understand and consent to our data practices and our service providers' treatment of your information. + We may use third-party service providers which may receive or independently obtain your personal information from publicly-available sources. By accessing and using the Services, you understand and consent to our data practices and our service providers' treatment of your information. For more information please visit our privacy policy at molecule.to/privacy-policy From 8551ac004f9d9e3524618812752e9b4ddaeab4d9 Mon Sep 17 00:00:00 2001 From: Pingu Date: Thu, 19 Oct 2023 19:38:09 +0200 Subject: [PATCH 3/4] use local state on summary to: - Start checkboxes on false - Not reload component after first render --- .../src/components/dao-steps/Summary.tsx | 22 ++++++++++++++----- .../src/components/PrivacyPolicyModal.tsx | 2 +- pkg/commons-ui/src/components/TermsModal.tsx | 2 +- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/apps/abclaunch/src/components/dao-steps/Summary.tsx b/apps/abclaunch/src/components/dao-steps/Summary.tsx index 50f6367..a7ba0c9 100644 --- a/apps/abclaunch/src/components/dao-steps/Summary.tsx +++ b/apps/abclaunch/src/components/dao-steps/Summary.tsx @@ -1,9 +1,10 @@ import { Accordion, AccordionButton, AccordionIcon, AccordionItem, AccordionPanel, Box, Checkbox, HStack, Table, Tbody, Td, Text, Th, Thead, Tr, VStack } from "@chakra-ui/react"; -import { useRecoilValue, useRecoilState } from "recoil"; +import { useRecoilValue, useRecoilState, useSetRecoilState } from "recoil"; import { newDaoNameState, newDaoVotingState, newDaoTokenState, newDaoTokenSupplyState, newDaoAbcState, newDaoCheckedState } from "../../recoil"; import { getCollateralTokenInfo } from "../../utils/token-info"; import TermsModal from "commons-ui/src/components/TermsModal" import PrivacyPolicyModal from "commons-ui/src/components/PrivacyPolicyModal" +import { useEffect, useState } from "react"; export default function Summary() { const daoName = useRecoilValue(newDaoNameState); @@ -11,7 +12,18 @@ export default function Summary() { const tokenSettings = useRecoilValue(newDaoTokenState); const initialTotalSupply = useRecoilValue(newDaoTokenSupplyState); const abcConfig = useRecoilValue(newDaoAbcState); - const [newDaoChecks, setNewDaoChecks] = useRecoilState(newDaoCheckedState); + const setNewDaoChecksGlobal = useSetRecoilState(newDaoCheckedState); + const [newDaoChecks, setNewDaoChecks] = useState({ + daoInfoChecked: false, + legalsChecked: false + }); + + useEffect(()=> { + setNewDaoChecksGlobal({ + daoInfoChecked: newDaoChecks.daoInfoChecked, + legalsChecked: newDaoChecks.legalsChecked + }) + }, [newDaoChecks]) return ( @@ -116,12 +128,12 @@ export default function Summary() { Review all the settings. If there are any mistakes, fix them before proceeding. - setNewDaoChecks({...newDaoChecks, daoInfoChecked: e.target.checked})}>I confirm that the above information is correct + setNewDaoChecks({...newDaoChecks, daoInfoChecked: e.target.checked})}>I confirm that the above information is correct setNewDaoChecks({...newDaoChecks, legalsChecked: e.target.checked})}> - I agree to the + I agree to the - and + and diff --git a/pkg/commons-ui/src/components/PrivacyPolicyModal.tsx b/pkg/commons-ui/src/components/PrivacyPolicyModal.tsx index 74a75e6..b5153dc 100644 --- a/pkg/commons-ui/src/components/PrivacyPolicyModal.tsx +++ b/pkg/commons-ui/src/components/PrivacyPolicyModal.tsx @@ -20,7 +20,7 @@ export default function PrivacyPolicyModal() { return ( <> - Privacy Policy + Privacy Policy diff --git a/pkg/commons-ui/src/components/TermsModal.tsx b/pkg/commons-ui/src/components/TermsModal.tsx index 0150bc4..dd3f47f 100644 --- a/pkg/commons-ui/src/components/TermsModal.tsx +++ b/pkg/commons-ui/src/components/TermsModal.tsx @@ -21,7 +21,7 @@ export default function TermsModal() { return ( <> - Terms of Service + Terms of Service From e7f6cc021baf8e4e75b29b4c8cd2a4ca1035bb96 Mon Sep 17 00:00:00 2001 From: Pingu Date: Thu, 19 Oct 2023 19:45:32 +0200 Subject: [PATCH 4/4] remove unused import --- apps/abclaunch/src/components/dao-steps/Summary.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/abclaunch/src/components/dao-steps/Summary.tsx b/apps/abclaunch/src/components/dao-steps/Summary.tsx index a7ba0c9..bc66213 100644 --- a/apps/abclaunch/src/components/dao-steps/Summary.tsx +++ b/apps/abclaunch/src/components/dao-steps/Summary.tsx @@ -1,10 +1,11 @@ import { Accordion, AccordionButton, AccordionIcon, AccordionItem, AccordionPanel, Box, Checkbox, HStack, Table, Tbody, Td, Text, Th, Thead, Tr, VStack } from "@chakra-ui/react"; -import { useRecoilValue, useRecoilState, useSetRecoilState } from "recoil"; -import { newDaoNameState, newDaoVotingState, newDaoTokenState, newDaoTokenSupplyState, newDaoAbcState, newDaoCheckedState } from "../../recoil"; -import { getCollateralTokenInfo } from "../../utils/token-info"; -import TermsModal from "commons-ui/src/components/TermsModal" -import PrivacyPolicyModal from "commons-ui/src/components/PrivacyPolicyModal" +import PrivacyPolicyModal from "commons-ui/src/components/PrivacyPolicyModal"; +import TermsModal from "commons-ui/src/components/TermsModal"; import { useEffect, useState } from "react"; +import { useRecoilValue, useSetRecoilState } from "recoil"; +import { newDaoAbcState, newDaoCheckedState, newDaoNameState, newDaoTokenState, newDaoTokenSupplyState, newDaoVotingState } from "../../recoil"; +import { getCollateralTokenInfo } from "../../utils/token-info"; + export default function Summary() { const daoName = useRecoilValue(newDaoNameState);