diff --git a/src/components/AccountDashboard/AccountDashboard.tsx b/src/components/AccountDashboard/AccountDashboard.tsx index fe39837e82..ad5aad3b95 100644 --- a/src/components/AccountDashboard/AccountDashboard.tsx +++ b/src/components/AccountDashboard/AccountDashboard.tsx @@ -2,6 +2,7 @@ import { SettingOutlined } from '@ant-design/icons' import { t, Trans } from '@lingui/macro' import { Button, Tabs } from 'antd' import ActivityList from 'components/ActivityList' +import { SocialButton } from 'components/buttons/SocialButton' import EthereumAddress from 'components/EthereumAddress' import Grid from 'components/Grid' import { Etherscan } from 'components/icons/Etherscan' @@ -11,7 +12,6 @@ import Paragraph from 'components/Paragraph' import SocialLinks from 'components/Project/ProjectHeader/SocialLinks' import ProjectCard from 'components/ProjectCard' import ProjectLogo from 'components/ProjectLogo' -import { SocialButton } from 'components/SocialButton' import WalletContributionCard from 'components/WalletContributionCard' import { OrderDirection, diff --git a/src/components/Create/components/pages/ReconfigurationRules/components/CustomRuleCard.tsx b/src/components/Create/components/pages/ReconfigurationRules/components/CustomRuleCard.tsx index 7c2cf42057..09330af6a5 100644 --- a/src/components/Create/components/pages/ReconfigurationRules/components/CustomRuleCard.tsx +++ b/src/components/Create/components/pages/ReconfigurationRules/components/CustomRuleCard.tsx @@ -1,8 +1,8 @@ import { t } from '@lingui/macro' import { Form } from 'antd' import { Selection } from 'components/Create/components/Selection' -import { CustomStrategyInput } from 'components/ReconfigurationStrategy/CustomStrategyInput' -import { inputMustExistRule, inputMustBeEthAddressRule } from 'utils/antdRules' +import { CustomStrategyInput } from 'components/inputs/ReconfigurationStrategy/CustomStrategyInput' +import { inputMustBeEthAddressRule, inputMustExistRule } from 'utils/antdRules' export const CustomRuleCard = () => { return ( diff --git a/src/components/Create/components/pages/ReviewDeploy/ReviewDeployPage.tsx b/src/components/Create/components/pages/ReviewDeploy/ReviewDeployPage.tsx index e4567c8815..fa51ef8df8 100644 --- a/src/components/Create/components/pages/ReviewDeploy/ReviewDeployPage.tsx +++ b/src/components/Create/components/pages/ReviewDeploy/ReviewDeployPage.tsx @@ -4,8 +4,8 @@ import { Checkbox, Form } from 'antd' import { Callout } from 'components/Callout' import { useDeployProject } from 'components/Create/hooks/DeployProject' import ExternalLink from 'components/ExternalLink' -import { emitConfirmationDeletionModal } from 'components/ProjectDashboard/utils/modals' import TransactionModal from 'components/modals/TransactionModal' +import { emitConfirmationDeletionModal } from 'components/v2v3/V2V3Project/ProjectDashboard/utils/modals' import { TERMS_OF_SERVICE_URL } from 'constants/links' import { useWallet } from 'hooks/Wallet' import useMobile from 'hooks/useMobile' diff --git a/src/components/Create/components/pages/ReviewDeploy/components/DeploySuccess/DeploySuccess.tsx b/src/components/Create/components/pages/ReviewDeploy/components/DeploySuccess/DeploySuccess.tsx index ee45818f92..3966a80168 100644 --- a/src/components/Create/components/pages/ReviewDeploy/components/DeploySuccess/DeploySuccess.tsx +++ b/src/components/Create/components/pages/ReviewDeploy/components/DeploySuccess/DeploySuccess.tsx @@ -3,8 +3,7 @@ import { ArrowRightIcon } from '@heroicons/react/24/solid' import { Trans, t } from '@lingui/macro' import { Button } from 'antd' import ExternalLink from 'components/ExternalLink' -import { XLButton } from 'components/XLButton' -import { NEW_DEPLOY_QUERY_PARAM } from 'components/v2v3/V2V3Project/modals/NewDeployModal' +import { XLButton } from 'components/buttons/XLButton' import { readNetwork } from 'constants/networks' import { useWallet } from 'hooks/Wallet' import { NetworkName } from 'models/networkName' @@ -13,6 +12,8 @@ import { useRouter } from 'next/router' import { useCallback, useMemo, useState } from 'react' import DeploySuccessHero from '/public/assets/images/create-success-hero.webp' +const NEW_DEPLOY_QUERY_PARAM = 'np' + export const DeploySuccess = ({ projectId }: { projectId: number }) => { console.info('Deploy: SUCCESS', projectId) const router = useRouter() diff --git a/src/components/Home/FaqList/FaqList.tsx b/src/components/Home/FaqList/FaqList.tsx deleted file mode 100644 index 0b76389e3f..0000000000 --- a/src/components/Home/FaqList/FaqList.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { Collapse } from 'antd' -import QAs from './QAs' - -export function FaqList() { - const QAsList = QAs() - - return ( - - {QAsList.map((qa, i) => ( - - {qa.a &&
{qa.a}
} -
- ))} -
- ) -} diff --git a/src/components/Home/FaqList/index.ts b/src/components/Home/FaqList/index.ts deleted file mode 100644 index 1439ec7554..0000000000 --- a/src/components/Home/FaqList/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { FaqList } from './FaqList' diff --git a/src/components/Home/HowJuiceboxWorksSection/HowJuiceboxWorksSection.tsx b/src/components/Home/HowJuiceboxWorksSection/HowJuiceboxWorksSection.tsx index 0632c5c9d4..c5b10ca444 100644 --- a/src/components/Home/HowJuiceboxWorksSection/HowJuiceboxWorksSection.tsx +++ b/src/components/Home/HowJuiceboxWorksSection/HowJuiceboxWorksSection.tsx @@ -7,7 +7,7 @@ import { Trans, t } from '@lingui/macro' import ExternalLink from 'components/ExternalLink' import { SectionContainer } from 'components/Home/SectionContainer' import { SectionHeading } from 'components/Home/SectionHeading' -import { XLButton } from 'components/XLButton' +import { XLButton } from 'components/buttons/XLButton' import Image from 'next/image' import Link from 'next/link' import sassyBlueberry from '/public/assets/images/sassy-blueberry.webp' diff --git a/src/components/Home/JuicyPicksSection/JuicyPicksSection.tsx b/src/components/Home/JuicyPicksSection/JuicyPicksSection.tsx index e4e67df3be..3f2c95d3d5 100644 --- a/src/components/Home/JuicyPicksSection/JuicyPicksSection.tsx +++ b/src/components/Home/JuicyPicksSection/JuicyPicksSection.tsx @@ -7,7 +7,7 @@ import { useFetchJuicyPicks } from 'components/Home/JuicyPicksSection/hooks/useJ import { ProjectCarousel } from 'components/Home/ProjectCarousel' import { SectionContainer } from 'components/Home/SectionContainer' import { SectionHeading } from 'components/Home/SectionHeading' -import { XLButton } from 'components/XLButton' +import { XLButton } from 'components/buttons/XLButton' import { useMedia } from 'contexts/Theme/useMedia' import Link from 'next/link' diff --git a/src/components/Home/SuccessStoriesSection/SuccessStoriesSection.tsx b/src/components/Home/SuccessStoriesSection/SuccessStoriesSection.tsx index 0814bb8c8d..5dd8dd8c4e 100644 --- a/src/components/Home/SuccessStoriesSection/SuccessStoriesSection.tsx +++ b/src/components/Home/SuccessStoriesSection/SuccessStoriesSection.tsx @@ -3,7 +3,7 @@ import { ProjectCarousel } from 'components/Home/ProjectCarousel' import { SectionContainer } from 'components/Home/SectionContainer' import { SectionHeading } from 'components/Home/SectionHeading' import { SuccessStoriesCard } from 'components/Home/SuccessStoriesSection/SuccessStoriesCard' -import { XLButton } from 'components/XLButton' +import { XLButton } from 'components/buttons/XLButton' import { CASE_STUDY_PROJECTS } from 'constants/successStoryProjects' import { useMedia } from 'contexts/Theme/useMedia' import { useDBProjectsQuery } from 'hooks/useProjects' diff --git a/src/components/Home/TopSection/TopSection.tsx b/src/components/Home/TopSection/TopSection.tsx index 02a17a5764..e0aab992a2 100644 --- a/src/components/Home/TopSection/TopSection.tsx +++ b/src/components/Home/TopSection/TopSection.tsx @@ -9,7 +9,7 @@ import { ProjectCarousel } from 'components/Home/ProjectCarousel' import { SectionContainer } from 'components/Home/SectionContainer' import { SectionHeading } from 'components/Home/SectionHeading' import { ProjectTag } from 'components/ProjectTags/ProjectTag' -import { XLButton } from 'components/XLButton' +import { XLButton } from 'components/buttons/XLButton' import { HOMEPAGE } from 'constants/fathomEvents' import { useTrendingProjects } from 'hooks/useProjects' import { trackFathomGoal } from 'lib/fathom' diff --git a/src/components/JuiceVideo/JuiceVideoOrImgPreview.tsx b/src/components/JuiceVideo/JuiceVideoOrImgPreview.tsx index ce06e08146..929ea1e322 100644 --- a/src/components/JuiceVideo/JuiceVideoOrImgPreview.tsx +++ b/src/components/JuiceVideo/JuiceVideoOrImgPreview.tsx @@ -5,7 +5,7 @@ import { ImageProps } from 'next/image' import { stopPropagation } from 'react-stop-propagation' import { fileTypeIsVideo } from 'utils/nftRewards' -export const JUICE_IMG_PREVIEW_CONTAINER_CLASS = +const JUICE_IMG_PREVIEW_CONTAINER_CLASS = 'fixed top-0 left-0 z-[10000] flex h-full w-full items-center justify-center overflow-auto bg-[rgba(0,0,0,0.8)] p-5 cursor-default' export function JuiceVideoOrImgPreview({ diff --git a/src/components/NftRewards/NftPostPayModal.tsx b/src/components/NftRewards/NftPostPayModal.tsx index 02cb837533..314bd8a0fc 100644 --- a/src/components/NftRewards/NftPostPayModal.tsx +++ b/src/components/NftRewards/NftPostPayModal.tsx @@ -3,8 +3,6 @@ import Modal from 'antd/lib/modal/Modal' import { NftPostPayModalConfig } from 'models/nftRewards' import { withHttps } from 'utils/externalLink' -export const NFT_PAYMENT_CONFIRMED_QUERY_PARAM = 'nft_s' - export function NftPostPayModal({ open, config, diff --git a/src/components/NftRewards/NftRewardsSection.tsx b/src/components/NftRewards/NftRewardsSection.tsx deleted file mode 100644 index 54af127c65..0000000000 --- a/src/components/NftRewards/NftRewardsSection.tsx +++ /dev/null @@ -1,181 +0,0 @@ -import { t, Trans } from '@lingui/macro' -import { - NFT_PAYMENT_CONFIRMED_QUERY_PARAM, - NftPostPayModal, -} from 'components/NftRewards/NftPostPayModal' -import { PayProjectFormContext } from 'components/Project/PayProjectForm/payProjectFormContext' -import SectionHeader from 'components/SectionHeader' -import { DEFAULT_ALLOW_OVERSPENDING } from 'constants/transactionDefaults' -import { NftRewardsContext } from 'contexts/NftRewards/NftRewardsContext' -import { CurrencyContext } from 'contexts/shared/CurrencyContext' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { useCurrencyConverter } from 'hooks/useCurrencyConverter' -import { useContext } from 'react' -import { fromWad } from 'utils/format/formatNumber' -import { sortNftsByContributionFloor, sumTierFloors } from 'utils/nftRewards' -import { useModalFromUrlQuery } from '../modals/hooks/useModalFromUrlQuery' -import { NftTierCard } from './NftTierCard' - -function RewardTiersLoadingSkeleton() { - return ( -
- {[...Array(3)]?.map((_, index) => ( -
- null} onDeselect={() => null} /> -
- ))} -
- ) -} - -function Header() { - return ( - <> - - - Pay this project to receive NFTs. - - - ) -} - -export function NftRewardsSection() { - const { - nftRewards: { rewardTiers }, - loading: nftsLoading, - } = useContext(NftRewardsContext) - const { - currencies: { ETH }, - } = useContext(CurrencyContext) - const { form: payProjectForm } = useContext(PayProjectFormContext) - const { projectMetadata } = useContext(ProjectMetadataContext) - - const { visible: nftPostPayModalVisible, hide: hideNftPostPayModal } = - useModalFromUrlQuery(NFT_PAYMENT_CONFIRMED_QUERY_PARAM) - const { - payAmount, - payMetadata, - payInCurrency, - setPayAmount, - setPayInCurrency, - setPayMetadata, - validatePayAmount, - } = payProjectForm ?? {} - - const converter = useCurrencyConverter() - const payAmountETH = - payInCurrency === ETH ? payAmount : fromWad(converter.usdToWei(payAmount)) - - const handleTierDeselect = ( - tierId: number | undefined, - quantity: number, // quantity to deselect. Remove all instances of tierId if quantity=0 - ) => { - if (tierId === undefined || !rewardTiers || !payMetadata) return - - let count = 0 - const newSelectedTierIds = (payMetadata?.tierIdsToMint ?? []).filter(id => { - // remove all instances - if (!quantity) { - return id !== tierId - } - // remove the specified number of instances of tierId - if (count < quantity && id === tierId) { - count += 1 - return false - } - return true - }) - - setPayMetadata?.({ - tierIdsToMint: newSelectedTierIds, - }) - - const newPayAmount = sumTierFloors( - rewardTiers, - newSelectedTierIds, - ).toString() - - setPayAmount?.(newPayAmount) - validatePayAmount?.(newPayAmount) - } - - const handleTierSelect = ( - tierId: number | undefined, - quantity: number, // quantity to select - ) => { - if (!tierId || !rewardTiers) return - - const newSelectedTierIds = (payMetadata?.tierIdsToMint ?? []).concat( - Array(quantity).fill(tierId), - ) - - setPayMetadata?.({ - tierIdsToMint: newSelectedTierIds, - allowOverspending: DEFAULT_ALLOW_OVERSPENDING, - }) - - setPayInCurrency?.(ETH) - - // sets pay input when selected nft's sum to greater than the current pay input amount - const sumSelectedTiers = sumTierFloors(rewardTiers, newSelectedTierIds) - if (sumSelectedTiers > parseFloat(payAmountETH ?? '0')) { - const newPayAmount = sumSelectedTiers.toString() - setPayAmount?.(newPayAmount) - validatePayAmount?.(newPayAmount) - } - } - - const renderRewardTiers = rewardTiers - ? sortNftsByContributionFloor(rewardTiers) - : [] - - return ( -
-
- - {nftsLoading ? ( - - ) : ( -
-
- {renderRewardTiers?.map(rewardTier => ( -
- id === rewardTier.id ?? -1, - ).length - } - maxQuantity={rewardTier.remainingSupply} - onSelect={(quantity = 1) => - handleTierSelect(rewardTier.id, quantity) - } - onDeselect={(quantity = 0) => - handleTierDeselect(rewardTier.id, quantity) - } - /> -
- ))} -
-
- )} - - {projectMetadata?.nftPaymentSuccessModal?.content && ( - - )} -
- ) -} diff --git a/src/components/Project/FundingCycleSection.tsx b/src/components/Project/FundingCycleSection.tsx index c5aedce8a2..d9c29c42ca 100644 --- a/src/components/Project/FundingCycleSection.tsx +++ b/src/components/Project/FundingCycleSection.tsx @@ -1,11 +1,9 @@ import { Trans } from '@lingui/macro' - -import { useState } from 'react' - import SectionHeader from 'components/SectionHeader' import { Tab } from 'components/Tab' +import { useState } from 'react' -export type TabType = { +type TabType = { key: string label: string | JSX.Element content: JSX.Element diff --git a/src/components/Project/PayProjectForm/hooks/usePayProjectForm.ts b/src/components/Project/PayProjectForm/hooks/usePayProjectForm.ts index 0f390f3ae0..52dba77787 100644 --- a/src/components/Project/PayProjectForm/hooks/usePayProjectForm.ts +++ b/src/components/Project/PayProjectForm/hooks/usePayProjectForm.ts @@ -7,20 +7,18 @@ import { CurrencyOption } from 'models/currencyOption' import { Dispatch, SetStateAction, useContext, useState } from 'react' import { parseWad } from 'utils/format/formatNumber' -export interface JB721DELAGATE_V3_PAY_METADATA { +interface JB721DELAGATE_V3_PAY_METADATA { tierIdsToMint: number[] dontMint?: boolean expectMintFromExtraFunds?: boolean dontOverspend?: boolean } -export interface JB721DELAGATE_V3_1_PAY_METADATA { +interface JB721DELAGATE_V3_1_PAY_METADATA { tierIdsToMint: number[] allowOverspending?: boolean } -export type JB721DELAGATE_V3_2_PAY_METADATA = JB721DELAGATE_V3_1_PAY_METADATA - type PayMetadata = | JB721DELAGATE_V3_PAY_METADATA | JB721DELAGATE_V3_1_PAY_METADATA // in future, maybe more diff --git a/src/components/Project/ProjectHeader/SocialLinks.tsx b/src/components/Project/ProjectHeader/SocialLinks.tsx index e0a497a8f1..f853d1f847 100644 --- a/src/components/Project/ProjectHeader/SocialLinks.tsx +++ b/src/components/Project/ProjectHeader/SocialLinks.tsx @@ -1,7 +1,7 @@ import { GlobalOutlined, TwitterOutlined } from '@ant-design/icons' +import { SocialButton } from 'components/buttons/SocialButton' import Discord from 'components/icons/Discord' import Telegram from 'components/icons/Telegram' -import { SocialButton } from 'components/SocialButton' import useMobile from 'hooks/useMobile' import { twMerge } from 'tailwind-merge' diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/PayoutsPopupMenu.tsx b/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/PayoutsPopupMenu.tsx deleted file mode 100644 index 3e67867c8d..0000000000 --- a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/PayoutsPopupMenu.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { ArrowUpTrayIcon } from '@heroicons/react/24/outline' -import { Trans } from '@lingui/macro' -import { useCurrentUpcomingPayoutSplits } from 'components/ProjectDashboard/components/CyclesPayoutsPanel/hooks/useCurrentUpcomingPayoutSplits' -import { PopupMenu } from 'components/ui/PopupMenu' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useContext } from 'react' -import { useExportSplitsToCsv } from '../../../../../hooks/useExportSplitsToCsv' - -export const PayoutsPopupMenu = ({ - type, -}: { - type: 'current' | 'upcoming' -}) => { - const { splits: payoutSplits } = useCurrentUpcomingPayoutSplits(type) - const { fundingCycle } = useContext(V2V3ProjectContext) - const fcNumber = fundingCycle - ? type === 'current' - ? fundingCycle.number.toNumber() - : fundingCycle.number.toNumber() + 1 - : undefined - const { exportSplitsToCsv } = useExportSplitsToCsv( - payoutSplits ?? [], - 'payouts', - fcNumber, - ) - if (!payoutSplits?.length) return null - - return ( - - - - Export payout CSV - - - ), - onClick: exportSplitsToCsv, - }, - ]} - /> - ) -} diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/hooks/useConfigurationPanel/useConfigurationPanel.ts b/src/components/ProjectDashboard/components/CyclesPayoutsPanel/hooks/useConfigurationPanel/useConfigurationPanel.ts deleted file mode 100644 index 81d94d1629..0000000000 --- a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/hooks/useConfigurationPanel/useConfigurationPanel.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { useCycleSection } from './useCycleSection' -import { useOtherRulesSection } from './useOtherRulesSection' -import { useTokenSection } from './useTokenSection' - -export const useConfigurationPanel = (type: 'current' | 'upcoming') => { - const cycle = useCycleSection(type) - const token = useTokenSection(type) - const otherRules = useOtherRulesSection(type) - - return { - cycle, - token, - otherRules, - } -} diff --git a/src/components/ProjectDashboard/components/TokensPanel/components/ReservedTokensPopupMenu.tsx b/src/components/ProjectDashboard/components/TokensPanel/components/ReservedTokensPopupMenu.tsx deleted file mode 100644 index a61325f332..0000000000 --- a/src/components/ProjectDashboard/components/TokensPanel/components/ReservedTokensPopupMenu.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { ArrowUpTrayIcon } from '@heroicons/react/24/outline' -import { Trans } from '@lingui/macro' -import { useProjectContext } from 'components/ProjectDashboard/hooks' -import { PopupMenu } from 'components/ui/PopupMenu' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useExportSplitsToCsv } from 'hooks/useExportSplitsToCsv' -import { useContext } from 'react' - -export const ReservedTokensPopupMenu = () => { - const { reservedTokensSplits } = useProjectContext() - const { fundingCycle } = useContext(V2V3ProjectContext) - const { exportSplitsToCsv } = useExportSplitsToCsv( - reservedTokensSplits ?? [], - 'reserved-tokens', - fundingCycle?.number.toNumber(), - ) - if (!reservedTokensSplits) return null - return ( - - - - Export tokens CSV - - - ), - onClick: exportSplitsToCsv, - }, - ]} - /> - ) -} diff --git a/src/components/BookmarkButton/BookmarkButton.tsx b/src/components/buttons/BookmarkButton/BookmarkButton.tsx similarity index 100% rename from src/components/BookmarkButton/BookmarkButton.tsx rename to src/components/buttons/BookmarkButton/BookmarkButton.tsx diff --git a/src/components/BookmarkButton/BookmarkButtonIcon.tsx b/src/components/buttons/BookmarkButton/BookmarkButtonIcon.tsx similarity index 100% rename from src/components/BookmarkButton/BookmarkButtonIcon.tsx rename to src/components/buttons/BookmarkButton/BookmarkButtonIcon.tsx diff --git a/src/components/BookmarkButton/hooks/useBookmarkButton.ts b/src/components/buttons/BookmarkButton/hooks/useBookmarkButton.ts similarity index 100% rename from src/components/BookmarkButton/hooks/useBookmarkButton.ts rename to src/components/buttons/BookmarkButton/hooks/useBookmarkButton.ts diff --git a/src/components/BookmarkButton/index.ts b/src/components/buttons/BookmarkButton/index.ts similarity index 100% rename from src/components/BookmarkButton/index.ts rename to src/components/buttons/BookmarkButton/index.ts diff --git a/src/components/ErrorNotificationButtons.tsx b/src/components/buttons/ErrorNotificationButtons.tsx similarity index 95% rename from src/components/ErrorNotificationButtons.tsx rename to src/components/buttons/ErrorNotificationButtons.tsx index 7142d046c3..ee33f1a7fc 100644 --- a/src/components/ErrorNotificationButtons.tsx +++ b/src/components/buttons/ErrorNotificationButtons.tsx @@ -3,7 +3,7 @@ import { Trans } from '@lingui/macro' import { Button } from 'antd' import { LanguageProvider } from 'contexts/Language/LanguageProvider' import { helpPagePath } from 'utils/routes' -import ExternalLink from './ExternalLink' +import ExternalLink from '../ExternalLink' const resetSite = () => { localStorage.clear() diff --git a/src/components/buttons/RichButton.tsx b/src/components/buttons/RichButton.tsx index 2e43435322..8fe2ecad0d 100644 --- a/src/components/buttons/RichButton.tsx +++ b/src/components/buttons/RichButton.tsx @@ -3,7 +3,7 @@ import { ComponentPropsWithoutRef } from 'react' import { twMerge } from 'tailwind-merge' import { classNames } from 'utils/classNames' -export type RichButtonProps = { +type RichButtonProps = { className?: string heading: JSX.Element | string description: JSX.Element | string diff --git a/src/components/SocialButton.tsx b/src/components/buttons/SocialButton.tsx similarity index 95% rename from src/components/SocialButton.tsx rename to src/components/buttons/SocialButton.tsx index 2a671ddd25..fa9631f078 100644 --- a/src/components/SocialButton.tsx +++ b/src/components/buttons/SocialButton.tsx @@ -2,7 +2,7 @@ import { Tooltip } from 'antd' import { PropsWithChildren } from 'react' import { twMerge } from 'tailwind-merge' import { linkUrl } from 'utils/url' -import ExternalLink from './ExternalLink' +import ExternalLink from '../ExternalLink' export const SocialButton = ({ className, diff --git a/src/components/SubscribeButton/SubscribeButton.tsx b/src/components/buttons/SubscribeButton/SubscribeButton.tsx similarity index 100% rename from src/components/SubscribeButton/SubscribeButton.tsx rename to src/components/buttons/SubscribeButton/SubscribeButton.tsx diff --git a/src/components/SubscribeButton/SubscribeButtonIcon.tsx b/src/components/buttons/SubscribeButton/SubscribeButtonIcon.tsx similarity index 100% rename from src/components/SubscribeButton/SubscribeButtonIcon.tsx rename to src/components/buttons/SubscribeButton/SubscribeButtonIcon.tsx diff --git a/src/components/SubscribeButton/SubscribeModal.tsx b/src/components/buttons/SubscribeButton/SubscribeModal.tsx similarity index 100% rename from src/components/SubscribeButton/SubscribeModal.tsx rename to src/components/buttons/SubscribeButton/SubscribeModal.tsx diff --git a/src/components/SubscribeButton/hooks/useSubscribeButton.ts b/src/components/buttons/SubscribeButton/hooks/useSubscribeButton.ts similarity index 100% rename from src/components/SubscribeButton/hooks/useSubscribeButton.ts rename to src/components/buttons/SubscribeButton/hooks/useSubscribeButton.ts diff --git a/src/components/SubscribeButton/hooks/useSubscribeModal.ts b/src/components/buttons/SubscribeButton/hooks/useSubscribeModal.ts similarity index 100% rename from src/components/SubscribeButton/hooks/useSubscribeModal.ts rename to src/components/buttons/SubscribeButton/hooks/useSubscribeModal.ts diff --git a/src/components/SubscribeButton/index.ts b/src/components/buttons/SubscribeButton/index.ts similarity index 100% rename from src/components/SubscribeButton/index.ts rename to src/components/buttons/SubscribeButton/index.ts diff --git a/src/components/buttons/TextButton.tsx b/src/components/buttons/TextButton.tsx deleted file mode 100644 index 65fefbb437..0000000000 --- a/src/components/buttons/TextButton.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { RightCircleOutlined } from '@ant-design/icons' -import { Button, ButtonProps } from 'antd' -import { classNames } from 'utils/classNames' - -export function TextButton({ className, ...props }: ButtonProps) { - return ( - - ) -} diff --git a/src/components/XLButton.tsx b/src/components/buttons/XLButton.tsx similarity index 100% rename from src/components/XLButton.tsx rename to src/components/buttons/XLButton.tsx diff --git a/src/components/ReconfigurationStrategy/CustomStrategyInput.tsx b/src/components/inputs/ReconfigurationStrategy/CustomStrategyInput.tsx similarity index 100% rename from src/components/ReconfigurationStrategy/CustomStrategyInput.tsx rename to src/components/inputs/ReconfigurationStrategy/CustomStrategyInput.tsx diff --git a/src/components/ReconfigurationStrategy/ReconfigurationStrategyOption.tsx b/src/components/inputs/ReconfigurationStrategy/ReconfigurationStrategyOption.tsx similarity index 100% rename from src/components/ReconfigurationStrategy/ReconfigurationStrategyOption.tsx rename to src/components/inputs/ReconfigurationStrategy/ReconfigurationStrategyOption.tsx diff --git a/src/components/ReconfigurationStrategy/ReconfigurationStrategySelector.tsx b/src/components/inputs/ReconfigurationStrategy/ReconfigurationStrategySelector.tsx similarity index 95% rename from src/components/ReconfigurationStrategy/ReconfigurationStrategySelector.tsx rename to src/components/inputs/ReconfigurationStrategy/ReconfigurationStrategySelector.tsx index f99b2a8421..7eb185ee03 100644 --- a/src/components/ReconfigurationStrategy/ReconfigurationStrategySelector.tsx +++ b/src/components/inputs/ReconfigurationStrategy/ReconfigurationStrategySelector.tsx @@ -1,6 +1,6 @@ import { t, Trans } from '@lingui/macro' import FormItemWarningText from 'components/FormItemWarningText' -import ReconfigurationStrategyOption from 'components/ReconfigurationStrategy/ReconfigurationStrategyOption' +import ReconfigurationStrategyOption from 'components/inputs/ReconfigurationStrategy/ReconfigurationStrategyOption' import { RECONFIG_RULES_WARN } from 'components/strings' import { BallotStrategy } from 'models/ballot' import { useState } from 'react' diff --git a/src/components/ReconfigurationStrategy/index.ts b/src/components/inputs/ReconfigurationStrategy/index.ts similarity index 100% rename from src/components/ReconfigurationStrategy/index.ts rename to src/components/inputs/ReconfigurationStrategy/index.ts diff --git a/src/components/modals/hooks/useModalFromUrlQuery.ts b/src/components/modals/hooks/useModalFromUrlQuery.ts deleted file mode 100644 index 0cb51c706e..0000000000 --- a/src/components/modals/hooks/useModalFromUrlQuery.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { useRouter } from 'next/router' -import { useCallback, useContext, useMemo } from 'react' -import { v2v3ProjectRoute } from 'utils/routes' - -export function useModalFromUrlQuery(paramName: string) { - const router = useRouter() - const { projectId } = useContext(ProjectMetadataContext) - - const modalVisible = useMemo( - () => router.query[paramName] === '1', - [paramName, router.query], - ) - - const hide = useCallback(() => { - const query = router.query - query[paramName] = '0' - router.replace( - { pathname: v2v3ProjectRoute({ projectId }), query }, - v2v3ProjectRoute({ projectId }), - { shallow: true }, - ) - }, [router, paramName, projectId]) - - return { visible: modalVisible, hide } -} diff --git a/src/components/v1/shared/ReconfigurationStrategyDrawer.tsx b/src/components/v1/shared/ReconfigurationStrategyDrawer.tsx index a702456272..c2f8e413d7 100644 --- a/src/components/v1/shared/ReconfigurationStrategyDrawer.tsx +++ b/src/components/v1/shared/ReconfigurationStrategyDrawer.tsx @@ -1,7 +1,7 @@ import { Trans } from '@lingui/macro' import { Button, Drawer, DrawerProps } from 'antd' -import ReconfigurationStrategySelector from 'components/ReconfigurationStrategy/ReconfigurationStrategySelector' +import ReconfigurationStrategySelector from 'components/inputs/ReconfigurationStrategy/ReconfigurationStrategySelector' import { BallotStrategy } from 'models/ballot' import { useEffect, useState } from 'react' diff --git a/src/components/v2v3/V2V3Project/ManageNftsSection/ManageNftsSection.tsx b/src/components/v2v3/V2V3Project/ManageNftsSection/ManageNftsSection.tsx deleted file mode 100644 index dfbcb1e540..0000000000 --- a/src/components/v2v3/V2V3Project/ManageNftsSection/ManageNftsSection.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import { plural, t, Trans } from '@lingui/macro' -import { Button, Descriptions } from 'antd' -import SectionHeader from 'components/SectionHeader' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useNftAccountBalance } from 'hooks/JB721Delegate/useNftAccountBalance' -import { useWallet } from 'hooks/Wallet' -import { CSSProperties, useContext, useState } from 'react' -import { RedeemNftsModal } from './RedeemNftsModal' - -const labelStyle: CSSProperties = { - width: '10.5rem', -} -const contentStyle: CSSProperties = { - display: 'flex', - flexWrap: 'wrap', - gap: 5, - justifyContent: 'space-between', - width: '10.5rem', -} - -export function ManageNftsSection() { - const { userAddress } = useWallet() - const { fundingCycleMetadata } = useContext(V2V3ProjectContext) - const [redeemNftsModalVisible, setRedeemNftsModalVisible] = - useState(false) - const { data, loading } = useNftAccountBalance({ - accountAddress: userAddress, - dataSourceAddress: fundingCycleMetadata?.dataSource, - }) - - const nftBalanceFormatted = data?.nfts.length ?? 0 - const nftRedeemAllowed = - fundingCycleMetadata?.useDataSourceForRedeem && nftBalanceFormatted > 0 - - if (loading) return null - - return ( - <> -
- NFTs} /> - - - -
- {nftBalanceFormatted}{' '} - {plural(nftBalanceFormatted, { - one: 'NFT', - other: 'NFTs', - })} -
- {nftRedeemAllowed ? ( -
- -
- ) : null} -
-
-
- {nftRedeemAllowed && ( - setRedeemNftsModalVisible(false)} - onConfirmed={() => setRedeemNftsModalVisible(false)} - /> - )} - - ) -} diff --git a/src/components/v2v3/V2V3Project/ManageNftsSection/RedeemNftsModal/RedeemNftCard.tsx b/src/components/v2v3/V2V3Project/ManageNftsSection/RedeemNftsModal/RedeemNftCard.tsx index 110312e154..476e20db3c 100644 --- a/src/components/v2v3/V2V3Project/ManageNftsSection/RedeemNftsModal/RedeemNftCard.tsx +++ b/src/components/v2v3/V2V3Project/ManageNftsSection/RedeemNftsModal/RedeemNftCard.tsx @@ -1,6 +1,6 @@ import axios from 'axios' import { NftTierCard } from 'components/NftRewards/NftTierCard' -import { RedeemingNft } from 'components/ProjectDashboard/components/NftRewardsPanel/hooks/useJB721DelegateTokenToNftReward' +import { RedeemingNft } from 'components/v2v3/V2V3Project/ProjectDashboard/components/NftRewardsPanel/hooks/useJB721DelegateTokenToNftReward' import { IPFSNftRewardTier, NftRewardTier } from 'models/nftRewards' import { UseQueryResult, useQuery } from 'react-query' import { cidFromIpfsUri, ipfsGatewayUrl } from 'utils/ipfs' diff --git a/src/components/v2v3/V2V3Project/ManageNftsSection/RedeemNftsModal/RedeemNftsModal.tsx b/src/components/v2v3/V2V3Project/ManageNftsSection/RedeemNftsModal/RedeemNftsModal.tsx index 06d76bc534..7163b5a4ff 100644 --- a/src/components/v2v3/V2V3Project/ManageNftsSection/RedeemNftsModal/RedeemNftsModal.tsx +++ b/src/components/v2v3/V2V3Project/ManageNftsSection/RedeemNftsModal/RedeemNftsModal.tsx @@ -5,9 +5,9 @@ import { Callout } from 'components/Callout' import ETHAmount from 'components/currency/ETHAmount' import TransactionModal from 'components/modals/TransactionModal' import { MemoFormInput } from 'components/Project/PayProjectForm/MemoFormInput' -import { RedeemingNft } from 'components/ProjectDashboard/components/NftRewardsPanel/hooks/useJB721DelegateTokenToNftReward' import { REDEMPTION_RATE_EXPLANATION } from 'components/strings' import TooltipLabel from 'components/TooltipLabel' +import { RedeemingNft } from 'components/v2v3/V2V3Project/ProjectDashboard/components/NftRewardsPanel/hooks/useJB721DelegateTokenToNftReward' import { JB721DelegateContractsContext } from 'contexts/NftRewards/JB721DelegateContracts/JB721DelegateContractsContext' import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' import { BigNumber } from 'ethers' diff --git a/src/components/ProjectDashboard/ProjectDashboard.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/ProjectDashboard.tsx similarity index 100% rename from src/components/ProjectDashboard/ProjectDashboard.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/ProjectDashboard.tsx diff --git a/src/components/ProjectDashboard/components/AboutPanel/AboutPanel.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/AboutPanel/AboutPanel.tsx similarity index 93% rename from src/components/ProjectDashboard/components/AboutPanel/AboutPanel.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/AboutPanel/AboutPanel.tsx index 5c95b5f3af..6fafd0821f 100644 --- a/src/components/ProjectDashboard/components/AboutPanel/AboutPanel.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/AboutPanel/AboutPanel.tsx @@ -1,9 +1,9 @@ import { t } from '@lingui/macro' +import { RichPreview } from 'components/RichPreview' import { SocialLink, useAboutPanel, -} from 'components/ProjectDashboard/hooks/useAboutPanel' -import { RichPreview } from 'components/RichPreview' +} from 'components/v2v3/V2V3Project/ProjectDashboard/hooks/useAboutPanel' import { EmptyScreen } from '../EmptyScreen' import { SocialLinkButton } from '../ui' diff --git a/src/components/ProjectDashboard/components/AboutPanel/index.ts b/src/components/v2v3/V2V3Project/ProjectDashboard/components/AboutPanel/index.ts similarity index 100% rename from src/components/ProjectDashboard/components/AboutPanel/index.ts rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/AboutPanel/index.ts diff --git a/src/components/ProjectDashboard/components/ActivityPanel/ActivityPanel.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/ActivityPanel/ActivityPanel.tsx similarity index 100% rename from src/components/ProjectDashboard/components/ActivityPanel/ActivityPanel.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/ActivityPanel/ActivityPanel.tsx diff --git a/src/components/ProjectDashboard/components/ActivityPanel/index.ts b/src/components/v2v3/V2V3Project/ProjectDashboard/components/ActivityPanel/index.ts similarity index 100% rename from src/components/ProjectDashboard/components/ActivityPanel/index.ts rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/ActivityPanel/index.ts diff --git a/src/components/ProjectDashboard/components/AddProjectUpdateModal/AddProjectUpdateModal.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/AddProjectUpdateModal/AddProjectUpdateModal.tsx similarity index 99% rename from src/components/ProjectDashboard/components/AddProjectUpdateModal/AddProjectUpdateModal.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/AddProjectUpdateModal/AddProjectUpdateModal.tsx index a1bdb545bf..ed25734bb3 100644 --- a/src/components/ProjectDashboard/components/AddProjectUpdateModal/AddProjectUpdateModal.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/AddProjectUpdateModal/AddProjectUpdateModal.tsx @@ -5,8 +5,8 @@ import axios from 'axios' import ExternalLink from 'components/ExternalLink' import { JuiceVideoThumbnailOrImage } from 'components/JuiceVideo/JuiceVideoThumbnailOrImage' import Loading from 'components/Loading' -import { useProjectMetadata } from 'components/ProjectDashboard/hooks' import { JuiceModal } from 'components/modals/JuiceModal' +import { useProjectMetadata } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks' import { PV_V2 } from 'constants/pv' import { Formik } from 'formik' import { useIpfsFilePicker } from 'hooks/useIpfsFilePicker/useIpfsFilePicker' diff --git a/src/components/ProjectDashboard/components/AddProjectUpdateModal/index.ts b/src/components/v2v3/V2V3Project/ProjectDashboard/components/AddProjectUpdateModal/index.ts similarity index 100% rename from src/components/ProjectDashboard/components/AddProjectUpdateModal/index.ts rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/AddProjectUpdateModal/index.ts diff --git a/src/components/ProjectDashboard/components/BlockedProjectBanner.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/BlockedProjectBanner.tsx similarity index 100% rename from src/components/ProjectDashboard/components/BlockedProjectBanner.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/BlockedProjectBanner.tsx diff --git a/src/components/ProjectDashboard/components/Cart/Cart.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/Cart.test.tsx similarity index 94% rename from src/components/ProjectDashboard/components/Cart/Cart.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/Cart.test.tsx index 900b982815..0f03001efc 100644 --- a/src/components/ProjectDashboard/components/Cart/Cart.test.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/Cart.test.tsx @@ -2,10 +2,10 @@ * @jest-environment jsdom */ import { fireEvent, render } from '@testing-library/react' -import { useProjectCart } from 'components/ProjectDashboard/hooks' +import { useProjectCart } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks' import { Cart } from './Cart' -jest.mock('components/ProjectDashboard/hooks/useProjectCart') +jest.mock('components/v2v3/V2V3Project/ProjectDashboard/hooks/useProjectCart') jest.mock('./components', () => ({ SummaryCollapsedView: () =>
SummaryCollapsedView
, diff --git a/src/components/ProjectDashboard/components/Cart/Cart.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/Cart.tsx similarity index 96% rename from src/components/ProjectDashboard/components/Cart/Cart.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/Cart.tsx index 060a988ee4..5bae33b177 100644 --- a/src/components/ProjectDashboard/components/Cart/Cart.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/Cart.tsx @@ -1,5 +1,5 @@ import { ChevronUpIcon } from '@heroicons/react/24/outline' -import { useProjectCart } from 'components/ProjectDashboard/hooks' +import { useProjectCart } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks' import { useCallback, useEffect, useRef } from 'react' import { twMerge } from 'tailwind-merge' import { PayProjectModal } from '../PayProjectModal' diff --git a/src/components/ProjectDashboard/components/Cart/__snapshots__/Cart.test.tsx.snap b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/__snapshots__/Cart.test.tsx.snap similarity index 100% rename from src/components/ProjectDashboard/components/Cart/__snapshots__/Cart.test.tsx.snap rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/__snapshots__/Cart.test.tsx.snap diff --git a/src/components/ProjectDashboard/components/Cart/components/CartItem/CartItem.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/CartItem.test.tsx similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/CartItem/CartItem.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/CartItem.test.tsx diff --git a/src/components/ProjectDashboard/components/Cart/components/CartItem/CartItem.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/CartItem.tsx similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/CartItem/CartItem.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/CartItem.tsx diff --git a/src/components/ProjectDashboard/components/Cart/components/CartItem/CartItemBadge.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/CartItemBadge.tsx similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/CartItem/CartItemBadge.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/CartItemBadge.tsx diff --git a/src/components/ProjectDashboard/components/Cart/components/CartItem/NftCartItem.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/NftCartItem.test.tsx similarity index 76% rename from src/components/ProjectDashboard/components/Cart/components/CartItem/NftCartItem.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/NftCartItem.test.tsx index b29714e43d..069b3f108e 100644 --- a/src/components/ProjectDashboard/components/Cart/components/CartItem/NftCartItem.test.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/NftCartItem.test.tsx @@ -2,13 +2,13 @@ * @jest-environment jsdom */ import { render } from '@testing-library/react' -import { useNftCartItem } from 'components/ProjectDashboard/hooks/useNftCartItem' +import { useNftCartItem } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks/useNftCartItem' import { V2V3_CURRENCY_ETH } from 'utils/v2v3/currency' import { NftCartItem } from './NftCartItem' -jest.mock('components/ProjectDashboard/hooks/useNftCartItem') +jest.mock('components/v2v3/V2V3Project/ProjectDashboard/hooks/useNftCartItem') jest.mock( - 'components/ProjectDashboard/components/NftRewardsCard/SmallNftSquare', + 'components/v2v3/V2V3Project/ProjectDashboard/components/NftRewardsCard/SmallNftSquare', () => ({ SmallNftSquare: () =>
, }), diff --git a/src/components/ProjectDashboard/components/Cart/components/CartItem/NftCartItem.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/NftCartItem.tsx similarity index 70% rename from src/components/ProjectDashboard/components/Cart/components/CartItem/NftCartItem.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/NftCartItem.tsx index b99274685a..ea81086db4 100644 --- a/src/components/ProjectDashboard/components/Cart/components/CartItem/NftCartItem.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/NftCartItem.tsx @@ -1,8 +1,8 @@ -import { SmallNftSquare } from 'components/ProjectDashboard/components/NftRewardsCard/SmallNftSquare' -import { ProjectCartNftReward } from 'components/ProjectDashboard/components/ProjectCartProvider' -import { useNftCartItem } from 'components/ProjectDashboard/hooks/useNftCartItem' -import { handleConfirmationDeletion } from 'components/ProjectDashboard/utils/modals' import { TruncatedText } from 'components/TruncatedText' +import { SmallNftSquare } from 'components/v2v3/V2V3Project/ProjectDashboard/components/NftRewardsCard/SmallNftSquare' +import { ProjectCartNftReward } from 'components/v2v3/V2V3Project/ProjectDashboard/components/ProjectCartProvider' +import { useNftCartItem } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks/useNftCartItem' +import { handleConfirmationDeletion } from 'components/v2v3/V2V3Project/ProjectDashboard/utils/modals' import { CartItem } from './CartItem' import { CartItemBadge } from './CartItemBadge' diff --git a/src/components/ProjectDashboard/components/Cart/components/CartItem/PaymentCartItem.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/PaymentCartItem.test.tsx similarity index 81% rename from src/components/ProjectDashboard/components/Cart/components/CartItem/PaymentCartItem.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/PaymentCartItem.test.tsx index 37c9ded405..f9f61f02f0 100644 --- a/src/components/ProjectDashboard/components/Cart/components/CartItem/PaymentCartItem.test.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/PaymentCartItem.test.tsx @@ -2,11 +2,11 @@ * @jest-environment jsdom */ import { render } from '@testing-library/react' -import { useProjectCart } from 'components/ProjectDashboard/hooks' +import { useProjectCart } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks' import { V2V3_CURRENCY_ETH } from 'utils/v2v3/currency' import { PaymentCartItem } from './PaymentCartItem' -jest.mock('components/ProjectDashboard/hooks') +jest.mock('components/v2v3/V2V3Project/ProjectDashboard/hooks') describe('PaymentCartItem', () => { const DefaultUseProjectCartMock = { diff --git a/src/components/ProjectDashboard/components/Cart/components/CartItem/PaymentCartItem.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/PaymentCartItem.tsx similarity index 73% rename from src/components/ProjectDashboard/components/Cart/components/CartItem/PaymentCartItem.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/PaymentCartItem.tsx index d80d00b218..a83529761e 100644 --- a/src/components/ProjectDashboard/components/Cart/components/CartItem/PaymentCartItem.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/PaymentCartItem.tsx @@ -1,6 +1,6 @@ -import { CurrencyIcon } from 'components/ProjectDashboard/components/ui/CurrencyIcon' -import { useProjectCart } from 'components/ProjectDashboard/hooks' -import { handleConfirmationDeletion } from 'components/ProjectDashboard/utils/modals' +import { CurrencyIcon } from 'components/v2v3/V2V3Project/ProjectDashboard/components/ui/CurrencyIcon' +import { useProjectCart } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks' +import { handleConfirmationDeletion } from 'components/v2v3/V2V3Project/ProjectDashboard/utils/modals' import { useCallback } from 'react' import { CartItem } from './CartItem' diff --git a/src/components/ProjectDashboard/components/Cart/components/CartItem/ProjectTokensCartItem.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/ProjectTokensCartItem.test.tsx similarity index 80% rename from src/components/ProjectDashboard/components/Cart/components/CartItem/ProjectTokensCartItem.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/ProjectTokensCartItem.test.tsx index aa37440728..0475421ea3 100644 --- a/src/components/ProjectDashboard/components/Cart/components/CartItem/ProjectTokensCartItem.test.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/ProjectTokensCartItem.test.tsx @@ -5,13 +5,13 @@ import { render } from '@testing-library/react' import { useProjectCart, useTokensPerEth, -} from 'components/ProjectDashboard/hooks' +} from 'components/v2v3/V2V3Project/ProjectDashboard/hooks' import { V2V3_CURRENCY_ETH } from 'utils/v2v3/currency' import { ProjectTokensCartItem } from './ProjectTokensCartItem' -jest.mock('components/ProjectDashboard/hooks') +jest.mock('components/v2v3/V2V3Project/ProjectDashboard/hooks') jest.mock( - 'components/ProjectDashboard/components/ProjectHeader/components/ProjectHeaderLogo', + 'components/v2v3/V2V3Project/ProjectDashboard/components/ProjectHeader/components/ProjectHeaderLogo', () => ({ ProjectHeaderLogo: () =>
ProjectHeaderLogo
, }), diff --git a/src/components/ProjectDashboard/components/Cart/components/CartItem/ProjectTokensCartItem.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/ProjectTokensCartItem.tsx similarity index 75% rename from src/components/ProjectDashboard/components/Cart/components/CartItem/ProjectTokensCartItem.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/ProjectTokensCartItem.tsx index 030d0306c6..5aa2c9bd00 100644 --- a/src/components/ProjectDashboard/components/Cart/components/CartItem/ProjectTokensCartItem.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/ProjectTokensCartItem.tsx @@ -1,9 +1,9 @@ import { InformationCircleIcon } from '@heroicons/react/24/outline' import { Trans, t } from '@lingui/macro' import { Tooltip } from 'antd' -import { ProjectHeaderLogo } from 'components/ProjectDashboard/components/ProjectHeader/components/ProjectHeaderLogo' -import { useProjectHasErc20Token } from 'components/ProjectDashboard/hooks/useProjectHasErc20Token' -import { useProjectPaymentTokens } from 'components/ProjectDashboard/hooks/useProjectPaymentTokens' +import { ProjectHeaderLogo } from 'components/v2v3/V2V3Project/ProjectDashboard/components/ProjectHeader/components/ProjectHeaderLogo' +import { useProjectHasErc20Token } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks/useProjectHasErc20Token' +import { useProjectPaymentTokens } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks/useProjectPaymentTokens' import { CartItem } from './CartItem' import { CartItemBadge } from './CartItemBadge' diff --git a/src/components/ProjectDashboard/components/Cart/components/CartItem/RewardEligibilityCallout.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/RewardEligibilityCallout.tsx similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/CartItem/RewardEligibilityCallout.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/RewardEligibilityCallout.tsx diff --git a/src/components/ProjectDashboard/components/Cart/components/CartItem/__snapshots__/CartItem.test.tsx.snap b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/__snapshots__/CartItem.test.tsx.snap similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/CartItem/__snapshots__/CartItem.test.tsx.snap rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/__snapshots__/CartItem.test.tsx.snap diff --git a/src/components/ProjectDashboard/components/Cart/components/CartItem/__snapshots__/PaymentCartItem.test.tsx.snap b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/__snapshots__/PaymentCartItem.test.tsx.snap similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/CartItem/__snapshots__/PaymentCartItem.test.tsx.snap rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/__snapshots__/PaymentCartItem.test.tsx.snap diff --git a/src/components/ProjectDashboard/components/Cart/components/CartItem/__snapshots__/ProjectTokensCartItem.test.tsx.snap b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/__snapshots__/ProjectTokensCartItem.test.tsx.snap similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/CartItem/__snapshots__/ProjectTokensCartItem.test.tsx.snap rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/__snapshots__/ProjectTokensCartItem.test.tsx.snap diff --git a/src/components/ProjectDashboard/components/Cart/components/CartItem/index.ts b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/index.ts similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/CartItem/index.ts rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/CartItem/index.ts diff --git a/src/components/ProjectDashboard/components/Cart/components/SummaryCollapsedView.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/SummaryCollapsedView.test.tsx similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/SummaryCollapsedView.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/SummaryCollapsedView.test.tsx diff --git a/src/components/ProjectDashboard/components/Cart/components/SummaryCollapsedView.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/SummaryCollapsedView.tsx similarity index 98% rename from src/components/ProjectDashboard/components/Cart/components/SummaryCollapsedView.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/SummaryCollapsedView.tsx index d0d7146f48..5149092fe9 100644 --- a/src/components/ProjectDashboard/components/Cart/components/SummaryCollapsedView.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/SummaryCollapsedView.tsx @@ -1,7 +1,7 @@ import { TrashIcon } from '@heroicons/react/24/outline' import { PlusIcon } from '@heroicons/react/24/solid' import { Trans, t } from '@lingui/macro' -import { handleConfirmationDeletion } from 'components/ProjectDashboard/utils/modals' +import { handleConfirmationDeletion } from 'components/v2v3/V2V3Project/ProjectDashboard/utils/modals' import useMobile from 'hooks/useMobile' import { useMemo } from 'react' import useResizeObserver from 'use-resize-observer' diff --git a/src/components/ProjectDashboard/components/Cart/components/SummaryExpandedView.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/SummaryExpandedView.test.tsx similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/SummaryExpandedView.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/SummaryExpandedView.test.tsx diff --git a/src/components/ProjectDashboard/components/Cart/components/SummaryExpandedView.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/SummaryExpandedView.tsx similarity index 97% rename from src/components/ProjectDashboard/components/Cart/components/SummaryExpandedView.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/SummaryExpandedView.tsx index b2117fbe23..845ac94d06 100644 --- a/src/components/ProjectDashboard/components/Cart/components/SummaryExpandedView.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/SummaryExpandedView.tsx @@ -1,5 +1,5 @@ import { Trans, t } from '@lingui/macro' -import { handleConfirmationDeletion } from 'components/ProjectDashboard/utils/modals' +import { handleConfirmationDeletion } from 'components/v2v3/V2V3Project/ProjectDashboard/utils/modals' import useMobile from 'hooks/useMobile' import { stopPropagation } from 'react-stop-propagation' import { useCartSummary } from '../hooks/useCartSummary' diff --git a/src/components/ProjectDashboard/components/Cart/components/SummaryPayButton.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/SummaryPayButton.test.tsx similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/SummaryPayButton.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/SummaryPayButton.test.tsx diff --git a/src/components/ProjectDashboard/components/Cart/components/SummaryPayButton.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/SummaryPayButton.tsx similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/SummaryPayButton.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/SummaryPayButton.tsx diff --git a/src/components/ProjectDashboard/components/Cart/components/__snapshots__/SummaryCollapsedView.test.tsx.snap b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/__snapshots__/SummaryCollapsedView.test.tsx.snap similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/__snapshots__/SummaryCollapsedView.test.tsx.snap rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/__snapshots__/SummaryCollapsedView.test.tsx.snap diff --git a/src/components/ProjectDashboard/components/Cart/components/__snapshots__/SummaryExpandedView.test.tsx.snap b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/__snapshots__/SummaryExpandedView.test.tsx.snap similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/__snapshots__/SummaryExpandedView.test.tsx.snap rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/__snapshots__/SummaryExpandedView.test.tsx.snap diff --git a/src/components/ProjectDashboard/components/Cart/components/__snapshots__/SummaryPayButton.test.tsx.snap b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/__snapshots__/SummaryPayButton.test.tsx.snap similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/__snapshots__/SummaryPayButton.test.tsx.snap rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/__snapshots__/SummaryPayButton.test.tsx.snap diff --git a/src/components/ProjectDashboard/components/Cart/components/index.ts b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/index.ts similarity index 100% rename from src/components/ProjectDashboard/components/Cart/components/index.ts rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/components/index.ts diff --git a/src/components/ProjectDashboard/components/Cart/hooks/useCartSummary.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/hooks/useCartSummary.test.tsx similarity index 95% rename from src/components/ProjectDashboard/components/Cart/hooks/useCartSummary.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/hooks/useCartSummary.test.tsx index 8e9d918225..2e84a9cf71 100644 --- a/src/components/ProjectDashboard/components/Cart/hooks/useCartSummary.test.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/hooks/useCartSummary.test.tsx @@ -3,13 +3,13 @@ */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { renderHook } from '@testing-library/react' -import { useProjectCart } from 'components/ProjectDashboard/hooks' +import { useProjectCart } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks' import { NftRewardsContext } from 'contexts/NftRewards/NftRewardsContext' import { useWallet } from 'hooks/Wallet' import { V2V3_CURRENCY_ETH } from 'utils/v2v3/currency' import { useCartSummary } from './useCartSummary' -jest.mock('components/ProjectDashboard/hooks') +jest.mock('components/v2v3/V2V3Project/ProjectDashboard/hooks') jest.mock('hooks/Wallet') const DefaultNftRewardsContextMock = { diff --git a/src/components/ProjectDashboard/components/Cart/hooks/useCartSummary.ts b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/hooks/useCartSummary.ts similarity index 94% rename from src/components/ProjectDashboard/components/Cart/hooks/useCartSummary.ts rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/hooks/useCartSummary.ts index d6c3df7705..005cd7eb9f 100644 --- a/src/components/ProjectDashboard/components/Cart/hooks/useCartSummary.ts +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/hooks/useCartSummary.ts @@ -1,4 +1,4 @@ -import { useProjectCart } from 'components/ProjectDashboard/hooks' +import { useProjectCart } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks' import { NftRewardsContext } from 'contexts/NftRewards/NftRewardsContext' import { useWallet } from 'hooks/Wallet' import { useCallback, useContext, useMemo } from 'react' diff --git a/src/components/ProjectDashboard/components/Cart/hooks/useRewardEligibilityCallout.test.ts b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/hooks/useRewardEligibilityCallout.test.ts similarity index 100% rename from src/components/ProjectDashboard/components/Cart/hooks/useRewardEligibilityCallout.test.ts rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/hooks/useRewardEligibilityCallout.test.ts diff --git a/src/components/ProjectDashboard/components/Cart/hooks/useRewardEligibilityCallout.ts b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/hooks/useRewardEligibilityCallout.ts similarity index 97% rename from src/components/ProjectDashboard/components/Cart/hooks/useRewardEligibilityCallout.ts rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/hooks/useRewardEligibilityCallout.ts index 1435fa7106..c80a635641 100644 --- a/src/components/ProjectDashboard/components/Cart/hooks/useRewardEligibilityCallout.ts +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/hooks/useRewardEligibilityCallout.ts @@ -1,4 +1,4 @@ -import { useProjectCart } from 'components/ProjectDashboard/hooks' +import { useProjectCart } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks' import { NftRewardsContext } from 'contexts/NftRewards/NftRewardsContext' import { useCurrencyConverter } from 'hooks/useCurrencyConverter' import useWeiConverter from 'hooks/useWeiConverter' diff --git a/src/components/ProjectDashboard/components/Cart/index.ts b/src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/index.ts similarity index 100% rename from src/components/ProjectDashboard/components/Cart/index.ts rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/Cart/index.ts diff --git a/src/components/ProjectDashboard/components/CoverPhoto/CoverPhoto.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CoverPhoto/CoverPhoto.tsx similarity index 88% rename from src/components/ProjectDashboard/components/CoverPhoto/CoverPhoto.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CoverPhoto/CoverPhoto.tsx index 661beac730..1ab0c3684c 100644 --- a/src/components/ProjectDashboard/components/CoverPhoto/CoverPhoto.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CoverPhoto/CoverPhoto.tsx @@ -1,4 +1,4 @@ -import { useCoverPhoto } from 'components/ProjectDashboard/hooks' +import { useCoverPhoto } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks' import { twMerge } from 'tailwind-merge' export const CoverPhoto = () => { diff --git a/src/components/ProjectDashboard/components/CoverPhoto/index.ts b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CoverPhoto/index.ts similarity index 100% rename from src/components/ProjectDashboard/components/CoverPhoto/index.ts rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CoverPhoto/index.ts diff --git a/src/components/ProjectDashboard/components/CurrentBalanceCard/CurrentBalanceCard.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CurrentBalanceCard/CurrentBalanceCard.tsx similarity index 88% rename from src/components/ProjectDashboard/components/CurrentBalanceCard/CurrentBalanceCard.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CurrentBalanceCard/CurrentBalanceCard.tsx index 114be1c52c..557bdaa828 100644 --- a/src/components/ProjectDashboard/components/CurrentBalanceCard/CurrentBalanceCard.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CurrentBalanceCard/CurrentBalanceCard.tsx @@ -1,9 +1,9 @@ import { QuestionMarkCircleIcon } from '@heroicons/react/24/outline' import { Trans } from '@lingui/macro' import { Tooltip } from 'antd' -import { useCurrentBalanceCard } from 'components/ProjectDashboard/hooks' -import { useProjectPageQueries } from 'components/ProjectDashboard/hooks/useProjectPageQueries' import { TruncatedText } from 'components/TruncatedText' +import { useCurrentBalanceCard } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks' +import { useProjectPageQueries } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks/useProjectPageQueries' import { useCallback } from 'react' import { twMerge } from 'tailwind-merge' import { treasuryBalanceTooltip } from '../CyclesPayoutsPanel/components/CyclesPanelTooltips' diff --git a/src/components/ProjectDashboard/components/CurrentBalanceCard/index.ts b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CurrentBalanceCard/index.ts similarity index 100% rename from src/components/ProjectDashboard/components/CurrentBalanceCard/index.ts rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CurrentBalanceCard/index.ts diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/CyclesPayoutsPanel.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/CyclesPayoutsPanel.test.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/CyclesPayoutsPanel.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/CyclesPayoutsPanel.test.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/CyclesPayoutsPanel.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/CyclesPayoutsPanel.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/CyclesPayoutsPanel.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/CyclesPayoutsPanel.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/__snapshots__/CyclesPayoutsPanel.test.tsx.snap b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/__snapshots__/CyclesPayoutsPanel.test.tsx.snap similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/__snapshots__/CyclesPayoutsPanel.test.tsx.snap rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/__snapshots__/CyclesPayoutsPanel.test.tsx.snap diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationDisplayCard.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationDisplayCard.test.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationDisplayCard.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationDisplayCard.test.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationDisplayCard.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationDisplayCard.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationDisplayCard.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationDisplayCard.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationPanel.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationPanel.test.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationPanel.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationPanel.test.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationPanel.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationPanel.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationPanel.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationPanel.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationTable.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationTable.test.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationTable.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationTable.test.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationTable.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationTable.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationTable.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/ConfigurationTable.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingConfigurationPanel.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingConfigurationPanel.test.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingConfigurationPanel.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingConfigurationPanel.test.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingConfigurationPanel.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingConfigurationPanel.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingConfigurationPanel.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingConfigurationPanel.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingSubPanel.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingSubPanel.test.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingSubPanel.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingSubPanel.test.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingSubPanel.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingSubPanel.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingSubPanel.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CurrentUpcomingSubPanel.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesPanelTooltips.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesPanelTooltips.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesPanelTooltips.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesPanelTooltips.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesTab.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesTab.test.tsx similarity index 82% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesTab.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesTab.test.tsx index d70b0fa103..a1180df5c3 100644 --- a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesTab.test.tsx +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesTab.test.tsx @@ -9,7 +9,7 @@ const wrapper = ({ children }: { children?: React.ReactNode }) => ( {children} ) -describe('src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesTab.tsx', () => { +describe('src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesTab.tsx', () => { it('should match snapshot', () => { const { baseElement } = render(, { wrapper }) expect(baseElement).toMatchSnapshot() diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesTab.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesTab.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesTab.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesTab.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/ExportPayoutsCsvItem.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/ExportPayoutsCsvItem.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/ExportPayoutsCsvItem.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/ExportPayoutsCsvItem.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/HistoricalConfigurationPanel.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/HistoricalConfigurationPanel.test.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/HistoricalConfigurationPanel.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/HistoricalConfigurationPanel.test.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/HistoricalConfigurationPanel.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/HistoricalConfigurationPanel.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/HistoricalConfigurationPanel.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/HistoricalConfigurationPanel.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/HistorySubPanel.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/HistorySubPanel.test.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/HistorySubPanel.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/HistorySubPanel.test.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/HistorySubPanel.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/HistorySubPanel.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/HistorySubPanel.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/HistorySubPanel.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/PayoutsSubPanel.test.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/PayoutsSubPanel.test.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/PayoutsSubPanel.test.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/PayoutsSubPanel.test.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/PayoutsSubPanel.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/PayoutsSubPanel.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/PayoutsSubPanel.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/PayoutsSubPanel.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/SendPayoutsButton.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/SendPayoutsButton.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/SendPayoutsButton.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/SendPayoutsButton.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/TreasuryStats.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/TreasuryStats.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/TreasuryStats.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/TreasuryStats.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/UpcomingCycleChangesCallout.tsx b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/UpcomingCycleChangesCallout.tsx similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/UpcomingCycleChangesCallout.tsx rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/UpcomingCycleChangesCallout.tsx diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/ConfigurationDisplayCard.test.tsx.snap b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/ConfigurationDisplayCard.test.tsx.snap similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/ConfigurationDisplayCard.test.tsx.snap rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/ConfigurationDisplayCard.test.tsx.snap diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/ConfigurationTable.test.tsx.snap b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/ConfigurationTable.test.tsx.snap similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/ConfigurationTable.test.tsx.snap rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/ConfigurationTable.test.tsx.snap diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/CurrentUpcomingSubPanel.test.tsx.snap b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/CurrentUpcomingSubPanel.test.tsx.snap similarity index 100% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/CurrentUpcomingSubPanel.test.tsx.snap rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/CurrentUpcomingSubPanel.test.tsx.snap diff --git a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/CyclesTab.test.tsx.snap b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/CyclesTab.test.tsx.snap similarity index 76% rename from src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/CyclesTab.test.tsx.snap rename to src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/CyclesTab.test.tsx.snap index 5f66e72a2d..92519f61e0 100644 --- a/src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/CyclesTab.test.tsx.snap +++ b/src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/__snapshots__/CyclesTab.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`src/components/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesTab.tsx should match snapshot 1`] = ` +exports[`src/components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/components/CyclesTab.tsx should match snapshot 1`] = `
- ) : null} - - Project details failed to load.} - > - - - -
- Project activity failed to load.} - > - - -
- - ) -} diff --git a/src/components/v2v3/V2V3Project/ProjectPageRightCol.tsx b/src/components/v2v3/V2V3Project/ProjectPageRightCol.tsx deleted file mode 100644 index b6572b0114..0000000000 --- a/src/components/v2v3/V2V3Project/ProjectPageRightCol.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { Trans } from '@lingui/macro' -import { Col } from 'antd' -import { ErrorBoundaryCallout } from 'components/Callout/ErrorBoundaryCallout' -import { NftRewardsSection } from 'components/NftRewards/NftRewardsSection' -import { useNftRewardsEnabledForPay } from 'hooks/JB721Delegate/useNftRewardsEnabledForPay' -import { V2V3ProjectActivity } from './ProjectActivity' -import { V2V3PayProjectForm } from './V2V3PayProjectForm' -import { COL_SIZE_MD } from './V2V3Project' - -export function ProjectPageRightCol() { - const nftRewardsEnabled = useNftRewardsEnabledForPay() - - return ( - -
- -
- -
- {nftRewardsEnabled ? ( -
- NFTs failed to load.}> - - -
- ) : null} -
- Project activity failed to load.} - > - - -
-
- - ) -} diff --git a/src/components/v2v3/V2V3Project/ProjectPageTabs/AllAssetsButton.tsx b/src/components/v2v3/V2V3Project/ProjectPageTabs/AllAssetsButton.tsx deleted file mode 100644 index 27b45ba57f..0000000000 --- a/src/components/v2v3/V2V3Project/ProjectPageTabs/AllAssetsButton.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { Trans } from '@lingui/macro' -import { TextButton } from 'components/buttons/TextButton' -import { useState } from 'react' -import { V2V3ProjectTokenBalancesModal } from '../modals/V2V3ProjectTokenBalancesModal' - -export function AllAssetsButton() { - const [balancesModalVisible, setBalancesModalVisible] = - useState(false) - - return ( - <> - setBalancesModalVisible(true)}> - All assets - - setBalancesModalVisible(false)} - /> - - ) -} diff --git a/src/components/v2v3/V2V3Project/ProjectPageTabs/OverviewTab.tsx b/src/components/v2v3/V2V3Project/ProjectPageTabs/OverviewTab.tsx deleted file mode 100644 index 38c3625e17..0000000000 --- a/src/components/v2v3/V2V3Project/ProjectPageTabs/OverviewTab.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { Trans } from '@lingui/macro' -import { ErrorBoundaryCallout } from 'components/Callout/ErrorBoundaryCallout' -import VolumeChart from 'components/VolumeChart' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useContext } from 'react' -import TreasuryStats from '../TreasuryStats' -import { AllAssetsButton } from './AllAssetsButton' - -export default function OverviewTab() { - const { createdAt } = useContext(V2V3ProjectContext) - const { projectId, pv } = useContext(ProjectMetadataContext) - - return ( - <> -
- -
- -
-
- {pv && projectId ? ( -
- Volume chart failed to load.} - > - - -
- ) : null} - - ) -} diff --git a/src/components/v2v3/V2V3Project/ProjectPageTabs/ProjectPageTabs.tsx b/src/components/v2v3/V2V3Project/ProjectPageTabs/ProjectPageTabs.tsx deleted file mode 100644 index 484c98976a..0000000000 --- a/src/components/v2v3/V2V3Project/ProjectPageTabs/ProjectPageTabs.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { t } from '@lingui/macro' -import { Col, Tabs } from 'antd' -import Loading from 'components/Loading' -import { Suspense, lazy } from 'react' -import { COL_SIZE_MD } from '../V2V3Project' -import { TabLabel } from './TabLabel' -const OverviewTab = lazy(() => import('./OverviewTab')) -const TokensTab = lazy(() => import('./TokensTab')) -const V2V3FundingCycleSection = lazy(() => import('../V2V3FundingCycleSection')) - -export function ProjectPageTabs() { - const tabItems = [ - { - label: , - key: 'overview', - children: ( - }> - - - ), - }, - { - label: , - key: 'cycle', - children: ( - }> -
- -
{' '} -
- ), - }, - { - label: , - key: 'tokens', - children: ( - }> - - - ), - }, - ] - - return ( - - - - ) -} diff --git a/src/components/v2v3/V2V3Project/ProjectPageTabs/TabLabel.tsx b/src/components/v2v3/V2V3Project/ProjectPageTabs/TabLabel.tsx deleted file mode 100644 index 92a1f5ed37..0000000000 --- a/src/components/v2v3/V2V3Project/ProjectPageTabs/TabLabel.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export function TabLabel({ label }: { label: string }) { - return {label} -} diff --git a/src/components/v2v3/V2V3Project/ProjectPageTabs/TokensTab.tsx b/src/components/v2v3/V2V3Project/ProjectPageTabs/TokensTab.tsx deleted file mode 100644 index 5a575f6e9e..0000000000 --- a/src/components/v2v3/V2V3Project/ProjectPageTabs/TokensTab.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { useHasNftRewards } from 'hooks/JB721Delegate/useHasNftRewards' -import { useWallet } from 'hooks/Wallet' -import { ManageNftsSection } from '../ManageNftsSection/ManageNftsSection' -import { V2V3ManageTokensSection } from '../V2V3ManageTokensSection' - -export default function TokensTab() { - const { isConnected } = useWallet() - const { value: hasNftRewards } = useHasNftRewards() - - return ( - <> -
- -
- - {hasNftRewards && isConnected ? ( -
- -
- ) : null} - - ) -} diff --git a/src/components/v2v3/V2V3Project/ProjectPageTabs/index.tsx b/src/components/v2v3/V2V3Project/ProjectPageTabs/index.tsx deleted file mode 100644 index 8c07cd48e3..0000000000 --- a/src/components/v2v3/V2V3Project/ProjectPageTabs/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { ProjectPageTabs } from './ProjectPageTabs' diff --git a/src/components/v2v3/V2V3Project/TreasuryStats/DistributedRatio.tsx b/src/components/v2v3/V2V3Project/TreasuryStats/DistributedRatio.tsx deleted file mode 100644 index ccbcd7558d..0000000000 --- a/src/components/v2v3/V2V3Project/TreasuryStats/DistributedRatio.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { Trans } from '@lingui/macro' -import StatLine from 'components/Project/StatLine' -import TooltipLabel from 'components/TooltipLabel' -import { DISTRIBUTION_LIMIT_EXPLANATION } from 'components/strings' -import V2V3CurrencyAmount from 'components/v2v3/shared/V2V3CurrencyAmount' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useContext } from 'react' -import { isInfiniteDistributionLimit } from 'utils/v2v3/fundingCycle' - -export default function DistributedRatio() { - const { - distributionLimit, - usedDistributionLimit, - distributionLimitCurrency, - loading: { distributionLimitLoading }, - } = useContext(V2V3ProjectContext) - - return ( - Payouts} - statLabelTip={DISTRIBUTION_LIMIT_EXPLANATION} - statValue={ - distributionLimit?.gt(0) ? ( -
- {' '} - <> - /{' '} - {isInfiniteDistributionLimit(distributionLimit) ? ( - NO LIMIT - ) : ( - - )} - -
- ) : ( -
- - No payouts are scheduled for this cycle. All ETH is available - for redemption (subject to the redemption rate). - - } - label={No payouts} - /> -
- ) - } - /> - ) -} diff --git a/src/components/v2v3/V2V3Project/TreasuryStats/OwnerBalance.tsx b/src/components/v2v3/V2V3Project/TreasuryStats/OwnerBalance.tsx deleted file mode 100644 index 926847ee27..0000000000 --- a/src/components/v2v3/V2V3Project/TreasuryStats/OwnerBalance.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { Trans } from '@lingui/macro' -import ETHAmount from 'components/currency/ETHAmount' -import EtherscanLink from 'components/EtherscanLink' -import StatLine from 'components/Project/StatLine' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useEthBalanceQuery } from 'hooks/useEthBalance' -import { useContext } from 'react' - -export default function OwnerBalance() { - const { projectOwnerAddress } = useContext(V2V3ProjectContext) - const { data: projectOwnerWalletBalance, isLoading } = - useEthBalanceQuery(projectOwnerAddress) - - return ( - Owner wallet balance} - statLabelTip={ - <> -

- - The amount of ETH in the wallet that owns this project. - -

{' '} - - - } - statValue={ - - - - } - /> - ) -} diff --git a/src/components/v2v3/V2V3Project/TreasuryStats/ProjectBalance.tsx b/src/components/v2v3/V2V3Project/TreasuryStats/ProjectBalance.tsx deleted file mode 100644 index 5cdba3c380..0000000000 --- a/src/components/v2v3/V2V3Project/TreasuryStats/ProjectBalance.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { Trans } from '@lingui/macro' -import StatLine from 'components/Project/StatLine' -import ETHAmount from 'components/currency/ETHAmount' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { BigNumber } from 'ethers' -import { useContext } from 'react' -import { NO_CURRENCY, V2V3_CURRENCY_USD } from 'utils/v2v3/currency' - -import V2V3CurrencyAmount from 'components/v2v3/shared/V2V3CurrencyAmount' - -export default function ProjectBalance() { - const { - ETHBalance, - balanceInDistributionLimitCurrency, - distributionLimitCurrency, - loading: { balanceInDistributionLimitCurrencyLoading }, - } = useContext(V2V3ProjectContext) - - return ( - Project balance} - statLabelTip={ - The amount of ETH that this project has right now. - } - statValue={ -
- {distributionLimitCurrency?.eq(V2V3_CURRENCY_USD) && ( - - {' '} - - )} - -
- } - /> - ) -} diff --git a/src/components/v2v3/V2V3Project/TreasuryStats/index.tsx b/src/components/v2v3/V2V3Project/TreasuryStats/index.tsx deleted file mode 100644 index 2c4d21f5d9..0000000000 --- a/src/components/v2v3/V2V3Project/TreasuryStats/index.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { Skeleton } from 'antd' -import FundingProgressBar from 'components/Project/FundingProgressBar' -import { VolumeStatLine } from 'components/Project/VolumeStatLine' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import useTerminalCurrentOverflow from 'hooks/v2v3/contractReader/useTerminalCurrentOverflow' -import { useContext } from 'react' -import DistributedRatio from './DistributedRatio' -import OwnerBalance from './OwnerBalance' -import ProjectBalance from './ProjectBalance' - -export default function TreasuryStats() { - const { - balanceInDistributionLimitCurrency, - distributionLimit, - totalVolume, - primaryETHTerminal, - loading: { distributionLimitLoading }, - } = useContext(V2V3ProjectContext) - const { projectId } = useContext(ProjectMetadataContext) - - const { data: overflow, loading: overflowLoading } = - useTerminalCurrentOverflow({ - terminal: primaryETHTerminal, - projectId, - }) - - const fundingProgressBarLoading = overflowLoading || distributionLimitLoading - - return ( -
- - - - - {!fundingProgressBarLoading && distributionLimit ? ( - - ) : null} - - -
- ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3Dashboard.tsx b/src/components/v2v3/V2V3Project/V2V3Dashboard.tsx deleted file mode 100644 index 3e511634af..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3Dashboard.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import Loading from 'components/Loading' -import { V2V3Project } from 'components/v2v3/V2V3Project' -import { AnnouncementLauncher } from 'contexts/Announcements/AnnouncementLauncher' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { TransactionProvider } from 'contexts/Transaction/TransactionProvider' -import { useContext } from 'react' - -export default function V2V3Dashboard() { - const { projectMetadata } = useContext(ProjectMetadataContext) - - if (!projectMetadata) return - - return ( - - - - - - ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/CurrentFundingCycle.tsx b/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/CurrentFundingCycle.tsx deleted file mode 100644 index de4cb363b9..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/CurrentFundingCycle.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { LoadingOutlined } from '@ant-design/icons' -import { Trans } from '@lingui/macro' -import { CardSection } from 'components/CardSection' -import FundingCycleDetailsCard from 'components/Project/FundingCycleDetailsCard' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useContext } from 'react' -import { getV2V3FundingCycleRiskCount } from 'utils/v2v3/fundingCycle' -import FundingCycleDetails from './FundingCycleDetails' -import PayoutSplitsCard from './PayoutSplitsCard' -import ReservedTokensSplitsCard from './ReservedTokensSplitsCard' - -export function CurrentFundingCycle() { - const { - fundingCycle, - payoutSplits, - distributionLimitCurrency, - distributionLimit, - reservedTokensSplits, - fundingCycleMetadata, - loading: { fundingCycleLoading }, - } = useContext(V2V3ProjectContext) - - if (fundingCycleLoading) { - return - } - - if (!fundingCycle || fundingCycle.number.eq(0) || !fundingCycleMetadata) { - return ( - - No active cycle. - - ) - } - - return ( -
- - - } - fundingCycleDurationSeconds={fundingCycle.duration} - fundingCycleStartTime={fundingCycle.start} - isFundingCycleRecurring={true} - fundingCycleRiskCount={getV2V3FundingCycleRiskCount( - fundingCycle, - fundingCycleMetadata, - )} - /> - - - - -
- ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/FundingCycleHistory/FundingCycleHistory.tsx b/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/FundingCycleHistory/FundingCycleHistory.tsx deleted file mode 100644 index b9115ba47d..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/FundingCycleHistory/FundingCycleHistory.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { Trans } from '@lingui/macro' -import Loading from 'components/Loading' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { V2V3ProjectContractsContext } from 'contexts/v2v3/ProjectContracts/V2V3ProjectContractsContext' -import { - V2V3FundingCycle, - V2V3FundingCycleMetadata, -} from 'models/v2v3/fundingCycle' -import { useContext, useEffect, useState } from 'react' -import { PastFundingCycle } from './PastFundingCycle' -import { fetchPastFundingCycles } from './utils' - -export function FundingCycleHistory() { - const { projectId } = useContext(ProjectMetadataContext) - const { - contracts: { JBController }, - } = useContext(V2V3ProjectContractsContext) - const { fundingCycle: currentFundingCycle } = useContext(V2V3ProjectContext) - - const [pastFundingCycles, setPastFundingCycles] = useState< - [V2V3FundingCycle, V2V3FundingCycleMetadata][] - >([]) - - useEffect(() => { - async function loadPastFundingCycles() { - if (!projectId || !currentFundingCycle || !JBController) return - - const pastFundingCycles = await fetchPastFundingCycles({ - projectId, - currentFundingCycle, - JBController, - }) - - setPastFundingCycles(pastFundingCycles) - } - - loadPastFundingCycles() - }, [JBController, projectId, currentFundingCycle]) - - if (!projectId || !currentFundingCycle || !currentFundingCycle?.number) - return null - - const allCyclesLoaded = - pastFundingCycles.length >= currentFundingCycle.number.toNumber() - 1 - - if (!allCyclesLoaded) return - if (!pastFundingCycles.length) - return ( -
- No previous cycles -
- ) - - return ( -
- {pastFundingCycles.map(([fundingCycle, fundingCycleMetadata]) => ( - - ))} -
- ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/FundingCycleHistory/PastFundingCycle.tsx b/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/FundingCycleHistory/PastFundingCycle.tsx deleted file mode 100644 index 181017e543..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/FundingCycleHistory/PastFundingCycle.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import { CaretRightOutlined } from '@ant-design/icons' -import { t, Trans } from '@lingui/macro' -import { Modal } from 'antd' -import CurrencySymbol from 'components/currency/CurrencySymbol' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import useProjectDistributionLimit from 'hooks/v2v3/contractReader/useProjectDistributionLimit' -import useUsedDistributionLimit from 'hooks/v2v3/contractReader/useUsedDistributionLimit' -import { V2V3CurrencyOption } from 'models/v2v3/currencyOption' -import { - V2V3FundingCycle, - V2V3FundingCycleMetadata, -} from 'models/v2v3/fundingCycle' -import { useContext, useState } from 'react' -import { formatHistoricalDate } from 'utils/format/formatDate' -import { formatWad } from 'utils/format/formatNumber' -import { V2V3CurrencyName } from 'utils/v2v3/currency' -import { MAX_DISTRIBUTION_LIMIT } from 'utils/v2v3/math' -import FundingCycleDetails from '../FundingCycleDetails' - -export function PastFundingCycle({ - fundingCycle, - fundingCycleMetadata, -}: { - fundingCycle: V2V3FundingCycle - fundingCycleMetadata: V2V3FundingCycleMetadata -}) { - const [modalVisible, setModalVisible] = useState(false) - const { primaryETHTerminal } = useContext(V2V3ProjectContext) - const { projectId } = useContext(ProjectMetadataContext) - - const { data: distributionLimitData } = useProjectDistributionLimit({ - projectId, - configuration: fundingCycle?.configuration?.toString(), - terminal: primaryETHTerminal, - }) - - const { data: usedDistributionLimit } = useUsedDistributionLimit({ - projectId, - terminal: primaryETHTerminal, - fundingCycleNumber: fundingCycle?.number, - }) - - const [distributionLimit, distributionLimitCurrency] = - distributionLimitData ?? [] - - const distributionLimitIsInfinite = distributionLimit?.eq( - MAX_DISTRIBUTION_LIMIT, - ) - const distributionLimitIsZero = !distributionLimit || distributionLimit?.eq(0) - - return ( - <> -
setModalVisible(true)} - > -
- {/* Ant fucking d.... */} -

#{fundingCycle.number.toString()}

- -
- - {!distributionLimitIsInfinite && !distributionLimitIsZero ? ( - - {formatWad(usedDistributionLimit, { precision: 2 })}/ - {formatWad(distributionLimit, { precision: 2 })} withdrawn - - ) : ( - - {formatWad(usedDistributionLimit, { precision: 2 })} withdrawn - - )} -
-
- -
- {formatHistoricalDate( - fundingCycle.start.add(fundingCycle.duration).mul(1000).toNumber(), - )} - -
-
- - setModalVisible(false)} - onOk={() => setModalVisible(false)} - cancelButtonProps={{ hidden: true }} - okText={t`Done`} - > - - - - ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/FundingCycleHistory/index.ts b/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/FundingCycleHistory/index.ts deleted file mode 100644 index 8ba285a282..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/FundingCycleHistory/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { FundingCycleHistory } from './FundingCycleHistory' diff --git a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/PayoutSplitsCard.tsx b/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/PayoutSplitsCard.tsx deleted file mode 100644 index d0150e55cb..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/PayoutSplitsCard.tsx +++ /dev/null @@ -1,183 +0,0 @@ -import { SettingOutlined } from '@ant-design/icons' -import { Trans } from '@lingui/macro' -import { Button, ButtonProps, Skeleton, Tooltip } from 'antd' -import { CardSection } from 'components/CardSection' -import SpendingStats from 'components/Project/SpendingStats' -import TooltipLabel from 'components/TooltipLabel' -import SplitList from 'components/v2v3/shared/SplitList' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { BigNumber } from 'ethers' -import { useV2V3WalletHasPermission } from 'hooks/v2v3/contractReader/useV2V3WalletHasPermission' -import { Split } from 'models/splits' -import { V2V3CurrencyOption } from 'models/v2v3/currencyOption' -import { V2V3OperatorPermission } from 'models/v2v3/permissions' -import Link from 'next/link' -import { useContext, useState } from 'react' -import { settingsPagePath } from 'utils/routes' -import { V2V3CurrencyName } from 'utils/v2v3/currency' -import { MAX_DISTRIBUTION_LIMIT, formatFee } from 'utils/v2v3/math' -import { reloadWindow } from 'utils/windowUtils' -import DistributePayoutsModal from './modals/DistributePayoutsModal' - -function DistributeButton({ - distributableAmount, - ...props -}: { - distributableAmount: BigNumber | undefined -} & ButtonProps): JSX.Element { - const distributeButtonDisabled = distributableAmount?.eq(0) - - return ( - No payouts remaining for this cycle.} - open={distributeButtonDisabled ? undefined : false} - > - - - ) -} - -export default function PayoutSplitsCard({ - hideDistributeButton, - payoutSplits, - distributionLimitCurrency, - distributionLimit, -}: { - hideDistributeButton?: boolean - payoutSplits: Split[] | undefined - distributionLimitCurrency: BigNumber | undefined - distributionLimit: BigNumber | undefined -}) { - const { - usedDistributionLimit, - projectOwnerAddress, - balanceInDistributionLimitCurrency, - loading, - handle, - primaryETHTerminalFee, - } = useContext(V2V3ProjectContext) - const { projectId } = useContext(ProjectMetadataContext) - - const [distributePayoutsModalVisible, setDistributePayoutsModalVisible] = - useState() - const isLoadingStats = - loading.ETHBalanceLoading || - loading.distributionLimitLoading || - loading.balanceInDistributionLimitCurrencyLoading || - loading.usedDistributionLimitLoading - - const canEditPayouts = useV2V3WalletHasPermission( - V2V3OperatorPermission.SET_SPLITS, - ) - - const effectiveDistributionLimit = distributionLimit ?? BigNumber.from(0) - const distributedAmount = usedDistributionLimit ?? BigNumber.from(0) - - const distributable = effectiveDistributionLimit.eq(0) - ? effectiveDistributionLimit - : effectiveDistributionLimit.sub(distributedAmount) - - const distributableAmount = balanceInDistributionLimitCurrency?.gt( - distributable, - ) - ? distributable - : balanceInDistributionLimitCurrency - - return ( - -
- {hideDistributeButton ? null : ( -
- - - - -
- setDistributePayoutsModalVisible(true)} - /> -
-
- )} -
-
- - Payouts - - } - tip={ - This cycle's payouts. Payouts reset each cycle. - } - /> - {canEditPayouts && ( - - - - )} -
- {payoutSplits && distributionLimit?.gt(0) ? ( - - ) : ( - - No payouts scheduled for this cycle. - - )} -
-
- - setDistributePayoutsModalVisible(false)} - onConfirmed={reloadWindow} - /> -
- ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/ReservedTokensSplitsCard.tsx b/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/ReservedTokensSplitsCard.tsx deleted file mode 100644 index 8eb7a9e538..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/ReservedTokensSplitsCard.tsx +++ /dev/null @@ -1,180 +0,0 @@ -import { SettingOutlined } from '@ant-design/icons' -import { t, Trans } from '@lingui/macro' -import { Button, Skeleton, Tooltip } from 'antd' -import { CardSection } from 'components/CardSection' -import { TokenAmount } from 'components/TokenAmount' -import TooltipIcon from 'components/TooltipIcon' -import TooltipLabel from 'components/TooltipLabel' -import SplitList from 'components/v2v3/shared/SplitList' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { BigNumber } from 'ethers' -import { useProjectReservedTokens } from 'hooks/v2v3/contractReader/ProjectReservedTokens' -import { useV2V3WalletHasPermission } from 'hooks/v2v3/contractReader/useV2V3WalletHasPermission' -import { Split } from 'models/splits' -import { V2V3OperatorPermission } from 'models/v2v3/permissions' -import Link from 'next/link' -import { useContext, useState } from 'react' -import { settingsPagePath } from 'utils/routes' -import { tokenSymbolText } from 'utils/tokenSymbolText' -import { formatReservedRate } from 'utils/v2v3/math' -import { reloadWindow } from 'utils/windowUtils' -import DistributeReservedTokensModal from './modals/DistributeReservedTokensModal' - -export default function ReservedTokensSplitsCard({ - hideDistributeButton, - reservedTokensSplits, - reservedRate, -}: { - hideDistributeButton?: boolean - reservedTokensSplits: Split[] | undefined - reservedRate: BigNumber | undefined -}) { - const { tokenSymbol, projectOwnerAddress, handle } = - useContext(V2V3ProjectContext) - const { projectId } = useContext(ProjectMetadataContext) - - const effectiveReservedRate = reservedRate ?? BigNumber.from(0) - - const [ - distributeReservedTokensModalVisible, - setDistributeReservedTokensModalVisible, - ] = useState() - const { data: reservedTokens, loading: loadingReservedTokens } = - useProjectReservedTokens({ - projectId, - reservedRate: reservedRate, - }) - const canEditTokens = useV2V3WalletHasPermission( - V2V3OperatorPermission.SET_SPLITS, - ) - - const tokensText = tokenSymbolText({ - tokenSymbol, - capitalize: false, - plural: true, - }) - - const distributeButtonDisabled = reservedTokens?.eq(0) - - const DistributeButton = ( - - ) - - return ( - -
- {hideDistributeButton ? null : ( -
-
- - {reservedTokens ? ( - - - {' '} - - reserved - - {' '} - - Project tokens currently reserved for the recipients - below. These tokens can be sent out at any time. - - } - /> - - ) : null}{' '} - -
- {reservedTokens?.eq(0) ? ( - -
{DistributeButton}
-
- ) : ( - DistributeButton - )} -
- )} - -
-
- - Reserved tokens ( - {formatReservedRate(reservedRate)}%) - - } - tip={ - - Projects can reserve a percentage of token issuance for the - recipients set by the project owner. - - } - /> - {canEditTokens && reservedRate?.gt(0) ? ( - - - - ) : null} -
- {effectiveReservedRate.gt(0) ? ( - reservedTokensSplits ? ( - - ) : null - ) : ( - - This project doesn't reserve any tokens. - - )} -
-
- - setDistributeReservedTokensModalVisible(false)} - onConfirmed={reloadWindow} - /> -
- ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/UpcomingFundingCycle.tsx b/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/UpcomingFundingCycle.tsx deleted file mode 100644 index 7daa9f2a62..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/UpcomingFundingCycle.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import { Trans } from '@lingui/macro' -import { CardSection } from 'components/CardSection' -import Loading from 'components/Loading' -import FundingCycleDetailsCard from 'components/Project/FundingCycleDetailsCard' -import { - ETH_PAYOUT_SPLIT_GROUP, - RESERVED_TOKEN_SPLIT_GROUP, -} from 'constants/splits' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import useProjectDistributionLimit from 'hooks/v2v3/contractReader/useProjectDistributionLimit' -import useProjectSplits from 'hooks/v2v3/contractReader/useProjectSplits' -import { useProjectUpcomingFundingCycle } from 'hooks/v2v3/contractReader/useProjectUpcomingFundingCycle' -import { useContext } from 'react' -import { getV2V3FundingCycleRiskCount } from 'utils/v2v3/fundingCycle' -import FundingCycleDetails from './FundingCycleDetails' -import PayoutSplitsCard from './PayoutSplitsCard' -import ReservedTokensSplitsCard from './ReservedTokensSplitsCard' - -export function UpcomingFundingCycle() { - const { primaryETHTerminal } = useContext(V2V3ProjectContext) - const { projectId } = useContext(ProjectMetadataContext) - - const { data: upcomingFundingCycleResponse, loading } = - useProjectUpcomingFundingCycle({ projectId }) - const [upcomingFundingCycle, upcomingFundingCycleMetadata, ballotState] = - upcomingFundingCycleResponse ?? [] - - const { data: queuedPayoutSplits } = useProjectSplits({ - projectId, - splitGroup: ETH_PAYOUT_SPLIT_GROUP, - domain: upcomingFundingCycle?.configuration?.toString(), - }) - - const { data: queuedReservedTokensSplits } = useProjectSplits({ - projectId, - splitGroup: RESERVED_TOKEN_SPLIT_GROUP, - domain: upcomingFundingCycle?.configuration?.toString(), - }) - - const { data: queuedDistributionLimitData } = useProjectDistributionLimit({ - projectId, - configuration: upcomingFundingCycle?.configuration.toString(), - terminal: primaryETHTerminal, - }) - const [queuedDistributionLimit, queuedDistributionLimitCurrency] = - queuedDistributionLimitData ?? [] - - if (loading) return - - if (!upcomingFundingCycle || !upcomingFundingCycleMetadata) { - return ( - - No upcoming cycle. - - ) - } - - return ( -
- - - } - fundingCycleDurationSeconds={upcomingFundingCycle.duration} - fundingCycleStartTime={upcomingFundingCycle.start} - isFundingCycleRecurring - fundingCycleRiskCount={getV2V3FundingCycleRiskCount( - upcomingFundingCycle, - upcomingFundingCycleMetadata, - )} - ballotState={ballotState} - ballotStrategyAddress={upcomingFundingCycle.ballot} - /> - - - - -
- ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/index.tsx b/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/index.tsx deleted file mode 100644 index 7039b7f966..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3FundingCycleSection/index.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import { ExclamationCircleOutlined, SettingOutlined } from '@ant-design/icons' -import { Trans, t } from '@lingui/macro' -import { Button, Tooltip } from 'antd' -import { CardSection } from 'components/CardSection' -import Loading from 'components/Loading' -import FundingCycleSection, { - TabType, -} from 'components/Project/FundingCycleSection' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useV2V3WalletHasPermission } from 'hooks/v2v3/contractReader/useV2V3WalletHasPermission' -import { V2V3OperatorPermission } from 'models/v2v3/permissions' -import Link from 'next/link' -import { useContext } from 'react' -import { settingsPagePath } from 'utils/routes' -import { - getV2V3FundingCycleRiskCount, - hasFundingDuration, -} from 'utils/v2v3/fundingCycle' -import { serializeV2V3FundingCycleData } from 'utils/v2v3/serializers' -import { CurrentFundingCycle } from './CurrentFundingCycle' -import { FundingCycleHistory } from './FundingCycleHistory' -import { UpcomingFundingCycle } from './UpcomingFundingCycle' - -const TabText = ({ - text, - hideRiskFlag, -}: { - text: string - hideRiskFlag?: boolean -}) => { - const { fundingCycle, fundingCycleMetadata } = useContext(V2V3ProjectContext) - - const hasRisks = - fundingCycle && - fundingCycleMetadata && - getV2V3FundingCycleRiskCount(fundingCycle, fundingCycleMetadata) - - if (!hasRisks || hideRiskFlag) { - return {text} - } - - return ( - - This cycle's rules may lead to unexpected behavior. Before paying this - project, know and understand its rules. - - } - > - - {text} - - - - ) -} - -export default function V2V3FundingCycleSection() { - const { - fundingCycle, - handle, - loading: { fundingCycleLoading }, - } = useContext(V2V3ProjectContext) - const { projectId } = useContext(ProjectMetadataContext) - - const currentCycleHasDuration = - fundingCycle && - hasFundingDuration(serializeV2V3FundingCycleData(fundingCycle)) - - const canReconfigure = useV2V3WalletHasPermission( - V2V3OperatorPermission.RECONFIGURE, - ) - - if (fundingCycleLoading) { - return - } - - const reconfigureButtonText = currentCycleHasDuration ? ( - Edit upcoming cycle - ) : ( - Edit cycle - ) - - const tabs = [ - { - key: 'current', - label: , - content: , - }, - currentCycleHasDuration && { - key: 'upcoming', - label: , - content: , - }, - { - key: 'history', - label: , - content: ( - - - - ), - }, - ].filter(Boolean) as TabType[] - - return ( - - - - ) : null - } - hideTitle - /> - ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/AccountBalanceDescription/AccountBalanceDescription.tsx b/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/AccountBalanceDescription/AccountBalanceDescription.tsx deleted file mode 100644 index 010b84a084..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/AccountBalanceDescription/AccountBalanceDescription.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import { Trans } from '@lingui/macro' -import { Button } from 'antd' -import { TokenAmount } from 'components/TokenAmount' -import ManageTokensModal from 'components/modals/ManageTokensModal' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import useERC20BalanceOf from 'hooks/ERC20/useERC20BalanceOf' -import { useWallet } from 'hooks/Wallet' -import useTotalBalanceOf from 'hooks/v2v3/contractReader/useTotalBalanceOf' -import { useV2V3WalletHasPermission } from 'hooks/v2v3/contractReader/useV2V3WalletHasPermission' -import { useTransferUnclaimedTokensTx } from 'hooks/v2v3/transactor/useTransferUnclaimedTokensTx' -import { useIsOwnerConnected } from 'hooks/v2v3/useIsOwnerConnected' -import { useProjectHasErc20 } from 'hooks/v2v3/useProjectHasErc20' -import { V2V3OperatorPermission } from 'models/v2v3/permissions' -import { useContext, useState } from 'react' -import { formatPercent, fromWad, parseWad } from 'utils/format/formatNumber' -import { tokenSymbolText } from 'utils/tokenSymbolText' -import { V2V3BurnOrRedeemModal } from './V2V3BurnOrRedeemModal' -import { V2V3ClaimTokensModal } from './V2V3ClaimTokensModal' -import { V2V3MintModal } from './V2V3MintModal' - -export function AccountBalanceDescription() { - const { - tokenAddress, - tokenSymbol, - totalTokenSupply, - fundingCycleMetadata, - primaryTerminalCurrentOverflow, - } = useContext(V2V3ProjectContext) - const { projectId } = useContext(ProjectMetadataContext) - - const [manageTokensModalVisible, setManageTokensModalVisible] = - useState(false) - - const { userAddress } = useWallet() - const { data: claimedBalance } = useERC20BalanceOf(tokenAddress, userAddress) - const { data: totalBalance } = useTotalBalanceOf(userAddress, projectId) - const unclaimedBalance = totalBalance?.sub(claimedBalance ?? 0) - const userHasMintPermission = useV2V3WalletHasPermission( - V2V3OperatorPermission.MINT, - ) - const ownerIsConnected = useIsOwnerConnected() - const hasIssuedERC20 = useProjectHasErc20() - - const totalTokenSupplyDiscrete = parseInt(fromWad(totalTokenSupply)) - const totalBalanceWithLock = parseInt(fromWad(totalBalance)) - // %age of tokens the user owns. - const userOwnershipPercentage = - formatPercent( - parseWad(totalBalanceWithLock), - parseWad(totalTokenSupplyDiscrete), - ) || '0' - - const hasOverflow = Boolean(primaryTerminalCurrentOverflow?.gt(0)) - const redeemDisabled = Boolean( - !hasOverflow || fundingCycleMetadata?.redemptionRate.eq(0), - ) - - const tokenText = tokenSymbolText({ - tokenSymbol, - capitalize: false, - plural: true, - }) - - const projectAllowsMint = Boolean(fundingCycleMetadata?.allowMinting) - const showManageTokensButton = Boolean( - totalBalance?.gt(0) || (projectAllowsMint && ownerIsConnected), - ) - - return ( - <> -
- {hasIssuedERC20 && claimedBalance ? ( -
- -
- ) : null} -
- {unclaimedBalance ? ( - hasIssuedERC20 ? ( - - {' '} - claimable - - ) : ( - - ) - ) : null} -
-
- {userOwnershipPercentage}% of total supply -
-
- - {showManageTokensButton ? ( - - ) : null} - - setManageTokensModalVisible(false)} - projectAllowsMint={projectAllowsMint} - userHasMintPermission={userHasMintPermission} - hasOverflow={hasOverflow} - redeemDisabled={redeemDisabled} - tokenSymbol={tokenSymbol} - tokenAddress={tokenAddress} - tokenUnclaimedBalance={unclaimedBalance} - transferUnclaimedTokensTx={useTransferUnclaimedTokensTx} - RedeemModal={V2V3BurnOrRedeemModal} - ClaimTokensModal={V2V3ClaimTokensModal} - MintModal={V2V3MintModal} - /> - - ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/AccountBalanceDescription/index.ts b/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/AccountBalanceDescription/index.ts deleted file mode 100644 index 349c621675..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/AccountBalanceDescription/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './AccountBalanceDescription' diff --git a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/LegacyProjectTokensDescription/LegacyProjectTokensDescription.tsx b/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/LegacyProjectTokensDescription/LegacyProjectTokensDescription.tsx deleted file mode 100644 index e4be49da5c..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/LegacyProjectTokensDescription/LegacyProjectTokensDescription.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { Trans } from '@lingui/macro' -import { Button } from 'antd' -import { TokenAmount } from 'components/TokenAmount' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V1UserProvider } from 'contexts/v1/User/V1UserProvider' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useTotalLegacyTokenBalance } from 'hooks/JBV3Token/contractReader/useTotalLegacyTokenBalance' -import { useContext, useState } from 'react' -import { MigrateLegacyProjectTokensModal } from './MigrateLegacyProjectTokensModal' - -export function LegacyProjectTokensDescription() { - const { projectId } = useContext(ProjectMetadataContext) - const { tokenSymbol } = useContext(V2V3ProjectContext) - - const [modalOpen, setModalOpen] = useState(false) - - const { totalLegacyTokenBalance, v1ClaimedBalance } = - useTotalLegacyTokenBalance({ projectId }) - - return ( - <> - - - - - {totalLegacyTokenBalance?.gt(0) && ( - <> - - {modalOpen && ( - - setModalOpen(false)} - /> - - )} - - )} - - ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/LegacyProjectTokensDescription/LegacyProjectTokensDescriptionHeading.tsx b/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/LegacyProjectTokensDescription/LegacyProjectTokensDescriptionHeading.tsx deleted file mode 100644 index 983db39abe..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/LegacyProjectTokensDescription/LegacyProjectTokensDescriptionHeading.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Trans } from '@lingui/macro' -import TooltipIcon from 'components/TooltipIcon' - -export function LegacyProjectTokensDescriptionHeading() { - return ( - - Legacy balance - - Your total token balance for this project's legacy tokens (V1 or V2 - tokens). - - } - /> - - ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/LegacyProjectTokensDescription/index.tsx b/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/LegacyProjectTokensDescription/index.tsx deleted file mode 100644 index 7d8e5ab1d8..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/LegacyProjectTokensDescription/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export * from './LegacyProjectTokensDescription' -export * from './LegacyProjectTokensDescriptionHeading' diff --git a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/ProjectTokenDescription/ProjectTokenDescription.tsx b/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/ProjectTokenDescription/ProjectTokenDescription.tsx deleted file mode 100644 index 56a4c18473..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/ProjectTokenDescription/ProjectTokenDescription.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import EthereumAddress from 'components/EthereumAddress' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useContext } from 'react' - -export function ProjectTokenDescription() { - const { tokenSymbol, tokenAddress } = useContext(V2V3ProjectContext) - - return ( -
- {tokenSymbol} ( - ) -
- ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/ProjectTokenDescription/index.ts b/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/ProjectTokenDescription/index.ts deleted file mode 100644 index 116f3429ef..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/ProjectTokenDescription/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './ProjectTokenDescription' diff --git a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/TotalSupplyDescription.tsx b/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/TotalSupplyDescription.tsx deleted file mode 100644 index 1b9966f38f..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/TotalSupplyDescription.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { Trans } from '@lingui/macro' -import { TokenAmount } from 'components/TokenAmount' -import { TextButton } from 'components/buttons/TextButton' -import ParticipantsModal from 'components/modals/ParticipantsModal' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useContext, useState } from 'react' - -export function TotalSupplyDescription() { - const { tokenSymbol, tokenAddress, totalTokenSupply } = - useContext(V2V3ProjectContext) - - const [participantsModalVisible, setParticipantsModalVisible] = - useState(false) - - if (!totalTokenSupply) return null - - return ( - <> -
-
- -
- {totalTokenSupply.gt(0) ? ( - setParticipantsModalVisible(true)}> - Holders - - ) : null} -
- setParticipantsModalVisible(false)} - /> - - ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/V2V3ManageTokensSection.tsx b/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/V2V3ManageTokensSection.tsx deleted file mode 100644 index 1ae8084cf3..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/V2V3ManageTokensSection.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import { t, Trans } from '@lingui/macro' -import { Descriptions } from 'antd' -import { IssueErc20TokenButton } from 'components/buttons/IssueErc20TokenButton' -import SectionHeader from 'components/SectionHeader' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useProjectHasLegacyTokens } from 'hooks/JBV3Token/contractReader/useProjectHasLegacyTokens' -import { useV2V3WalletHasPermission } from 'hooks/v2v3/contractReader/useV2V3WalletHasPermission' -import { useProjectHasErc20 } from 'hooks/v2v3/useProjectHasErc20' -import { useWallet } from 'hooks/Wallet' -import { V2V3OperatorPermission } from 'models/v2v3/permissions' -import { CSSProperties, useContext } from 'react' -import { tokenSymbolText } from 'utils/tokenSymbolText' -import { reloadWindow } from 'utils/windowUtils' -import { AccountBalanceDescription } from './AccountBalanceDescription' -import { - LegacyProjectTokensDescription, - LegacyProjectTokensDescriptionHeading, -} from './LegacyProjectTokensDescription' -import { ProjectTokenDescription } from './ProjectTokenDescription' -import { TotalSupplyDescription } from './TotalSupplyDescription' - -const labelStyle: CSSProperties = { - width: '10.5rem', -} -const contentStyle: CSSProperties = { - display: 'flex', - flexWrap: 'wrap', - gap: 5, - justifyContent: 'space-between', - width: '10.5rem', - alignItems: 'flex-start', -} - -export function V2V3ManageTokensSection() { - const { tokenSymbol } = useContext(V2V3ProjectContext) - const { userAddress } = useWallet() - const hasIssueTicketsPermission = useV2V3WalletHasPermission( - V2V3OperatorPermission.ISSUE, - ) - - const hasIssuedERC20 = useProjectHasErc20() - const showIssueErc20TokenButton = !hasIssuedERC20 && hasIssueTicketsPermission - const showLegacyProjectTokensSection = useProjectHasLegacyTokens() - - const tokenText = tokenSymbolText({ - tokenSymbol, - capitalize: false, - plural: true, - includeTokenWord: true, - }) - - return ( -
-
- Tokens} - tip={ - - Anyone who pays this project receives {tokenText}. Depending on - this project's rules, it may be possible to redeem {tokenText} to - reclaim ETH. - - } - /> - {showIssueErc20TokenButton && ( - - )} -
- - {hasIssuedERC20 && tokenSymbol && ( - - - - )} - - - - - {userAddress ? ( - <> - - - - - {showLegacyProjectTokensSection && ( - } - labelStyle={labelStyle} - contentStyle={contentStyle} - className="pt-5" - > - - - )} - - ) : null} - -
- ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/index.tsx b/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/index.tsx deleted file mode 100644 index 7d452d7652..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3ManageTokensSection/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { V2V3ManageTokensSection } from './V2V3ManageTokensSection' diff --git a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/NftRewardCell.tsx b/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/NftRewardCell.tsx deleted file mode 100644 index 0208d23f9c..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/NftRewardCell.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { Tooltip } from 'antd' -import ExternalLink from 'components/ExternalLink' -import { JuiceVideoThumbnailOrImage } from 'components/JuiceVideo/JuiceVideoThumbnailOrImage' -import { NftRewardTier } from 'models/nftRewards' -import { classNames } from 'utils/classNames' -import { ipfsUriToGatewayUrl } from 'utils/ipfs' - -export function NftRewardCell({ - nftRewards, -}: { - nftRewards: NftRewardTier[] -}): JSX.Element { - const uniqueTiersIdsAndCounts = nftRewards.reduce( - (acc: Record, curr) => { - acc[curr.id ?? -1] = (acc[curr.id ?? -1] || 0) + 1 - return acc - }, - {}, - ) - return ( -
- {Object.keys(uniqueTiersIdsAndCounts).map((tierId, idx) => { - const tier = nftRewards.find(_tier => _tier.id === parseInt(tierId)) - if (!tier?.id) return - const tierCount = uniqueTiersIdsAndCounts[tier.id] - const isLink = tier.externalLink - - return ( -
- - {tier.name} - -
({tierCount})
- - - - -
- ) - })} -
- ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/TCCheckboxContent.tsx b/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/TCCheckboxContent.tsx deleted file mode 100644 index 65f917ed0a..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/TCCheckboxContent.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { Trans } from '@lingui/macro' -import { Modal } from 'antd' -import ExternalLink from 'components/ExternalLink' -import ProjectRiskNotice from 'components/ProjectRiskNotice' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useContext, useState } from 'react' -import { helpPagePath } from 'utils/routes' -import { - getUnsafeV2V3FundingCycleProperties, - getV2V3FundingCycleRiskCount, -} from 'utils/v2v3/fundingCycle' - -export function TCCheckboxContent() { - const { fundingCycle, fundingCycleMetadata } = useContext(V2V3ProjectContext) - - const [riskModalVisible, setRiskModalVisible] = useState() - const riskCount = - fundingCycle && fundingCycleMetadata - ? getV2V3FundingCycleRiskCount(fundingCycle, fundingCycleMetadata) - : undefined - - return ( - <> - - {riskCount ? ( - - I understand and accept the risks associated with{' '} - { - setRiskModalVisible(true) - e.preventDefault() - }} - > - this project - {' '} - and the{' '} - - Juicebox Protocol - - . - - ) : ( - - I accept the{' '} - - risks - {' '} - associated with the Juicebox protocol. - - )} - - - Potential risks} - open={riskModalVisible} - okButtonProps={{ hidden: true }} - onCancel={() => setRiskModalVisible(false)} - cancelText={Close} - > - {fundingCycle && fundingCycleMetadata && ( - - )} - - - ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/V2V3ConfirmPayModal.tsx b/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/V2V3ConfirmPayModal.tsx deleted file mode 100644 index 3bcead28da..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/V2V3ConfirmPayModal.tsx +++ /dev/null @@ -1,170 +0,0 @@ -import { t, Trans } from '@lingui/macro' -import { useForm } from 'antd/lib/form/Form' -import ETHAmount from 'components/currency/ETHAmount' -import TransactionModal from 'components/modals/TransactionModal' -import { NFT_PAYMENT_CONFIRMED_QUERY_PARAM } from 'components/NftRewards/NftPostPayModal' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { BigNumber } from 'ethers' -import { usePayETHPaymentTerminalTx } from 'hooks/v2v3/transactor/usePayETHPaymentTerminalTx' -import { useWallet } from 'hooks/Wallet' -import { useRouter } from 'next/router' -import { useContext, useEffect, useState } from 'react' -import { buildPaymentMemo } from 'utils/buildPaymentMemo' -import { emitErrorNotification } from 'utils/notifications' -import { v2v3ProjectRoute } from 'utils/routes' -import { useDelegateMetadata } from './hooks/useDelegateMetadata.tsx' -import { useNftRewardTiersToMint } from './hooks/useNftRewardTiersToMint.tsx' -import { V2V3PayForm, V2V3PayFormType } from './V2V3PayForm' - -export function V2V3ConfirmPayModal({ - open, - weiAmount, - onCancel, -}: { - open?: boolean - weiAmount: BigNumber | undefined - onCancel?: VoidFunction -}) { - const { fundingCycle, handle } = useContext(V2V3ProjectContext) - const { projectMetadata, projectId } = useContext(ProjectMetadataContext) - - const [loading, setLoading] = useState() - const [transactionPending, setTransactionPending] = useState() - const [form] = useForm() - - const router = useRouter() - const { - userAddress, - chainUnsupported, - isConnected, - changeNetworks, - connect, - } = useWallet() - const delegateMetadata = useDelegateMetadata() - const nftRewardTiers = useNftRewardTiersToMint() - const payProjectTx = usePayETHPaymentTerminalTx() - - // Use the userAddress as the beneficiary by default, reset whenever form is opened - useEffect(() => { - form.setFieldValue('beneficiary', userAddress) - }, [userAddress, form, open]) - - if (!fundingCycle || !projectId || !projectMetadata) return null - - const handleOkButtonClick = async () => { - // Prompt wallet connect if no wallet connected - if (chainUnsupported) { - await changeNetworks() - return - } - if (!isConnected) { - await connect() - return - } - - form.submit() - } - - const handlePaySuccess = () => { - onCancel?.() - setLoading(false) - setTransactionPending(false) - - form.resetFields() - - if (nftRewardTiers && projectMetadata?.nftPaymentSuccessModal) { - router.replace( - `${v2v3ProjectRoute({ - handle, - projectId, - })}?${NFT_PAYMENT_CONFIRMED_QUERY_PARAM}=1`, - ) - } - } - - async function executePayTx() { - if (!weiAmount || !projectId) return - - const { - beneficiary, - memo: textMemo, - preferClaimedTokens, - stickerUrls, - uploadedImage, - } = form.getFieldsValue() - - const txBeneficiary = beneficiary ?? userAddress - - setLoading(true) - - try { - const txSuccess = await payProjectTx( - { - memo: buildPaymentMemo({ - text: textMemo, - imageUrl: uploadedImage, - stickerUrls, - nftUrls: nftRewardTiers?.map(tier => tier.fileUrl), - }), - preferClaimedTokens: Boolean(preferClaimedTokens), - beneficiary: txBeneficiary, - value: weiAmount, - delegateMetadata, - }, - { - onConfirmed() { - handlePaySuccess() - }, - onError() { - setLoading(false) - setTransactionPending(false) - }, - onDone() { - setTransactionPending(true) - }, - }, - ) - - if (!txSuccess) { - setLoading(false) - setTransactionPending(false) - } - } catch (error) { - emitErrorNotification(`Failure: ${error}`) - setLoading(false) - setTransactionPending(false) - } - } - - return ( - - - Pay - - - } - connectWalletText={t`Connect wallet to pay`} - onCancel={() => { - form.resetFields() - onCancel?.() - }} - confirmLoading={loading} - width={640} - centered - destroyOnClose - > - executePayTx()} - /> - - ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/V2V3PayForm.tsx b/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/V2V3PayForm.tsx deleted file mode 100644 index 895cc1850b..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/V2V3PayForm.tsx +++ /dev/null @@ -1,330 +0,0 @@ -import { CrownOutlined } from '@ant-design/icons' -import { t, Trans } from '@lingui/macro' -import { Button, Checkbox, Form } from 'antd' -import { FormInstance, FormProps, useWatch } from 'antd/lib/form/Form' -import { Callout } from 'components/Callout' -import ETHAmount from 'components/currency/ETHAmount' -import USDAmount from 'components/currency/USDAmount' -import EthereumAddress from 'components/EthereumAddress' -import Sticker from 'components/icons/Sticker' -import { EthAddressInput } from 'components/inputs/EthAddressInput' -import { FormImageUploader } from 'components/inputs/FormImageUploader' -import { JuiceTextArea } from 'components/inputs/JuiceTextArea' -import { AttachStickerModal } from 'components/modals/AttachStickerModal' -import Paragraph from 'components/Paragraph' -import { Parenthesis } from 'components/Parenthesis' -import { StickerSelection } from 'components/Project/StickerSelection' -import TooltipIcon from 'components/TooltipIcon' -import { ProjectPreferences } from 'constants/projectPreferences' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { BigNumber } from 'ethers' -import { isAddress } from 'ethers/lib/utils' -import { useCurrencyConverter } from 'hooks/useCurrencyConverter' -import { useProjectHasErc20 } from 'hooks/v2v3/useProjectHasErc20' -import { useContext, useState } from 'react' -import { twJoin } from 'tailwind-merge' -import { isZeroAddress } from 'utils/address' -import { classNames } from 'utils/classNames' -import { formatWad, parseWad } from 'utils/format/formatNumber' -import { tokenSymbolText } from 'utils/tokenSymbolText' -import { weightAmountPermyriad } from 'utils/v2v3/math' -import { useNftRewardTiersToMint } from './hooks/useNftRewardTiersToMint.tsx' -import { NftRewardCell } from './NftRewardCell' -import { TCCheckboxContent } from './TCCheckboxContent' - -export interface V2V3PayFormType { - memo?: string - beneficiary?: string - stickerUrls?: string[] - uploadedImage?: string - preferClaimedTokens?: boolean -} - -export const V2V3PayForm = ({ - weiAmount, - form, - ...props -}: { - weiAmount: BigNumber | undefined - form: FormInstance -} & FormProps) => { - const { fundingCycle, fundingCycleMetadata, tokenSymbol } = - useContext(V2V3ProjectContext) - const { projectMetadata } = useContext(ProjectMetadataContext) - - const [customBeneficiaryEnabled, setCustomBeneficiaryEnabled] = - useState(false) - const [attachStickerModalVisible, setAttachStickerModalVisible] = - useState(false) - - const hasIssuedTokens = useProjectHasErc20() - const nftRewardTiers = useNftRewardTiersToMint() - const converter = useCurrencyConverter() - const usdAmount = converter.weiToUsd(weiAmount) - - const beneficiary = useWatch('beneficiary', form) - const stickerUrls = useWatch('stickerUrls', form) - - const hasStickers = (stickerUrls ?? []).length > 0 - const canAddMoreStickers = - (stickerUrls ?? []).length < ProjectPreferences.MAX_IMAGES_PAYMENT_MEMO - - const tokensReceived = weightAmountPermyriad( - fundingCycle?.weight, - fundingCycleMetadata?.reservedRate?.toNumber(), - weiAmount, - 'payer', - ) - const tokensReceivedFormatted = - formatWad(tokensReceived, { precision: 2 }) ?? '0' - const tokensText = tokenSymbolText({ - tokenSymbol, - plural: parseFloat(tokensReceived) !== 1, - }) - - return ( - <> -
-
-
-
- - Amount: - - - {' '} - - - - -
- -
- - Receive: - -
-
- - - {beneficiary && !customBeneficiaryEnabled && ( - - )} - - {customBeneficiaryEnabled ? ( - - ) : ( - - )} -
-
- {tokensReceivedFormatted} {tokensText} -
- {nftRewardTiers?.length ? ( -
- -
- ) : null} -
-
-
- -
- - - e.preventDefault()} // prevent new lines in memo - showCount - autoSize - /> - -
- { - { - canAddMoreStickers - ? setAttachStickerModalVisible(true) - : undefined - }} - role="button" - /> - } -
-
- - - - - - - - -
- - {projectMetadata?.payDisclosure && ( - } - className="border border-solid border-grey-200 dark:border-grey-400" - > - - Notice from {projectMetadata.name} - - - - )} - -
- {hasIssuedTokens && ( - - - Receive ERC-20 tokens{' '} - - Mint this project's ERC-20 tokens to your wallet. Leave - unchecked to have Juicebox track your token balance, - saving gas on this transaction. You can claim your - ERC-20 tokens later. - - } - > - - - )} - - value - ? Promise.resolve() - : Promise.reject( - new Error(t`You must review and accept the risks.`), - ), - }, - ]} - > - - - - - {projectMetadata?.payDisclosure ? ( - - value - ? Promise.resolve() - : Promise.reject( - new Error( - t`You must understand and accept this project's notice.`, - ), - ), - }, - ]} - > - - - - I understand and accept this project's notice. - - - - - ) : ( - '' - )} -
-
-
- - setAttachStickerModalVisible(false)} - onSelect={sticker => { - if (typeof window === 'undefined') { - return - } - const url = new URL(`${window.location.origin}${sticker.filepath}`) - const urlString = url.toString() - - const existingStickerUrls = (form.getFieldValue('stickerUrls') ?? - []) as string[] - const updatedStickerUrls = [...existingStickerUrls, urlString] - - form.setFieldsValue({ - stickerUrls: updatedStickerUrls, - }) - }} - /> - - ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/V2V3PayProjectFormProvider.tsx b/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/V2V3PayProjectFormProvider.tsx deleted file mode 100644 index 5999408f1d..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/V2V3PayProjectFormProvider.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { usePayProjectForm } from 'components/Project/PayProjectForm/hooks/usePayProjectForm' -import { PayProjectFormContext } from 'components/Project/PayProjectForm/payProjectFormContext' -import { V2V3PayButton } from 'components/v2v3/V2V3Project/V2V3PayButton/V2V3PayButton' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useContext } from 'react' -import { weightAmountPermyriad } from 'utils/v2v3/math' - -export const V2V3PayProjectFormProvider: React.FC< - React.PropsWithChildren -> = ({ children }) => { - const { fundingCycleMetadata, fundingCycle, tokenSymbol, tokenAddress } = - useContext(V2V3ProjectContext) - - const payProjectForm = usePayProjectForm() - - return ( - - {children} - - ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/hooks/useDelegateMetadata.tsx.ts b/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/hooks/useDelegateMetadata.tsx.ts deleted file mode 100644 index d9c3e3bd13..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/hooks/useDelegateMetadata.tsx.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { PayProjectFormContext } from 'components/Project/PayProjectForm/payProjectFormContext' -import { JB721DelegateContractsContext } from 'contexts/NftRewards/JB721DelegateContracts/JB721DelegateContractsContext' -import { useContext } from 'react' -import { encodeJb721DelegateMetadata } from 'utils/encodeJb721DelegateMetadata/encodeJb721DelegateMetadata' - -export function useDelegateMetadata() { - const { version: JB721DelegateVersion } = useContext( - JB721DelegateContractsContext, - ) - - const { form: payProjectForm } = useContext(PayProjectFormContext) - - if (!payProjectForm?.payMetadata || !JB721DelegateVersion) return undefined - - return encodeJb721DelegateMetadata( - payProjectForm?.payMetadata, - JB721DelegateVersion, - ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/hooks/useNftRewardTiersToMint.tsx.ts b/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/hooks/useNftRewardTiersToMint.tsx.ts deleted file mode 100644 index 42b42bc01b..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/hooks/useNftRewardTiersToMint.tsx.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { PayProjectFormContext } from 'components/Project/PayProjectForm/payProjectFormContext' -import { NftRewardsContext } from 'contexts/NftRewards/NftRewardsContext' -import { useContext } from 'react' -import { rewardTiersFromIds } from 'utils/nftRewards' - -export function useNftRewardTiersToMint() { - const { form: payProjectForm } = useContext(PayProjectFormContext) - const { - nftRewards: { rewardTiers }, - } = useContext(NftRewardsContext) - - const nftTierIdsToMint = [ - ...(payProjectForm?.payMetadata?.tierIdsToMint ?? []), - ].sort() - - if (!rewardTiers || !nftTierIdsToMint) return - - return rewardTiersFromIds({ - tierIds: nftTierIdsToMint, - rewardTiers, - }) -} diff --git a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/index.ts b/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/index.ts deleted file mode 100644 index 7d49aeff0c..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './V2V3ConfirmPayModal' diff --git a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3PayButton.tsx b/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3PayButton.tsx deleted file mode 100644 index 978dff48fd..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3PayButton/V2V3PayButton.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { t, Trans } from '@lingui/macro' -import { Button, Tooltip } from 'antd' -import ETHAmount from 'components/currency/ETHAmount' -import { - PayButtonProps, - PayProjectFormContext, -} from 'components/Project/PayProjectForm/payProjectFormContext' -import { PROJECT_PAGE } from 'constants/fathomEvents' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import useWeiConverter from 'hooks/useWeiConverter' -import { trackFathomGoal } from 'lib/fathom' -import { V2V3CurrencyOption } from 'models/v2v3/currencyOption' -import { useContext, useState } from 'react' -import { twMerge } from 'tailwind-merge' -import { V2V3_CURRENCY_USD } from 'utils/v2v3/currency' -import { V2V3ConfirmPayModal } from './V2V3ConfirmPayModal' - -export function V2V3PayButton({ disabled, wrapperClassName }: PayButtonProps) { - const { - fundingCycleMetadata, - loading: { fundingCycleLoading, primaryETHTerminalLoading }, - } = useContext(V2V3ProjectContext) - const { projectMetadata, isArchived } = useContext(ProjectMetadataContext) - const { form: payProjectForm } = useContext(PayProjectFormContext) - - const [payModalVisible, setPayModalVisible] = useState(false) - - const { payInCurrency, payAmount } = payProjectForm ?? {} - - const weiPayAmt = useWeiConverter({ - currency: payInCurrency as V2V3CurrencyOption, - amount: payAmount, - }) - - const payButtonText = projectMetadata?.payButton?.length - ? projectMetadata.payButton - : t`Pay` - - let disabledMessage: string | undefined - if (isArchived) { - disabledMessage = t`This project is archived and can't be paid.` - } else if (fundingCycleMetadata?.pausePay) { - disabledMessage = t`Payments to this project are paused in this cycle.` - } - - const isPayDisabled = Boolean(disabledMessage) || disabled - - return ( -
- - - - {payInCurrency === V2V3_CURRENCY_USD && ( -
- - Paid as - -
- )} - - setPayModalVisible(false)} - weiAmount={weiPayAmt} - /> -
- ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3PayProjectForm.tsx b/src/components/v2v3/V2V3Project/V2V3PayProjectForm.tsx deleted file mode 100644 index 6851be7e14..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3PayProjectForm.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { PayProjectForm } from 'components/Project/PayProjectForm' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useValidatePrimaryEthTerminal } from 'hooks/v2v3/useValidatePrimaryEthTerminal' -import { useContext } from 'react' - -export function V2V3PayProjectForm() { - const { fundingCycle } = useContext(V2V3ProjectContext) - const hasCurrentFundingCycle = fundingCycle?.number.gt(0) - const isPrimaryETHTerminalValid = useValidatePrimaryEthTerminal() - - const disabled = !hasCurrentFundingCycle || !isPrimaryETHTerminalValid - - return -} diff --git a/src/components/v2v3/V2V3Project/V2V3Project.tsx b/src/components/v2v3/V2V3Project/V2V3Project.tsx deleted file mode 100644 index 1cd598d257..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3Project.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import { Trans } from '@lingui/macro' -import { Row } from 'antd' -import { ErrorBoundaryCallout } from 'components/Callout/ErrorBoundaryCallout' -import { ProjectHeader } from 'components/Project/ProjectHeader' -import ScrollToTopButton from 'components/buttons/ScrollToTopButton' -import { useModalFromUrlQuery } from 'components/modals/hooks/useModalFromUrlQuery' -import { V2V3PayProjectFormProvider } from 'components/v2v3/V2V3Project/V2V3PayButton/V2V3ConfirmPayModal/V2V3PayProjectFormProvider' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useIsUserAddress } from 'hooks/useIsUserAddress' -import useMobile from 'hooks/useMobile' -import { useContext } from 'react' -import { ProjectPageMobile } from './ProjectPageMobile' -import { ProjectPageRightCol } from './ProjectPageRightCol' -import { ProjectPageTabs } from './ProjectPageTabs' -import { V2V3ProjectHeaderActions } from './V2V3ProjectHeaderActions/V2V3ProjectHeaderActions' -import { ProjectBanners } from './banners/ProjectBanners' -import NewDeployModal, { NEW_DEPLOY_QUERY_PARAM } from './modals/NewDeployModal' - -export const COL_SIZE_MD = 12 - -export function V2V3Project() { - const { projectOwnerAddress, handle } = useContext(V2V3ProjectContext) - const { projectId } = useContext(ProjectMetadataContext) - - const { visible: newDeployModalVisible, hide: hideNewDeployModal } = - useModalFromUrlQuery(NEW_DEPLOY_QUERY_PARAM) - - const isMobile = useMobile() - const isOwner = useIsUserAddress(projectOwnerAddress) - - const canEditProjectHandle = isOwner && !handle - - if (projectId === undefined) return null - - return ( -
- - - } - handle={handle} - projectOwnerAddress={projectOwnerAddress} - canEditProjectHandle={canEditProjectHandle} - /> - - - {/*
*/} -
- {isMobile ? ( - - ) : ( - - Project details failed to load.} - > - - - - - )} - - -
- - - -
- ) -} diff --git a/src/components/v2v3/V2V3Project/V2V3ProjectHeaderActions/V2V3ProjectHeaderActions.tsx b/src/components/v2v3/V2V3Project/V2V3ProjectHeaderActions/V2V3ProjectHeaderActions.tsx index e309bac35f..5c3059b38f 100644 --- a/src/components/v2v3/V2V3Project/V2V3ProjectHeaderActions/V2V3ProjectHeaderActions.tsx +++ b/src/components/v2v3/V2V3Project/V2V3ProjectHeaderActions/V2V3ProjectHeaderActions.tsx @@ -1,8 +1,8 @@ import { Cog6ToothIcon, WrenchIcon } from '@heroicons/react/24/outline' import { t, Trans } from '@lingui/macro' import { Button, Divider, Tooltip } from 'antd' -import BookmarkButton from 'components/BookmarkButton/BookmarkButton' -import { SubscribeButton } from 'components/SubscribeButton' +import BookmarkButton from 'components/buttons/BookmarkButton/BookmarkButton' +import { SubscribeButton } from 'components/buttons/SubscribeButton' import { V2V3ProjectToolsDrawer } from 'components/v2v3/V2V3Project/V2V3ProjectToolsDrawer' import { PV_V2 } from 'constants/pv' import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' diff --git a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/ProjectSettingsDashboard.tsx b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/ProjectSettingsDashboard.tsx index b9bc1973f9..e10f99385d 100644 --- a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/ProjectSettingsDashboard.tsx +++ b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/ProjectSettingsDashboard.tsx @@ -2,9 +2,9 @@ import { Trans } from '@lingui/macro' import { Button } from 'antd' import EthereumAddress from 'components/EthereumAddress' import Loading from 'components/Loading' -import { useDistributableAmount } from 'components/ProjectDashboard/components/CyclesPayoutsPanel/hooks/useDistributableAmount' import { AmountInCurrency } from 'components/currency/AmountInCurrency' import ETHAmount from 'components/currency/ETHAmount' +import { useDistributableAmount } from 'components/v2v3/V2V3Project/ProjectDashboard/components/CyclesPayoutsPanel/hooks/useDistributableAmount' import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' import { BigNumber } from 'ethers' @@ -15,8 +15,6 @@ import { V2V3CurrencyName } from 'utils/v2v3/currency' import { ProjectSettingsLayout } from './ProjectSettingsLayout' import { useSettingsPagePath } from './hooks/useSettingsPagePath' -export type MenuKey = V2V3SettingsPageKey - export type V2V3SettingsPageKey = | 'general' | 'handle' diff --git a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/hooks/useFundingHasSavedChanges.ts b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/hooks/useFundingHasSavedChanges.ts deleted file mode 100644 index aa8fcb33d4..0000000000 --- a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/hooks/useFundingHasSavedChanges.ts +++ /dev/null @@ -1,204 +0,0 @@ -import isEqual from 'lodash/isEqual' -import { NftRewardTier } from 'models/nftRewards' -import { useMemo } from 'react' -import { DEFAULT_MUST_START_AT_OR_AFTER } from 'redux/slices/editingV2Project' -import { tiersEqual } from 'utils/nftRewards' -import { - serializeFundAccessConstraint, - serializeV2V3FundingCycleData, - serializeV2V3FundingCycleMetadata, -} from 'utils/v2v3/serializers' - -import { EditingFundingCycleConfig } from './useEditingFundingCycleConfig' -import { InitialEditingData } from './useInitialEditingData' - -export const useFundingHasSavedChanges = ({ - editingFundingCycleConfig, - initialEditingData, -}: { - editingFundingCycleConfig: EditingFundingCycleConfig - initialEditingData: InitialEditingData | undefined -}) => { - const { - editingPayoutGroupedSplits, - editingReservedTokensGroupedSplits, - editingFundingCycleMetadata, - editingFundingCycleData, - editingFundAccessConstraints, - editingNftRewards, - editingMustStartAtOrAfter, - } = editingFundingCycleConfig - - const fundingHasSavedChanges = useMemo(() => { - if (!initialEditingData) { - // Nothing to compare so return false - return false - } - const editedChanges: InitialEditingData = { - fundAccessConstraints: editingFundAccessConstraints.map( - serializeFundAccessConstraint, - ), - fundingCycleMetadata: serializeV2V3FundingCycleMetadata( - editingFundingCycleMetadata, - ), - fundingCycleData: serializeV2V3FundingCycleData(editingFundingCycleData), - payoutGroupedSplits: { - payoutGroupedSplits: editingPayoutGroupedSplits.splits, - reservedTokensGroupedSplits: editingReservedTokensGroupedSplits.splits, - }, - nftRewards: editingNftRewards, - mustStartAtOrAfter: - editingMustStartAtOrAfter || DEFAULT_MUST_START_AT_OR_AFTER, - } - - return !isEqual(initialEditingData, editedChanges) - }, [ - editingFundAccessConstraints, - editingFundingCycleData, - editingFundingCycleMetadata, - editingPayoutGroupedSplits, - editingReservedTokensGroupedSplits, - editingNftRewards, - initialEditingData, - editingMustStartAtOrAfter, - ]) - - const fundingDrawerHasSavedChanges = useMemo(() => { - const fundingCycleData = serializeV2V3FundingCycleData( - editingFundingCycleData, - ) - const fundAccessConstraints = editingFundAccessConstraints.length - ? serializeFundAccessConstraint(editingFundAccessConstraints?.[0]) - : undefined - const payoutGroupedSplits = editingPayoutGroupedSplits.splits - - if (!fundAccessConstraints || !initialEditingData) { - return false - } - const durationUpdated = - fundingCycleData.duration !== initialEditingData.fundingCycleData.duration - const distributionLimitUpdated = - fundAccessConstraints.distributionLimit !== - initialEditingData.fundAccessConstraints?.[0]?.distributionLimit - const distributionLimitCurrencyUpdated = - fundAccessConstraints.distributionLimitCurrency !== - initialEditingData.fundAccessConstraints?.[0]?.distributionLimitCurrency - const payoutGroupedSplitsUpdated = !isEqual( - payoutGroupedSplits, - initialEditingData.payoutGroupedSplits?.payoutGroupedSplits ?? [], - ) - return ( - durationUpdated || - distributionLimitUpdated || - distributionLimitCurrencyUpdated || - payoutGroupedSplitsUpdated - ) - }, [ - editingFundAccessConstraints, - editingFundingCycleData, - editingPayoutGroupedSplits.splits, - initialEditingData, - ]) - - const tokenDrawerHasSavedChanges = useMemo(() => { - const fundingCycleData = serializeV2V3FundingCycleData( - editingFundingCycleData, - ) - const fundingCycleMetadata = serializeV2V3FundingCycleMetadata( - editingFundingCycleMetadata, - ) - const fundAccessConstraints = editingFundAccessConstraints.length - ? serializeFundAccessConstraint(editingFundAccessConstraints?.[0]) - : undefined - const reservedTokensGroupedSplits = - editingReservedTokensGroupedSplits.splits - - if (!fundAccessConstraints || !initialEditingData) { - return false - } - - const reservedRateUpdated = - fundingCycleMetadata.reservedRate !== - initialEditingData.fundingCycleMetadata.reservedRate - const reservedTokensGroupedSplitsUpdated = !isEqual( - reservedTokensGroupedSplits, - initialEditingData.payoutGroupedSplits.reservedTokensGroupedSplits ?? [], - ) - const discountRateUpdated = - fundingCycleData.discountRate !== - initialEditingData.fundingCycleData.discountRate - const redemptionRateUpdated = - fundingCycleMetadata.redemptionRate !== - initialEditingData.fundingCycleMetadata.redemptionRate - - return ( - reservedRateUpdated || - reservedTokensGroupedSplitsUpdated || - discountRateUpdated || - redemptionRateUpdated - ) - }, [ - editingFundAccessConstraints, - editingFundingCycleData, - editingFundingCycleMetadata, - editingReservedTokensGroupedSplits.splits, - initialEditingData, - ]) - - const rulesDrawerHasSavedChanges = useMemo(() => { - const fundingCycleData = serializeV2V3FundingCycleData( - editingFundingCycleData, - ) - const fundingCycleMetadata = serializeV2V3FundingCycleMetadata( - editingFundingCycleMetadata, - ) - const fundAccessConstraints = editingFundAccessConstraints.length - ? serializeFundAccessConstraint(editingFundAccessConstraints?.[0]) - : undefined - - if (!fundAccessConstraints || !initialEditingData) { - return false - } - - const pausePaymentsUpdated = - fundingCycleMetadata.pausePay !== - initialEditingData.fundingCycleMetadata.pausePay - const allowMintingUpdated = - fundingCycleMetadata.allowMinting !== - initialEditingData.fundingCycleMetadata.allowMinting - const ballotUpdated = - fundingCycleData.ballot !== initialEditingData.fundingCycleData.ballot - - return pausePaymentsUpdated || allowMintingUpdated || ballotUpdated - }, [ - editingFundAccessConstraints, - editingFundingCycleData, - editingFundingCycleMetadata, - initialEditingData, - ]) - - const nftDrawerHasSavedChanges = useMemo(() => { - const initialNftRewards = initialEditingData?.nftRewards - if (!editingNftRewards) return false - if (!initialNftRewards && editingNftRewards) return true - - const rewardTiersChanged = Boolean( - editingNftRewards.rewardTiers?.some( - (rewardTier: NftRewardTier, index: number) => { - const initialRewardTier = initialNftRewards?.rewardTiers?.[index] - if (!initialRewardTier) return true - return !tiersEqual({ tier1: rewardTier, tier2: initialRewardTier }) - }, - ), - ) - return rewardTiersChanged - }, [initialEditingData, editingNftRewards]) - - return { - fundingHasSavedChanges, - fundingDrawerHasSavedChanges, - tokenDrawerHasSavedChanges, - rulesDrawerHasSavedChanges, - nftDrawerHasSavedChanges, - } -} diff --git a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/hooks/useInitialEditingData.ts b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/hooks/useInitialEditingData.ts index 1eb698ef70..4f838f301e 100644 --- a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/hooks/useInitialEditingData.ts +++ b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/hooks/useInitialEditingData.ts @@ -29,7 +29,7 @@ import { serializeV2V3FundingCycleMetadata, } from 'utils/v2v3/serializers' -export interface InitialEditingData { +interface InitialEditingData { fundAccessConstraints: SerializedV2V3FundAccessConstraint[] fundingCycleData: SerializedV2V3FundingCycleData fundingCycleMetadata: SerializedV2V3FundingCycleMetadata diff --git a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/EditCycleFormFields.ts b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/EditCycleFormFields.ts index 9689590fcb..5e4e96edf2 100644 --- a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/EditCycleFormFields.ts +++ b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/EditCycleFormFields.ts @@ -3,7 +3,7 @@ import { CurrencyName } from 'constants/currency' import { Split } from 'models/splits' import { NftRewardsData } from 'redux/slices/editingV2Project/types' -export type DetailsSectionFields = { +type DetailsSectionFields = { duration: number durationUnit: DurationOption ballot: string @@ -12,14 +12,14 @@ export type DetailsSectionFields = { pausePay: boolean } -export type PayoutsSectionFields = { +type PayoutsSectionFields = { payoutSplits: Split[] distributionLimit: number | undefined // undefined = infinite limit distributionLimitCurrency: CurrencyName holdFees: boolean } -export type TokenSectionFields = { +type TokenSectionFields = { mintRate: number reservedTokens: number // percentage reservedSplits: Split[] @@ -29,7 +29,7 @@ export type TokenSectionFields = { pauseTransfers: boolean // "Disable project token transfers" } -export type NftSectionFields = { +type NftSectionFields = { nftRewards: NftRewardsData | undefined useDataSourceForRedeem: boolean } diff --git a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/EditCyclePage.tsx b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/EditCyclePage.tsx index a04862adba..70bb5a338f 100644 --- a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/EditCyclePage.tsx +++ b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/EditCyclePage.tsx @@ -1,7 +1,7 @@ import { Trans } from '@lingui/macro' import { Button, Form, Tooltip } from 'antd' import Loading from 'components/Loading' -import { ExternalLinkWithIcon } from 'components/ProjectDashboard/components/ui/ExternalLinkWithIcon' +import { ExternalLinkWithIcon } from 'components/v2v3/V2V3Project/ProjectDashboard/components/ui/ExternalLinkWithIcon' import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' import Link from 'next/link' diff --git a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/HeaderRows.tsx b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/HeaderRows.tsx index a28ce8061b..f4a25069c2 100644 --- a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/HeaderRows.tsx +++ b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/HeaderRows.tsx @@ -2,7 +2,7 @@ import { PlusOutlined } from '@ant-design/icons' import { Trans } from '@lingui/macro' import { Button } from 'antd' -import { ExternalLinkWithIcon } from 'components/ProjectDashboard/components/ui/ExternalLinkWithIcon' +import { ExternalLinkWithIcon } from 'components/v2v3/V2V3Project/ProjectDashboard/components/ui/ExternalLinkWithIcon' import { AddEditAllocationModal, AddEditAllocationModalEntity, diff --git a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/PayoutTableSettings.tsx b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/PayoutTableSettings.tsx index 2174f7e07b..b450f8e56f 100644 --- a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/PayoutTableSettings.tsx +++ b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/PayoutTableSettings.tsx @@ -1,7 +1,7 @@ import { ReceiptPercentIcon, TrashIcon } from '@heroicons/react/24/outline' import { Trans } from '@lingui/macro' -import { handleConfirmationDeletion } from 'components/ProjectDashboard/utils/modals' import { PopupMenu, PopupMenuItem } from 'components/ui/PopupMenu' +import { handleConfirmationDeletion } from 'components/v2v3/V2V3Project/ProjectDashboard/utils/modals' import { useState } from 'react' import { usePayoutsTable } from '../hooks/usePayoutsTable' import { SwitchToLimitedModal } from './modals/SwitchToLimitedModal' diff --git a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/modals/SwitchToLimitedModal.tsx b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/modals/SwitchToLimitedModal.tsx index bddc2058ed..210e492356 100644 --- a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/modals/SwitchToLimitedModal.tsx +++ b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/modals/SwitchToLimitedModal.tsx @@ -1,8 +1,8 @@ import { Trans } from '@lingui/macro' import { Modal } from 'antd' -import { ExternalLinkWithIcon } from 'components/ProjectDashboard/components/ui/ExternalLinkWithIcon' import CurrencySwitch from 'components/currency/CurrencySwitch' import FormattedNumberInput from 'components/inputs/FormattedNumberInput' +import { ExternalLinkWithIcon } from 'components/v2v3/V2V3Project/ProjectDashboard/components/ui/ExternalLinkWithIcon' import { useState } from 'react' import { helpPagePath } from 'utils/routes' import { V2V3_CURRENCY_ETH, V2V3_CURRENCY_USD } from 'utils/v2v3/currency' diff --git a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/modals/SwitchToUnlimitedModal.tsx b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/modals/SwitchToUnlimitedModal.tsx index 8bdf1ef1e7..a7a725f2ec 100644 --- a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/modals/SwitchToUnlimitedModal.tsx +++ b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/PayoutsSection/PayoutsTable/modals/SwitchToUnlimitedModal.tsx @@ -1,6 +1,6 @@ import { Trans } from '@lingui/macro' import { Modal } from 'antd' -import { ExternalLinkWithIcon } from 'components/ProjectDashboard/components/ui/ExternalLinkWithIcon' +import { ExternalLinkWithIcon } from 'components/v2v3/V2V3Project/ProjectDashboard/components/ui/ExternalLinkWithIcon' import { helpPagePath } from 'utils/routes' import { usePayoutsTable } from '../../hooks/usePayoutsTable' diff --git a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/TokensSection/IssuanceRateReductionField.tsx b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/TokensSection/IssuanceRateReductionField.tsx index ba53f799e0..ee0af58374 100644 --- a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/TokensSection/IssuanceRateReductionField.tsx +++ b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/TokensSection/IssuanceRateReductionField.tsx @@ -1,7 +1,7 @@ import { Trans } from '@lingui/macro' -import { ExternalLinkWithIcon } from 'components/ProjectDashboard/components/ui/ExternalLinkWithIcon' import { JuiceSwitch } from 'components/inputs/JuiceSwitch' import NumberSlider from 'components/inputs/NumberSlider' +import { ExternalLinkWithIcon } from 'components/v2v3/V2V3Project/ProjectDashboard/components/ui/ExternalLinkWithIcon' import { useState } from 'react' import { helpPagePath } from 'utils/routes' import { useEditCycleFormContext } from '../EditCycleFormContext' diff --git a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/TokensSection/RedemptionRateField.tsx b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/TokensSection/RedemptionRateField.tsx index da71924029..c71d8264f9 100644 --- a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/TokensSection/RedemptionRateField.tsx +++ b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/TokensSection/RedemptionRateField.tsx @@ -1,9 +1,9 @@ import { Trans } from '@lingui/macro' import { useWatch } from 'antd/lib/form/Form' -import { ExternalLinkWithIcon } from 'components/ProjectDashboard/components/ui/ExternalLinkWithIcon' import { TokenRedemptionRateGraph } from 'components/TokenRedemptionRateGraph' import { JuiceSwitch } from 'components/inputs/JuiceSwitch' import NumberSlider from 'components/inputs/NumberSlider' +import { ExternalLinkWithIcon } from 'components/v2v3/V2V3Project/ProjectDashboard/components/ui/ExternalLinkWithIcon' import { useState } from 'react' import { helpPagePath } from 'utils/routes' import { useEditCycleFormContext } from '../EditCycleFormContext' diff --git a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/TokensSection/ReservedTokensField.tsx b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/TokensSection/ReservedTokensField.tsx index 7d45e5dd3a..d32ea7d377 100644 --- a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/TokensSection/ReservedTokensField.tsx +++ b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditCyclePage/TokensSection/ReservedTokensField.tsx @@ -1,9 +1,9 @@ import { Trans } from '@lingui/macro' import { useWatch } from 'antd/lib/form/Form' -import { ExternalLinkWithIcon } from 'components/ProjectDashboard/components/ui/ExternalLinkWithIcon' import { FormItems } from 'components/formItems' import { ItemNoInput } from 'components/formItems/ItemNoInput' import { JuiceSwitch } from 'components/inputs/JuiceSwitch' +import { ExternalLinkWithIcon } from 'components/v2v3/V2V3Project/ProjectDashboard/components/ui/ExternalLinkWithIcon' import { Split } from 'models/splits' import { useState } from 'react' import { helpPagePath } from 'utils/routes' diff --git a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditNftsPage/EditNftsPage.tsx b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditNftsPage/EditNftsPage.tsx index a5a08d8031..9ac8af9638 100644 --- a/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditNftsPage/EditNftsPage.tsx +++ b/src/components/v2v3/V2V3Project/V2V3ProjectSettings/pages/EditNftsPage/EditNftsPage.tsx @@ -3,9 +3,9 @@ import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' import { useNftDeployerCanReconfigure } from 'hooks/JB721Delegate/contractReader/useNftDeployerCanReconfigure' import { useContext } from 'react' +import { LaunchNftsPage } from './LaunchNftCollection' import { EnableNftsCard } from './LaunchNftCollection/EnableNftsCard' -import { LaunchNftsPage } from './LaunchNftCollection/LaunchNftsCollection' -import { UpdateNftsPage } from './UpdateNftsPage/UpdateNftsPage' +import { UpdateNftsPage } from './UpdateNftsPage' export function EditNftsPage() { const { projectId } = useContext(ProjectMetadataContext) diff --git a/src/components/v2v3/V2V3Project/banners/ProjectBanners.tsx b/src/components/v2v3/V2V3Project/banners/ProjectBanners.tsx deleted file mode 100644 index 3dcb1e4903..0000000000 --- a/src/components/v2v3/V2V3Project/banners/ProjectBanners.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { PV_V2 } from 'constants/pv' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContractsContext } from 'contexts/v2v3/ProjectContracts/V2V3ProjectContractsContext' -import useProjectControllerAddress from 'hooks/v2v3/contractReader/useProjectControllerAddress' -import { useContext } from 'react' -import { isZeroAddress } from 'utils/address' -import { V2BugNoticeBanner } from './V2BugNoticeBanner' - -export function ProjectBanners() { - const { projectId, pv } = useContext(ProjectMetadataContext) - const { - contracts, - loading: { projectContractsLoading }, - } = useContext(V2V3ProjectContractsContext) - - // get the projects controller address on the deprecated JBDirectory (the bugged version) - const { data: controllerAddress } = useProjectControllerAddress({ - projectId, - useDeprecatedContract: true, - }) - - const isV2Project = pv === PV_V2 - - // if the project was created on the bugged version of the JBDirectory, it will have a non-zero controller address. - const hasProjectOnDeprecatedContracts = - controllerAddress && !isZeroAddress(controllerAddress) - - // if the project has upgraded to the new contracts, have a defined JBController. - const hasUpgradedJBController = contracts?.JBController !== undefined - - // show banner if a V2 project was launched on the bugged contracts and hasn't upgraded. - const showV2BugNoticeBanner = Boolean( - isV2Project && - !projectContractsLoading?.JBControllerLoading && - hasProjectOnDeprecatedContracts && - !hasUpgradedJBController, - ) - - const hasBanners = showV2BugNoticeBanner - - if (!hasBanners) return null - - return ( -
- {showV2BugNoticeBanner && } -
- ) -} diff --git a/src/components/v2v3/V2V3Project/banners/V2BugNoticeBanner.tsx b/src/components/v2v3/V2V3Project/banners/V2BugNoticeBanner.tsx deleted file mode 100644 index 0a4183b821..0000000000 --- a/src/components/v2v3/V2V3Project/banners/V2BugNoticeBanner.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import Banner from 'components/Banner' -import ExternalLink from 'components/ExternalLink' - -export function V2BugNoticeBanner() { - // This copy has not been prepped for translations due to being a hot fix that is likely to change. - return ( - -

- This project uses an old version of the V2 Juicebox protocol - contracts. This version of the contracts contains a minor bug.{' '} - No ETH is in danger and projects are unlikely to be - affected.{' '} - - Read the postmortem. - -

-

- Payments to V2 projects with a balance of 0 ETH have been disabled. - To re-enable payments, this project's owner must re-launch their - cycle using the updated version of the V2 Juicebox contracts. -

- - } - >
- ) -} diff --git a/src/components/v2v3/V2V3Project/index.ts b/src/components/v2v3/V2V3Project/index.ts deleted file mode 100644 index bf5cf27ce3..0000000000 --- a/src/components/v2v3/V2V3Project/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { V2V3Project } from './V2V3Project' diff --git a/src/components/v2v3/V2V3Project/modals/NewDeployModal.tsx b/src/components/v2v3/V2V3Project/modals/NewDeployModal.tsx deleted file mode 100644 index 777a4a72c5..0000000000 --- a/src/components/v2v3/V2V3Project/modals/NewDeployModal.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import { CheckCircleFilled } from '@ant-design/icons' -import { t, Trans } from '@lingui/macro' -import { Modal } from 'antd' -import RichButton from 'components/buttons/RichButton' -import ExternalLink from 'components/ExternalLink' -import { IssueErc20TokenModal } from 'components/modals/IssueErc20TokenModal' -import { - ISSUE_ERC20_EXPLANATION, - PROJECT_PAYER_ADDRESS_EXPLANATION, -} from 'components/strings' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { useDeployProjectPayerTx } from 'hooks/v2v3/transactor/useDeployProjectPayerTx' -import Link from 'next/link' -import { useContext, useState } from 'react' -import { settingsPagePath } from 'utils/routes' -import { LaunchProjectPayerModal } from './LaunchProjectPayerModal' - -export const NEW_DEPLOY_QUERY_PARAM = 'np' - -export default function NewDeployModal({ - open, - onClose, -}: { - open: boolean - onClose: VoidFunction -}) { - const { handle } = useContext(V2V3ProjectContext) - const { projectId } = useContext(ProjectMetadataContext) - - const [issueTokenModalVisible, setIssueTokenModalVisible] = - useState(false) - const [launchProjectPayerModalVisible, setLaunchProjectPayerModalVisible] = - useState(false) - const [hasIssuedToken, setHasIssuedToken] = useState() - const [hasLaunchedPayableAddress, setHasLaunchedPayableAddress] = - useState() - - const completedAllSteps = hasIssuedToken && hasLaunchedPayableAddress - - return ( - -

- Project launch successful -

-

- - Congratulations on launching your project! For help planning your next - steps, share your project in the{' '} - - JuiceboxDAO Discord - - . Optionally, you can also: - -

-
- - Set a project handle (optional)} - description={ - - Set a unique handle that will be visible in your project's URL, - and that will allow your project to appear in search results. - - } - disabled={!!handle} - icon={ - handle ? ( - - ) : undefined - } - primaryColorClassName={ - handle ? 'text-grey-400 dark:text-slate-200' : undefined - } - /> - - Create an ERC-20 token (optional)} - description={ISSUE_ERC20_EXPLANATION} - onClick={() => setIssueTokenModalVisible(true)} - disabled={hasIssuedToken} - icon={ - hasIssuedToken ? ( - - ) : undefined - } - primaryColorClassName={ - hasIssuedToken ? 'text-grey-400 dark:text-slate-200' : undefined - } - /> - Create a project payer address (optional)} - description={PROJECT_PAYER_ADDRESS_EXPLANATION} - onClick={() => setLaunchProjectPayerModalVisible(true)} - disabled={hasLaunchedPayableAddress} - icon={ - hasLaunchedPayableAddress ? ( - - ) : undefined - } - primaryColorClassName={ - hasLaunchedPayableAddress - ? 'text-grey-400 dark:text-slate-200' - : undefined - } - /> -
- setIssueTokenModalVisible(false)} - onConfirmed={() => setHasIssuedToken(true)} - /> - setLaunchProjectPayerModalVisible(false)} - useDeployProjectPayerTx={useDeployProjectPayerTx} - onConfirmed={() => setHasLaunchedPayableAddress(true)} - /> -
- ) -} diff --git a/src/components/v2v3/V2V3Project/modals/V2V3ProjectTokenBalancesModal/TokenRefs.tsx b/src/components/v2v3/V2V3Project/modals/V2V3ProjectTokenBalancesModal/TokenRefs.tsx deleted file mode 100644 index a3c890966e..0000000000 --- a/src/components/v2v3/V2V3Project/modals/V2V3ProjectTokenBalancesModal/TokenRefs.tsx +++ /dev/null @@ -1,170 +0,0 @@ -import { - CaretDownFilled, - DeleteOutlined, - PlusCircleOutlined, -} from '@ant-design/icons' -import { Trans, t } from '@lingui/macro' -import { Button, Col, Form, Input, Row, Tooltip } from 'antd' -import { FormInstance } from 'antd/lib/form/Form' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { constants } from 'ethers' - -import { useContext, useState } from 'react' -import { EditTrackedAssetsForm } from './V2V3ProjectTokenBalancesModal' - -export type AssetInputType = 'project' | 'erc20' - -const AssetTypeSwitcherButton = ({ - type, - onClick, -}: { - type?: AssetInputType - onClick: VoidFunction -}) => { - const formattedType = type === 'project' ? 'Project' : 'ERC-20' - return ( - - ) -} - -const AssetInput = ({ - value, - onChange, -}: { - value?: { input?: string; type?: AssetInputType } - onChange?: (props: { input: string; type: AssetInputType }) => void -}) => { - const [input, setInput] = useState(value?.input ?? '') - const [type, setType] = useState(value?.type ?? 'erc20') - - const triggerChange = (changedValue: { - input?: string - type?: AssetInputType - }) => { - onChange?.({ - input, - type, - ...value, - ...changedValue, - }) - } - const onInputChange = (e: React.ChangeEvent) => { - setInput(input) - triggerChange({ - input: e.target.value, - }) - } - const onTypeChange = (newType: AssetInputType) => { - setType(newType) - triggerChange({ type: newType, input: '' }) - } - - return ( -
- { - const toggleType = (type: AssetInputType) => - type === 'erc20' ? 'project' : 'erc20' - if (value?.type) { - onTypeChange(toggleType(value.type)) - } else { - onTypeChange(toggleType(type)) - } - }} - /> - -
- ) -} - -export function TokenRefs({ - form, -}: { - form: FormInstance -}) { - const { projectMetadata } = useContext(ProjectMetadataContext) - - const initialTokens = ( - projectMetadata?.tokens ?? [{ type: 'erc20', value: '' }] - ).map(r => ({ ...r })) - const initialValues = { - tokenRefs: initialTokens.map(t => ({ - assetInput: { input: t.value, type: t.type }, - })), - } - - return ( -
- - {(fields, { add, remove }) => ( - <> - {fields.map(({ key, name }) => ( - - - { - if (!value?.input.length) { - return Promise.reject('Value is ') - } - return Promise.resolve() - }, - validateTrigger: 'onCreate', - message: 'Value is required', - required: true, - }, - ]} - > - - - - - - - - - )} - -
- ) -} diff --git a/src/components/v2v3/V2V3Project/modals/V2V3ProjectTokenBalancesModal/V2V3ProjectTokenBalance.tsx b/src/components/v2v3/V2V3Project/modals/V2V3ProjectTokenBalancesModal/V2V3ProjectTokenBalance.tsx deleted file mode 100644 index 8eb6ab9b9f..0000000000 --- a/src/components/v2v3/V2V3Project/modals/V2V3ProjectTokenBalancesModal/V2V3ProjectTokenBalance.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { Trans } from '@lingui/macro' -import { TokenAmount } from 'components/TokenAmount' -import V2V3ProjectHandleLink from 'components/v2v3/shared/V2V3ProjectHandleLink' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import useSymbolOfERC20 from 'hooks/ERC20/useSymbolOfERC20' -import useProjectHandle from 'hooks/v2v3/contractReader/useProjectHandle' -import useProjectToken from 'hooks/v2v3/contractReader/useProjectToken' -import useTotalBalanceOf from 'hooks/v2v3/contractReader/useTotalBalanceOf' -import { useContext } from 'react' - -export const V2V3ProjectTokenBalance = ({ - projectId, -}: { - projectId: number -}) => { - const { projectOwnerAddress } = useContext(V2V3ProjectContext) - const { data: handle } = useProjectHandle({ projectId }) - const { data: tokenAddress } = useProjectToken({ projectId }) - const { data: tokenSymbol } = useSymbolOfERC20(tokenAddress) - const { data: balance } = useTotalBalanceOf(projectOwnerAddress, projectId) - - if (!balance) return null - - return ( - <> - {tokenSymbol ? ( - - - - ) : ( - - - for{' '} - - - - )} - - ) -} diff --git a/src/components/v2v3/V2V3Project/modals/V2V3ProjectTokenBalancesModal/V2V3ProjectTokenBalancesModal.tsx b/src/components/v2v3/V2V3Project/modals/V2V3ProjectTokenBalancesModal/V2V3ProjectTokenBalancesModal.tsx deleted file mode 100644 index 825f218bb2..0000000000 --- a/src/components/v2v3/V2V3Project/modals/V2V3ProjectTokenBalancesModal/V2V3ProjectTokenBalancesModal.tsx +++ /dev/null @@ -1,180 +0,0 @@ -import { SettingOutlined } from '@ant-design/icons' -import { t, Trans } from '@lingui/macro' -import { Button, Form, Modal, ModalProps } from 'antd' -import ERC20TokenBalance from 'components/ERC20TokenBalance' -import { PV_V2 } from 'constants/pv' -import { V2V3_PROJECT_IDS } from 'constants/v2v3/projectIds' -import { ProjectMetadataContext } from 'contexts/shared/ProjectMetadataContext' -import { V2V3ProjectContext } from 'contexts/v2v3/Project/V2V3ProjectContext' -import { BigNumber } from 'ethers' -import { useV2V3WalletHasPermission } from 'hooks/v2v3/contractReader/useV2V3WalletHasPermission' -import { useEditProjectDetailsTx } from 'hooks/v2v3/transactor/useEditProjectDetailsTx' -import { uploadProjectMetadata } from 'lib/api/ipfs' -import { revalidateProject } from 'lib/api/nextjs' -import { TokenRef } from 'models/tokenRef' -import { V2V3OperatorPermission } from 'models/v2v3/permissions' -import { useContext, useState } from 'react' - -import { AssetInputType, TokenRefs } from './TokenRefs' -import { V2V3ProjectTokenBalance } from './V2V3ProjectTokenBalance' - -export interface EditTrackedAssetsForm { - tokenRefs: { assetInput: { input: string; type: AssetInputType } }[] -} - -function EditTrackedAssetsModal({ - close, - ...props -}: ModalProps & { close: VoidFunction }) { - const [loading, setLoading] = useState() - const { projectId, projectMetadata } = useContext(ProjectMetadataContext) - - const [form] = Form.useForm() - - const editV2ProjectDetailsTx = useEditProjectDetailsTx() - - async function updateTokenRefs() { - const projectName = projectMetadata?.name - - if (!projectName) return - - await form.validateFields() - - setLoading(true) - - const editingTokenRefs: TokenRef[] = form - .getFieldsValue() - .tokenRefs.map(t => t.assetInput) - .map(a => ({ value: a.input, type: a.type })) - - const uploadedMetadata = await uploadProjectMetadata({ - ...projectMetadata, - tokens: editingTokenRefs.filter(t => t.type), - }) - - if (!uploadedMetadata.Hash) { - setLoading(false) - return - } - - editV2ProjectDetailsTx( - { cid: uploadedMetadata.Hash }, - { - onDone: async () => { - if (projectId) { - await revalidateProject({ - pv: PV_V2, - projectId: String(projectId), - }) - } - setLoading(false) - close?.() - form.resetFields() - }, - }, - ) - } - - return ( - -

- - Display ERC-20 and other Juicebox project tokens that this project - owner holds. - -

- - -
- ) -} - -export function V2V3ProjectTokenBalancesModal(props: ModalProps) { - const { projectMetadata } = useContext(ProjectMetadataContext) - const { projectOwnerAddress } = useContext(V2V3ProjectContext) - - const [editModalVisible, setEditModalVisible] = useState() - - const hasEditPermission = useV2V3WalletHasPermission( - V2V3OperatorPermission.RECONFIGURE, - ) - - // Filter out JBDAO tokens, because we always display that balance. - const trackedTokens = projectMetadata?.tokens?.filter( - t => - !( - t.type === 'project' && - parseInt(t.value) === V2V3_PROJECT_IDS.JUICEBOX_DAO - ), - ) - - return ( - - {hasEditPermission ? ( - - ) : ( -
- )} - -
- } - {...props} - > -
-

- Assets -

-

- Other assets in this project's owner's wallet. -

- -
- - {trackedTokens?.map(t => - t.type === 'erc20' ? ( - - ) : ( - - ), - )} -
- - {hasEditPermission ? ( - setEditModalVisible(false)} - /> - ) : null} -
- - ) -} diff --git a/src/components/v2v3/V2V3Project/modals/V2V3ProjectTokenBalancesModal/index.ts b/src/components/v2v3/V2V3Project/modals/V2V3ProjectTokenBalancesModal/index.ts deleted file mode 100644 index 224b2455df..0000000000 --- a/src/components/v2v3/V2V3Project/modals/V2V3ProjectTokenBalancesModal/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { V2V3ProjectTokenBalancesModal } from './V2V3ProjectTokenBalancesModal' diff --git a/src/components/v2v3/shared/DiffedSplits/DiffedSplitFields/DiffedSplitAmount.tsx b/src/components/v2v3/shared/DiffedSplits/DiffedSplitFields/DiffedSplitAmount.tsx deleted file mode 100644 index e448fa5430..0000000000 --- a/src/components/v2v3/shared/DiffedSplits/DiffedSplitFields/DiffedSplitAmount.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { DiffedItem } from '../../DiffedItem' -import { SplitProps } from '../../SplitItem' -import { SplitAmountValue } from '../../SplitItem/SplitAmountValue' - -export function DiffedSplitAmount({ - newSplitProps, - oldSplitProps, -}: { - newSplitProps: SplitProps - oldSplitProps: SplitProps | undefined -}) { - if (!oldSplitProps?.split.percent) { - return - } else if (!newSplitProps.split.percent) { - return - } - - return ( -
- {oldSplitProps ? ( - } - diffStatus="old" - hideIcon - /> - ) : null} - } - diffStatus="new" - hideIcon - /> -
- ) -} diff --git a/src/components/v2v3/shared/DiffedSplits/DiffedSplitFields/DiffedSplitPercent.tsx b/src/components/v2v3/shared/DiffedSplits/DiffedSplitFields/DiffedSplitPercent.tsx deleted file mode 100644 index dbc3636df9..0000000000 --- a/src/components/v2v3/shared/DiffedSplits/DiffedSplitFields/DiffedSplitPercent.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { DiffedItem } from 'components/v2v3/shared/DiffedItem' -import { BigNumber } from 'ethers' -import { formatSplitPercent } from 'utils/v2v3/math' - -export function DiffedSplitPercent({ - percent, - oldPercent, -}: { - percent: number - oldPercent?: number -}) { - const formattedPercent = formatSplitPercent(BigNumber.from(percent)) - const formattedOldPercent = oldPercent - ? formatSplitPercent(BigNumber.from(oldPercent)) - : '0' - const _percent = {formattedPercent}% - if (!oldPercent || formattedPercent === formattedOldPercent) return _percent - - const _oldPercent = {formattedOldPercent}% - - return ( -
- - -
- ) -} diff --git a/src/components/v2v3/shared/DiffedSplits/DiffedSplitList.tsx b/src/components/v2v3/shared/DiffedSplits/DiffedSplitList.tsx index b9e5df5c0f..a2de8bd920 100644 --- a/src/components/v2v3/shared/DiffedSplits/DiffedSplitList.tsx +++ b/src/components/v2v3/shared/DiffedSplits/DiffedSplitList.tsx @@ -1,4 +1,4 @@ -import { useProjectContext } from 'components/ProjectDashboard/hooks' +import { useProjectContext } from 'components/v2v3/V2V3Project/ProjectDashboard/hooks' import { BigNumber } from 'ethers' import round from 'lodash/round' import { Split } from 'models/splits' diff --git a/src/components/v2v3/shared/FundingCycleConfigurationDrawers/RulesDrawer/RulesForm/RulesForm.tsx b/src/components/v2v3/shared/FundingCycleConfigurationDrawers/RulesDrawer/RulesForm/RulesForm.tsx index 07428e1d8f..5e47ba84b1 100644 --- a/src/components/v2v3/shared/FundingCycleConfigurationDrawers/RulesDrawer/RulesForm/RulesForm.tsx +++ b/src/components/v2v3/shared/FundingCycleConfigurationDrawers/RulesDrawer/RulesForm/RulesForm.tsx @@ -1,7 +1,7 @@ import { Trans } from '@lingui/macro' import { Button, Form, Switch } from 'antd' import FormItemLabel from 'components/FormItemLabel' -import ReconfigurationStrategySelector from 'components/ReconfigurationStrategy/ReconfigurationStrategySelector' +import ReconfigurationStrategySelector from 'components/inputs/ReconfigurationStrategy/ReconfigurationStrategySelector' import { CONTROLLER_CONFIG_EXPLANATION, CONTROLLER_MIGRATION_EXPLANATION, diff --git a/src/components/v2v3/shared/V2V3CurrencyAmount.tsx b/src/components/v2v3/shared/V2V3CurrencyAmount.tsx deleted file mode 100644 index 95e6f1698d..0000000000 --- a/src/components/v2v3/shared/V2V3CurrencyAmount.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import ETHAmount from 'components/currency/ETHAmount' -import USDAmount from 'components/currency/USDAmount' -import { BigNumber } from 'ethers' -import { - NO_CURRENCY, - V2V3_CURRENCY_ETH, - V2V3_CURRENCY_USD, -} from 'utils/v2v3/currency' - -export default function V2V3CurrencyAmount({ - amount, - currency, - precision = 2, -}: { - amount: BigNumber | undefined - currency: BigNumber | undefined - precision?: number -}) { - if (amount === undefined) return null - - if (currency?.eq(NO_CURRENCY) || currency?.eq(V2V3_CURRENCY_ETH)) { - return - } - - if (currency?.eq(V2V3_CURRENCY_USD)) { - return - } - - return null -} diff --git a/src/constants/featureFlags.ts b/src/constants/featureFlags.ts index 4dfd519cd5..641ceebc1a 100644 --- a/src/constants/featureFlags.ts +++ b/src/constants/featureFlags.ts @@ -1,10 +1,6 @@ -export type FeatureFlag = - | 'SIMULATE_TXS' - | 'NEW_PROJECT_PAGE' - | 'PAYOUTS_TABLE_CREATE_FLOW' +export type FeatureFlag = 'SIMULATE_TXS' | 'PAYOUTS_TABLE_CREATE_FLOW' export const FEATURE_FLAGS: { [k in FeatureFlag]: string } = { SIMULATE_TXS: 'simulateTxs', - NEW_PROJECT_PAGE: 'newProjectPage', PAYOUTS_TABLE_CREATE_FLOW: 'payoutsTableCreateFlow', } diff --git a/src/locales/messages.pot b/src/locales/messages.pot index c351f9d2ca..03e945f418 100644 --- a/src/locales/messages.pot +++ b/src/locales/messages.pot @@ -62,9 +62,6 @@ msgstr "" msgid "Your project's tokens are not ERC-20 tokens by default. After you create your project, you can create an ERC-20 for your token holders to claim. This is optional." msgstr "" -msgid "Anyone who pays this project receives {tokenText}. Depending on this project's rules, it may be possible to redeem {tokenText} to reclaim ETH." -msgstr "" - msgid "Available upgrades" msgstr "" @@ -143,9 +140,6 @@ msgstr "" msgid "Token issuance rate:" msgstr "" -msgid "Set a unique handle that will be visible in your project's URL, and that will allow your project to appear in search results." -msgstr "" - msgid "Determines whether tokens will be minted by payments made through this address." msgstr "" @@ -200,9 +194,6 @@ msgstr "" msgid "Payout recipients:" msgstr "" -msgid "Project launch successful" -msgstr "" - msgid "Lock until" msgstr "" @@ -218,9 +209,6 @@ msgstr "" msgid "Funding" msgstr "" -msgid "NFTs failed to load." -msgstr "" - msgid "Cycle details" msgstr "" @@ -275,9 +263,6 @@ msgstr "" msgid "Cycles:" msgstr "" -msgid "<0/> <1>reserved" -msgstr "" - msgid "or <0><1>sell {tokenSymbol} on exchange." msgstr "" @@ -299,9 +284,6 @@ msgstr "" msgid "Attach an image" msgstr "" -msgid "Choose wallet" -msgstr "" - msgid "A reserved rate of more than {RESERVED_RATE_WARNING_THRESHOLD_PERCENT}% is risky for contributors. Contributors won't receive many tokens for their contribution." msgstr "" @@ -617,12 +599,6 @@ msgstr "" msgid "While payments to this project are paused, your project will not be able to receive payments. Transferring ETH to this project will still work." msgstr "" -msgid "<0/> for <1/>" -msgstr "" - -msgid "Overview" -msgstr "" - msgid "last {TRENDING_WINDOW_DAYS} days" msgstr "" @@ -770,9 +746,6 @@ msgstr "" msgid "Use me as a base!" msgstr "" -msgid "Receive ERC-20 tokens" -msgstr "" - msgid "New NFTs will be available in your next cycle as long as it starts after your edit deadline." msgstr "" @@ -932,9 +905,6 @@ msgstr "" msgid "Payouts will be sent to:" msgstr "" -msgid "Project tokens currently reserved for the recipients below. These tokens can be sent out at any time." -msgstr "" - msgid "Automated" msgstr "" @@ -977,9 +947,6 @@ msgstr "" msgid "Hold fees" msgstr "" -msgid "Receive:" -msgstr "" - msgid "Grant NFT permissions" msgstr "" @@ -1067,9 +1034,6 @@ msgstr "" msgid "Maximum {MAX_DESCRIPTION_LENGTH} characters" msgstr "" -msgid "You must review and accept the risks." -msgstr "" - msgid "% tokens redeemed" msgstr "" @@ -1097,9 +1061,6 @@ msgstr "" msgid "Project owner (you)" msgstr "" -msgid "This cycle's payouts. Payouts reset each cycle." -msgstr "" - msgid "Edit project and cycle rules" msgstr "" @@ -1115,9 +1076,6 @@ msgstr "" msgid "Are you sure you want to remove {0}?" msgstr "" -msgid "I understand and accept the risks associated with <0>this project and the <1>Juicebox Protocol." -msgstr "" - msgid "Payouts" msgstr "" @@ -1169,9 +1127,6 @@ msgstr "" msgid "1. Set ENS name" msgstr "" -msgid "Legacy balance" -msgstr "" - msgid "No overflow" msgstr "" @@ -1208,9 +1163,6 @@ msgstr "" msgid "Collection Name" msgstr "" -msgid "No active cycle." -msgstr "" - msgid "The project owner is the only reserved token recipient. Any reserved tokens sent out this cycle will go to them." msgstr "" @@ -1238,9 +1190,6 @@ msgstr "" msgid "Choose an ENS name to use as the project's handle. Subdomains are allowed and will be included in the handle. Handles won't include the \".eth\" extension." msgstr "" -msgid "This project doesn't reserve any tokens." -msgstr "" - msgid "Total:" msgstr "" @@ -1577,9 +1526,6 @@ msgstr "" msgid "Launch V3 migration token" msgstr "" -msgid "Your total token balance for this project's legacy tokens (V1 or V2 tokens)." -msgstr "" - msgid "days" msgstr "" @@ -1643,9 +1589,6 @@ msgstr "" msgid "Collection description" msgstr "" -msgid "Project details failed to load." -msgstr "" - msgid "There are no NFT tiers to update." msgstr "" @@ -1709,9 +1652,6 @@ msgstr "" msgid "Memo" msgstr "" -msgid "I accept the <0>risks associated with the Juicebox protocol." -msgstr "" - msgid "Transfer unclaimed {tokenTextShort}" msgstr "" @@ -1745,9 +1685,6 @@ msgstr "" msgid "Switch to limited payouts" msgstr "" -msgid "Export payout CSV" -msgstr "" - msgid "JuiceboxDAO is a community of passionate builders, creators, and innovators working together to push the boundaries of decentralized funding. Using the Juicebox protocol, we've created a DAO to coordinate thousands of JBX holders, build in the open, and govern the protocol over time." msgstr "" @@ -1814,9 +1751,6 @@ msgstr "" msgid "Claim tokens as ERC-20" msgstr "" -msgid "Pay <0/>" -msgstr "" - msgid "Choose an ENS name before setting the text record" msgstr "" @@ -1964,9 +1898,6 @@ msgstr "" msgid "Optionally, you can create an ERC-20 token once your project has been deployed. Until then, the Juicebox protocol will track token balances internally, allowing your supporters to receive tokens and redeem them for ETH." msgstr "" -msgid "I understand and accept this project's notice." -msgstr "" - msgid "Set this to the sum of your payouts" msgstr "" @@ -2219,9 +2150,6 @@ msgstr "" msgid "Splits payer addresses" msgstr "" -msgid "Attach an on-chain message to this payment." -msgstr "" - msgid "ERC-20 tokens can only be issued once an ERC-20 token has been created for this project." msgstr "" @@ -2270,9 +2198,6 @@ msgstr "" msgid "The project owner can edit the next cycle's rules at any time." msgstr "" -msgid "Redeem for ETH" -msgstr "" - msgid "Export this cycle's payouts to CSV." msgstr "" @@ -2387,9 +2312,6 @@ msgstr "" msgid "No edits were made to cycle details for this cycle." msgstr "" -msgid "{nftBalanceFormatted, plural, one {NFT} other {NFTs}}" -msgstr "" - msgid "Save recipients" msgstr "" @@ -2840,9 +2762,6 @@ msgstr "" msgid "Owned by: <0/>" msgstr "" -msgid "Close, I'll do these later" -msgstr "" - msgid "Activity" msgstr "" @@ -2909,9 +2828,6 @@ msgstr "" msgid "{0} after {feePercentage}% JBX membership fee" msgstr "" -msgid "No upcoming cycle." -msgstr "" - msgid "Explore all projects" msgstr "" @@ -2942,9 +2858,6 @@ msgstr "" msgid "Redeem tokens" msgstr "" -msgid "Display ERC-20 and other Juicebox project tokens that this project owner holds." -msgstr "" - msgid "Add an on-chain note about this cycle." msgstr "" @@ -2975,9 +2888,6 @@ msgstr "" msgid "Approve" msgstr "" -msgid "Manage {tokenText}" -msgstr "" - msgid "Bookmark project" msgstr "" @@ -3005,9 +2915,6 @@ msgstr "" msgid "Danger Zone" msgstr "" -msgid "Create an ERC-20 token (optional)" -msgstr "" - msgid "<0>Juicebox has had <1>multiple security audits, and has handled tens of thousands of ETH through its protocol.<2>However, Juicebox is still experimental software. Although the Juicebox contract team have done their part to shape the smart contracts for public use and have tested the code thoroughly, the risk of exploits is never 0%.<3>Due to their public nature, any exploits to the contracts may have irreversible consequences, including loss of ETH. Please use Juicebox with caution.<4><5>Learn more about the risks." msgstr "" @@ -3029,9 +2936,6 @@ msgstr "" msgid "This Juicebox V3 project also has a project on Juicebox V1 and/or V2. The project owner is allowing you to migrate your legacy tokens (V1 or V2) for V3 tokens." msgstr "" -msgid "Untrack token" -msgstr "" - msgid "How do I use this website?" msgstr "" @@ -3182,9 +3086,6 @@ msgstr "" msgid "Collection details" msgstr "" -msgid "Mint this project's ERC-20 tokens to your wallet. Leave unchecked to have Juicebox track your token balance, saving gas on this transaction. You can claim your ERC-20 tokens later." -msgstr "" - msgid "Request a feature." msgstr "" @@ -3401,9 +3302,6 @@ msgstr "" msgid "Insufficient token balance" msgstr "" -msgid "No previous cycles" -msgstr "" - msgid "From" msgstr "" @@ -3524,9 +3422,6 @@ msgstr "" msgid "Prevent NFT overspending" msgstr "" -msgid "Pay this project to receive NFTs." -msgstr "" - msgid "V1 project handle" msgstr "" @@ -3977,12 +3872,6 @@ msgstr "" msgid "Redeem {tokensLabel} for ETH" msgstr "" -msgid "Projects can reserve a percentage of token issuance for the recipients set by the project owner." -msgstr "" - -msgid "No payouts scheduled for this cycle." -msgstr "" - msgid "Set metadata resolver for {projectTitle}\\'s project NFT" msgstr "" @@ -4244,9 +4133,6 @@ msgstr "" msgid "Project NFT theme" msgstr "" -msgid "Project activity failed to load." -msgstr "" - msgid "payout" msgstr "" @@ -4301,9 +4187,6 @@ msgstr "" msgid "Edited payout" msgstr "" -msgid "<0/> claimable" -msgstr "" - msgid "Pay out specific amounts of ETH to addresses and projects each cycle. Any remaining ETH will stay in the project for future cycles." msgstr "" @@ -4421,9 +4304,6 @@ msgstr "" msgid "Upgrade your project's JBController and JBETHPaymentTerminal contracts. This upgrade is required to deploy a migration token (JBV3Token)." msgstr "" -msgid "Create a project payer address (optional)" -msgstr "" - msgid "Edit reserved token recipients" msgstr "" @@ -4592,9 +4472,6 @@ msgstr "" msgid "Review & Deploy" msgstr "" -msgid "Congratulations on launching your project! For help planning your next steps, share your project in the <0>JuiceboxDAO Discord. Optionally, you can also:" -msgstr "" - msgid "Token beneficiary:" msgstr "" @@ -4697,9 +4574,6 @@ msgstr "" msgid "Zero (no payouts)" msgstr "" -msgid "Set a project handle (optional)" -msgstr "" - msgid "Error loading payments" msgstr "" @@ -4832,15 +4706,9 @@ msgstr "" msgid "Payment notice" msgstr "" -msgid "{userOwnershipPercentage}% of total supply" -msgstr "" - msgid "Make changes to your cycle settings and rules" msgstr "" -msgid "Amount:" -msgstr "" - msgid "Reserved tokens" msgstr "" @@ -4928,9 +4796,6 @@ msgstr "" msgid "No payout recipients" msgstr "" -msgid "You must understand and accept this project's notice." -msgstr "" - msgid "V3" msgstr "" @@ -5012,9 +4877,6 @@ msgstr "" msgid "Unlocked Cycles" msgstr "" -msgid "Add token" -msgstr "" - msgid "No edits were made to tokens for this cycle." msgstr "" diff --git a/src/pages/v2/p/[projectId]/index.tsx b/src/pages/v2/p/[projectId]/index.tsx index 13f0500f3c..c64b029617 100644 --- a/src/pages/v2/p/[projectId]/index.tsx +++ b/src/pages/v2/p/[projectId]/index.tsx @@ -1,7 +1,5 @@ -import Loading from 'components/Loading' -import ProjectDashboard from 'components/ProjectDashboard' import { AppWrapper, SEO } from 'components/common' -import { FEATURE_FLAGS } from 'constants/featureFlags' +import ProjectDashboard from 'components/v2v3/V2V3Project/ProjectDashboard' import { PV_V2 } from 'constants/pv' import { AnnouncementsProvider } from 'contexts/Announcements/AnnouncementsProvider' import { V2V3ProjectPageProvider } from 'contexts/v2v3/V2V3ProjectPageProvider' @@ -9,16 +7,12 @@ import { paginateDepleteProjectsQueryCall } from 'lib/apollo/paginateDepleteProj import { loadCatalog } from 'locales/utils' import { ProjectMetadata } from 'models/projectMetadata' import { GetStaticPaths, GetStaticProps, InferGetStaticPropsType } from 'next' -import React, { PropsWithChildren, Suspense, lazy } from 'react' -import { featureFlagEnabled } from 'utils/featureFlags' +import React, { PropsWithChildren } from 'react' import { cidFromUrl, ipfsPublicGatewayUrl } from 'utils/ipfs' import { ProjectPageProps, getProjectStaticProps, } from 'utils/server/pages/props' -const V2V3Dashboard = lazy( - () => import('components/v2v3/V2V3Project/V2V3Dashboard'), -) export const getStaticPaths: GetStaticPaths = async () => { if (process.env.BUILD_CACHE_V2_PROJECTS === 'true') { @@ -85,14 +79,10 @@ const ProjectPageSEO = ({ /> ) -export default function V2ProjectPage({ +export default function V2V3ProjectPage({ metadata, projectId, }: InferGetStaticPropsType) { - const newProjectPageEnabled = featureFlagEnabled( - FEATURE_FLAGS.NEW_PROJECT_PAGE, - ) - return ( <> @@ -101,13 +91,7 @@ export default function V2ProjectPage({ - {newProjectPageEnabled ? ( - - ) : ( - }> - - - )} + diff --git a/src/utils/encodeJb721DelegateMetadata/encodeJb721DelegateMetadata.ts b/src/utils/encodeJb721DelegateMetadata/encodeJb721DelegateMetadata.ts index c779ffb46c..94f707dd29 100644 --- a/src/utils/encodeJb721DelegateMetadata/encodeJb721DelegateMetadata.ts +++ b/src/utils/encodeJb721DelegateMetadata/encodeJb721DelegateMetadata.ts @@ -10,19 +10,19 @@ import { constants, utils } from 'ethers' import { createMetadata } from 'juicebox-metadata-helper' import { JB721DelegateVersion } from 'models/v2v3/contracts' -export interface JB721DELAGATE_V3_PAY_METADATA { +interface JB721DELAGATE_V3_PAY_METADATA { tierIdsToMint: number[] dontMint?: boolean expectMintFromExtraFunds?: boolean dontOverspend?: boolean } -export interface JB721DELAGATE_V3_1_PAY_METADATA { +interface JB721DELAGATE_V3_1_PAY_METADATA { tierIdsToMint: number[] allowOverspending?: boolean } -export type JB721DELAGATE_V3_2_PAY_METADATA = JB721DELAGATE_V3_1_PAY_METADATA +type JB721DELAGATE_V3_2_PAY_METADATA = JB721DELAGATE_V3_1_PAY_METADATA export type PayMetadata = | JB721DELAGATE_V3_PAY_METADATA diff --git a/src/utils/featureFlags.ts b/src/utils/featureFlags.ts index 74940b2d9d..9781a1277b 100644 --- a/src/utils/featureFlags.ts +++ b/src/utils/featureFlags.ts @@ -1,4 +1,3 @@ -import { FEATURE_FLAGS } from 'constants/featureFlags' import { readNetwork } from 'constants/networks' import { NetworkName } from 'models/networkName' @@ -12,13 +11,7 @@ import { NetworkName } from 'models/networkName' */ const FEATURE_FLAG_DEFAULTS: { [featureFlag: string]: { [networkName in NetworkName]?: boolean } -} = { - [FEATURE_FLAGS.NEW_PROJECT_PAGE]: { - mainnet: true, - goerli: true, - localhost: true, - }, -} +} = {} const featureFlagKey = (baseKey: string) => { return `${baseKey}_${readNetwork.name}` diff --git a/src/utils/notifications.ts b/src/utils/notifications.ts index 1934dd97c1..331fa9db39 100644 --- a/src/utils/notifications.ts +++ b/src/utils/notifications.ts @@ -1,5 +1,5 @@ import { notification } from 'antd' -import ErrorNotificationButtons from 'components/ErrorNotificationButtons' +import ErrorNotificationButtons from 'components/buttons/ErrorNotificationButtons' /** * @param message Title of notification