Skip to content

Commit

Permalink
Merge pull request #4566 from jbx-protocol/dev
Browse files Browse the repository at this point in the history
Release: 21-12-24
  • Loading branch information
aeolianeth authored Dec 30, 2024
2 parents 1eb1748 + 1e9ba29 commit 7667d9a
Show file tree
Hide file tree
Showing 130 changed files with 1,378 additions and 605 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@
"graphql": "^16.8.1",
"he": "^1.2.0",
"jsonwebtoken": "^9.0.0",
"juice-sdk-core": "^11.5.0-alpha",
"juice-sdk-react": "^11.6.0-alpha",
"juice-sdk-core": "^12.2.4-alpha",
"juice-sdk-react": "^12.2.4-alpha",
"juicebox-metadata-helper": "0.1.7",
"less": "4.1.2",
"lodash": "^4.17.21",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { NftRewardTier } from 'models/nftRewards'
import { CreateCollapse } from 'packages/v2v3/components/Create/components/CreateCollapse/CreateCollapse'
import { OptionalHeader } from 'packages/v2v3/components/Create/components/OptionalHeader'
import { useLockPageRulesWrapper } from 'packages/v2v3/components/Create/hooks/useLockPageRulesWrapper'
import { NftRewardsData } from 'redux/slices/shared/v2ProjectTypes'
import { NftRewardsData } from 'redux/slices/v2v3/shared/v2ProjectTypes'
import { inputMustExistRule } from 'utils/antdRules'
import { RewardsList } from '../RewardsList/RewardsList'
import { NftAdvancedFormItems } from './NftAdvancedFormItems'
Expand All @@ -34,13 +34,15 @@ export const AddNftCollectionForm = ({
nftRewardsData,
okButton,
onFinish,
priceCurrencySymbol,
}: {
form: FormInstance<NftRewardsFormProps>
initialValues?: NftRewardsFormProps
postPayModalData: NftPostPayModalConfig | undefined
nftRewardsData: NftRewardsData
okButton: React.ReactNode
onFinish?: VoidFunction
priceCurrencySymbol: string
}) => {
const lockPageRulesWrapper = useLockPageRulesWrapper()

Expand All @@ -59,7 +61,11 @@ export const AddNftCollectionForm = ({
>
<div className="flex flex-col gap-6">
<Form.Item noStyle name="rewards">
<RewardsList allowCreate nftRewardsData={nftRewardsData} />
<RewardsList
allowCreate
nftRewardsData={nftRewardsData}
priceCurrencySymbol={priceCurrencySymbol}
/>
</Form.Item>

{hasNfts && (
Expand Down
13 changes: 5 additions & 8 deletions src/components/NftRewards/RewardsList/AddEditRewardModal.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { QuestionCircleOutlined } from '@ant-design/icons'
import { t, Trans } from '@lingui/macro'
import { Trans, t } from '@lingui/macro'
import { Form, Modal, Tooltip } from 'antd'
import InputAccessoryButton from 'components/buttons/InputAccessoryButton'
import { WarningCallout } from 'components/Callout/WarningCallout'
Expand All @@ -17,10 +17,9 @@ import { NftRewardTier } from 'models/nftRewards'
import { CreateCollapse } from 'packages/v2v3/components/Create/components/CreateCollapse/CreateCollapse'
import { OptionalHeader } from 'packages/v2v3/components/Create/components/OptionalHeader'
import { DEFAULT_NFT_MAX_SUPPLY } from 'packages/v2v3/constants/nftRewards'
import { V2V3_CURRENCY_USD } from 'packages/v2v3/utils/currency'
import { UploadRequestOption } from 'rc-upload/lib/interface'
import { useCallback, useEffect, useLayoutEffect, useState } from 'react'
import { NftRewardsData } from 'redux/slices/shared/v2ProjectTypes'
import { NftRewardsData } from 'redux/slices/v2v3/shared/v2ProjectTypes'
import {
inputIsIntegerRule,
inputIsValidUrlRule,
Expand Down Expand Up @@ -56,6 +55,7 @@ export const NEW_NFT_ID_LOWER_LIMIT = 1000000

export const AddEditRewardModal = ({
className,
currencySymbol,
editingData,
nftRewards,
open,
Expand All @@ -64,6 +64,7 @@ export const AddEditRewardModal = ({
withEditWarning = false,
}: {
className?: string
currencySymbol: string
editingData?: NftRewardTier | undefined
nftRewards: NftRewardsData
open?: boolean
Expand Down Expand Up @@ -245,11 +246,7 @@ export const AddEditRewardModal = ({
rules={[inputMustExistRule({ label: t`Minimum Contribution` })]}
>
<FormattedNumberInput
accessory={
<InputAccessoryButton
content={nftCurrency === V2V3_CURRENCY_USD ? 'USD' : 'ETH'}
/>
}
accessory={<InputAccessoryButton content={currencySymbol} />}
/>
</Form.Item>
<Form.Item>
Expand Down
11 changes: 6 additions & 5 deletions src/components/NftRewards/RewardsList/RewardItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,8 @@ import { JuiceVideoThumbnailOrImage } from 'components/JuiceVideo/JuiceVideoThum
import TooltipLabel from 'components/TooltipLabel'
import round from 'lodash/round'
import { NftRewardTier } from 'models/nftRewards'
import { V2V3_CURRENCY_USD } from 'packages/v2v3/utils/currency'
import { ReactNode } from 'react'
import { NftRewardsData } from 'redux/slices/shared/v2ProjectTypes'
import { NftRewardsData } from 'redux/slices/v2v3/shared/v2ProjectTypes'
import { isZeroAddress } from 'utils/address'
import { hasLimitedSupply } from 'utils/nftRewards'
import { prettyUrl } from 'utils/url'
Expand All @@ -29,11 +28,13 @@ function numberUpToPrecisionFormat(
export const RewardItem = ({
reward,
nftRewards,
priceCurrencySymbol,
onEditClicked,
onDeleteClicked,
}: {
reward: NftRewardTier
nftRewards: NftRewardsData
priceCurrencySymbol: string
onEditClicked?: () => void
onDeleteClicked?: () => void
}) => {
Expand Down Expand Up @@ -97,9 +98,9 @@ export const RewardItem = ({
<div className="grid grid-cols-2 gap-y-6 gap-x-16">
<RewardStatLine
title={t`Minimum contribution`}
stat={`${numberUpToPrecisionFormat(contributionFloor)} ${
nftCurrency === V2V3_CURRENCY_USD ? 'USD' : 'ETH'
}`}
stat={`${numberUpToPrecisionFormat(
contributionFloor,
)} ${priceCurrencySymbol}`}
/>
{hasLimitedSupply(maxSupply) && (
<RewardStatLine
Expand Down
8 changes: 6 additions & 2 deletions src/components/NftRewards/RewardsList/RewardsList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import { FormItemInput } from 'models/formItemInput'
import { NftRewardTier } from 'models/nftRewards'
import { MAX_NFT_REWARD_TIERS } from 'packages/v2v3/constants/nftRewards'
import { createContext, useCallback, useContext, useState } from 'react'
import { NftRewardsData } from 'redux/slices/shared/v2ProjectTypes'
import { NftRewardsData } from 'redux/slices/v2v3/shared/v2ProjectTypes'
import { sortNftsByContributionFloor } from 'utils/nftRewards'
import { AddEditRewardModal } from './AddEditRewardModal'
import { RewardItem } from './RewardItem'
import { useRewards } from './hooks/useRewards'
import { RewardItem } from './RewardItem'

const RewardsListContext = createContext<ReturnType<typeof useRewards>>({
rewards: [],
Expand All @@ -34,6 +34,7 @@ type RewardsListProps = FormItemInput<NftRewardTier[]> & {
allowCreate?: boolean
withEditWarning?: boolean
nftRewardsData: NftRewardsData
priceCurrencySymbol: string
}

interface RewardsListChildrenExports {
Expand All @@ -44,6 +45,7 @@ interface RewardsListChildrenExports {
export const RewardsList: React.FC<React.PropsWithChildren<RewardsListProps>> &
RewardsListChildrenExports = ({
allowCreate = false,
priceCurrencySymbol,
value,
onChange,
withEditWarning,
Expand Down Expand Up @@ -82,6 +84,7 @@ export const RewardsList: React.FC<React.PropsWithChildren<RewardsListProps>> &
<div key={reward.id}>
<RewardItem
nftRewards={nftRewardsData}
priceCurrencySymbol={priceCurrencySymbol}
reward={reward}
onEditClicked={() => {
setSelectedReward(reward)
Expand Down Expand Up @@ -112,6 +115,7 @@ export const RewardsList: React.FC<React.PropsWithChildren<RewardsListProps>> &
)}
</div>
<AddEditRewardModal
currencySymbol={priceCurrencySymbol}
open={modal.visible}
editingData={selectedReward}
nftRewards={nftRewardsData}
Expand Down
2 changes: 1 addition & 1 deletion src/components/formItems/ProjectDiscountRate.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Form, Switch } from 'antd'
import FormItemLabel from 'components/FormItemLabel'
import FormItemWarningText from 'components/FormItemWarningText'
import { DISCOUNT_RATE_EXPLANATION } from 'components/strings'
import { DEFAULT_FUNDING_CYCLE_DATA } from 'redux/slices/shared/v2ProjectDefaultState'
import { DEFAULT_FUNDING_CYCLE_DATA } from 'redux/slices/v2v3/shared/v2ProjectDefaultState'
import NumberSlider from '../inputs/NumberSlider'
import { FormItemExt } from './formItemExt'

Expand Down
2 changes: 1 addition & 1 deletion src/components/formItems/ProjectReserved.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { useState } from 'react'
import {
DEFAULT_FUNDING_CYCLE_METADATA,
DEFAULT_MINT_RATE,
} from 'redux/slices/shared/v2ProjectDefaultState'
} from 'redux/slices/v2v3/shared/v2ProjectDefaultState'
import { formattedNum } from 'utils/format/formatNumber'
import NumberSlider from '../inputs/NumberSlider'
import FundingCycleDetailWarning from '../Project/FundingCycleDetailWarning'
Expand Down
12 changes: 5 additions & 7 deletions src/hooks/ContractReader/useContractReadValue.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,11 @@ export function useContractReadValue<C extends string, V>({
const newValue = _formatter(result)

if (_valueDidChange(value, newValue)) {
console.info(
`📗 New >`,
functionName,
{ args },
{ newValue },
{ contract: readContract?.address },
)
console.info(`📗 New >`, functionName, {
args,
newValue,
contract: readContract?.address,
})
setValue(newValue)
}
} catch (err) {
Expand Down
17 changes: 7 additions & 10 deletions src/hooks/ContractReader/util/useCallContractRead.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,13 @@ export async function callContractRead<T extends string>({
try {
console.info(`📚 Read >`, functionName)
return await readContract[functionName](...(args ?? []))
} catch (err) {
console.error(
`📕 Read error >`,
functionName,
{ args },
{ err },
{ contract: readContract.address },
{ contracts },
)
} catch (error) {
console.error(`📕 Read error >`, functionName, error, {
args,
contract: readContract.address,
contracts,
})

throw err
throw error
}
}
4 changes: 2 additions & 2 deletions src/hooks/Wallet/hooks/useChainUnsupported.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { useSetChain } from '@web3-onboard/react'
import { readNetwork } from 'constants/networks'
import { useCurrentRouteChainId } from 'packages/v4/hooks/useCurrentRouteChainId'
import { useJBChainId } from 'juice-sdk-react'
import { useMemo } from 'react'

export function useChainUnsupported() {
const [{ connectedChain }] = useSetChain()

// get v4 chain id
const chainId = useCurrentRouteChainId()
const chainId = useJBChainId()

const chainUnsupported = useMemo(() => {
if (!connectedChain) {
Expand Down
6 changes: 6 additions & 0 deletions src/locales/messages.pot
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,9 @@ msgstr ""
msgid "Extended functionality for project owners"
msgstr ""

msgid "Weight cut percent"
msgstr ""

msgid "Error downloading participants, try again."
msgstr ""

Expand Down Expand Up @@ -4571,6 +4574,9 @@ msgstr ""
msgid "Save profile details"
msgstr ""

msgid "Cash out tax rate"
msgstr ""

msgid "Current owner"
msgstr ""

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ import { serializeV1FundingCycle } from 'packages/v1/utils/serializers'
import { useCallback, useContext, useLayoutEffect, useState } from 'react'
import { useAppDispatch } from 'redux/hooks/useAppDispatch'
import { useEditingV1FundingCycleSelector } from 'redux/hooks/v1'
import { editingProjectActions } from 'redux/slices/editingProject'
import { editingProjectActions } from 'redux/slices/v1/editingProject'
import { classNames } from 'utils/classNames'
import { drawerWidth } from 'utils/drawerWidth'
import {
Expand Down
2 changes: 1 addition & 1 deletion src/packages/v1/components/shared/forms/BudgetForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import {
import { useContext, useLayoutEffect, useMemo, useState } from 'react'
import { useAppDispatch } from 'redux/hooks/useAppDispatch'
import { useEditingV1FundingCycleSelector } from 'redux/hooks/v1'
import { editingProjectActions } from 'redux/slices/editingProject'
import { editingProjectActions } from 'redux/slices/v1/editingProject'
import { fromWad } from 'utils/format/formatNumber'
import { helpPagePath } from 'utils/helpPagePath'

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { CreatePage } from 'models/createPage'
import { useCallback, useContext, useMemo } from 'react'
import { useAppDispatch } from 'redux/hooks/useAppDispatch'
import { creatingV2ProjectActions } from 'redux/slices/creatingV2Project'
import { creatingV2ProjectActions } from 'redux/slices/v2v3/creatingV2Project'
import { WizardContext } from '../contexts/WizardContext'

export const usePage = ({ name }: { name: string }) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { t } from '@lingui/macro'
import { CreatePage } from 'models/createPage'
import { useCallback, useContext, useMemo } from 'react'
import { useAppSelector } from 'redux/hooks/useAppSelector'
import { useEditingCreateFurthestPageReached } from 'redux/hooks/useEditingCreateFurthestPageReached'
import { useEditingCreateFurthestPageReached } from 'redux/hooks/v2v3/useEditingCreateFurthestPageReached'
import { WizardContext } from '../contexts/WizardContext'

const stepNames = (): Record<string, string> => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { CreatePage } from 'models/createPage'
import { useCallback, useEffect, useMemo, useState } from 'react'
import { useAppSelector } from 'redux/hooks/useAppSelector'
import { useEditingCreateFurthestPageReached } from 'redux/hooks/useEditingCreateFurthestPageReached'
import { useEditingCreateFurthestPageReached } from 'redux/hooks/v2v3/useEditingCreateFurthestPageReached'
import { PageProps } from '../Page'

const isPage = (element: PageProps | undefined) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import moment from 'moment'
import Link from 'next/link'
import { useLockPageRulesWrapper } from 'packages/v2v3/components/Create/hooks/useLockPageRulesWrapper'
import { useContext, useEffect } from 'react'
import { useSetCreateFurthestPageReached } from 'redux/hooks/useEditingCreateFurthestPageReached'
import { useSetCreateFurthestPageReached } from 'redux/hooks/v2v3/useEditingCreateFurthestPageReached'
import { durationMustExistRule } from 'utils/antdRules'
import { CreateBadge } from '../../CreateBadge'
import { CreateCollapse } from '../../CreateCollapse/CreateCollapse'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { useAppSelector } from 'redux/hooks/useAppSelector'
import {
DEFAULT_MUST_START_AT_OR_AFTER,
creatingV2ProjectActions,
} from 'redux/slices/creatingV2Project'
} from 'redux/slices/v2v3/creatingV2Project'
import {
deriveDurationUnit,
otherUnitToSeconds,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import { AddNftCollectionForm } from 'components/NftRewards/AddNftCollectionForm/AddNftCollectionForm'
import { CREATE_FLOW } from 'constants/fathomEvents'
import { trackFathomGoal } from 'lib/fathom'
import { V2V3_CURRENCY_USD } from 'packages/v2v3/utils/currency'
import { useContext } from 'react'
import { useAppSelector } from 'redux/hooks/useAppSelector'
import { useSetCreateFurthestPageReached } from 'redux/hooks/useEditingCreateFurthestPageReached'
import { Wizard } from '../../Wizard/Wizard'
import { useSetCreateFurthestPageReached } from 'redux/hooks/v2v3/useEditingCreateFurthestPageReached'
import { PageContext } from '../../Wizard/contexts/PageContext'
import { Wizard } from '../../Wizard/Wizard'
import { useCreateFlowNftRewardsForm } from './hooks/useCreateFlowNftRewardsForm'

export function NftRewardsPage() {
Expand All @@ -22,9 +23,12 @@ export function NftRewardsPage() {

useSetCreateFurthestPageReached('nftRewards')

const nftCurrency = nftRewardsData?.pricing.currency

return (
<AddNftCollectionForm
form={form}
priceCurrencySymbol={nftCurrency === V2V3_CURRENCY_USD ? 'USD' : 'ETH'}
initialValues={initialValues}
postPayModalData={postPayModalData}
nftRewardsData={nftRewardsData}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { NftRewardTier } from 'models/nftRewards'
import { useEffect, useMemo } from 'react'
import { useAppDispatch } from 'redux/hooks/useAppDispatch'
import { useAppSelector } from 'redux/hooks/useAppSelector'
import { creatingV2ProjectActions } from 'redux/slices/creatingV2Project'
import { creatingV2ProjectActions } from 'redux/slices/v2v3/creatingV2Project'
import { withHttps, withoutHttp } from 'utils/externalLink'
import {
defaultNftCollectionDescription,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useContext } from 'react'
import { useAppSelector } from 'redux/hooks/useAppSelector'
import { useSetCreateFurthestPageReached } from 'redux/hooks/useEditingCreateFurthestPageReached'
import { useSetCreateFurthestPageReached } from 'redux/hooks/v2v3/useEditingCreateFurthestPageReached'
import { Wizard } from '../../Wizard/Wizard'
import { PageContext } from '../../Wizard/contexts/PageContext'
import { CreateFlowPayoutsTable } from './components/CreateFlowPayoutsTable'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react'
import { useAppDispatch } from 'redux/hooks/useAppDispatch'
import { useAppSelector } from 'redux/hooks/useAppSelector'
import { ReduxDistributionLimit } from 'redux/hooks/v2v3/shared'
import { creatingV2ProjectActions } from 'redux/slices/creatingV2Project'
import { creatingV2ProjectActions } from 'redux/slices/v2v3/creatingV2Project'
import { fromWad } from 'utils/format/formatNumber'
import { Icons } from '../../../Icons'
import { RadioCard } from './RadioCard'
Expand Down
Loading

0 comments on commit 7667d9a

Please sign in to comment.