Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature/guild #2167

Merged
merged 24 commits into from
Aug 11, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
c9786f3
Guild Token Lock (#1908)
Mi-Lan Jul 1, 2021
01419ea
feature/1861 (#1907)
hexyls Jul 3, 2021
20ffd3a
feature: add airdrop card to guild modal
hexyls Jul 20, 2021
4bd1cc3
fix: style changes, testing airdrop
hexyls Jul 21, 2021
f35e307
style: Reduce margin from 32px to 24px for diver and button group
Jul 21, 2021
c1781d3
fix: refetch claimable balance
hexyls Jul 22, 2021
e16145c
Merge branch 'feature/airdrop-guild-modal' of github.com:protofire/om…
hexyls Jul 22, 2021
9338323
fix: reset check address claim amount
hexyls Jul 22, 2021
a85e345
fix: display omen account on tight integration
hexyls Jul 22, 2021
76d783e
fix: capitalize wallet balance
hexyls Jul 22, 2021
f087c0b
feature: add airdrop for dxd holders
hexyls Jul 23, 2021
2b7959a
Add airdrop card to guild modal (#2112)
hexyls Jul 26, 2021
6ce1eae
Merge branch 'feature/guild' into fix/2114
hexyls Jul 28, 2021
80cbe2c
Merge branch 'feature/guild' into feature/2093
hexyls Jul 28, 2021
b0ffd3c
feature: redeploy both airdrops
hexyls Jul 28, 2021
464c75d
Combined (relay+eoa) OMN balance in header (#2139)
hexyls Aug 9, 2021
1539a8c
Merge pull request #2121 from protofire/fix/2114
hexyls Aug 10, 2021
39dce76
Merge branch 'feature/guild' into feature/2093
hexyls Aug 10, 2021
38f40d1
fix: fetch claims from github
hexyls Aug 10, 2021
f395fee
Merge branch 'feature/2093' of github.com:protofire/omen-exchange int…
hexyls Aug 10, 2021
2ecb1fb
fix: add claim recipient field
hexyls Aug 10, 2021
e2af478
Merge pull request #2122 from protofire/feature/2093
hexyls Aug 10, 2021
91947dc
Merge branch 'master' into feature/guild
hexyls Aug 11, 2021
a7b0679
fix: attempt to resolve merge issues, move code to cpk pipes
hexyls Aug 11, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
fix: attempt to resolve merge issues, move code to cpk pipes
  • Loading branch information
hexyls committed Aug 11, 2021
commit a7b06793079a66815ff52f59f8e71599f9066145
8 changes: 4 additions & 4 deletions app/src/components/modal/modal_airdrop/airdrop_card.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import React, { HTMLAttributes } from 'react'
import styled, { withTheme } from 'styled-components'

import { STANDARD_DECIMALS } from '../../../common/constants'
import { useConnectedWeb3Context } from '../../../hooks'
import { formatBigNumber } from '../../../util/tools'
import { useConnectedWeb3Context } from '../../../contexts'
import { bigNumberToString } from '../../../util/tools'
import { Button } from '../../button'
import { ButtonType } from '../../button/button_styling_types'
import { IconOmen } from '../../common/icons'
Expand Down Expand Up @@ -108,12 +108,12 @@ const AirdropCard = (props: Props) => {
<TopSectionDetails>
<TopSectionHeading>Claimable Amount</TopSectionHeading>
<TopSectionSubHeading green={!claimIsDisabled}>
{formatBigNumber(displayAmount, STANDARD_DECIMALS)} OMN
{bigNumberToString(displayAmount, STANDARD_DECIMALS)} OMN
</TopSectionSubHeading>
</TopSectionDetails>
</TopSectionLeft>
{displayButtons && (
<AirdropButton buttonType={ButtonType.primaryAlternative} disabled={claimIsDisabled} onClick={submitClaim}>
<AirdropButton buttonType={ButtonType.primary} disabled={claimIsDisabled} onClick={submitClaim}>
Claim
</AirdropButton>
)}
Expand Down
2 changes: 1 addition & 1 deletion app/src/components/modal/modal_airdrop/check_address.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ export const ModalCheckAddress = (props: Props) => {
<AddressField error={error} onChange={updateAddress} placeholder="Wallet Address" value={address} />
{error && <ErrorMessage>Address has no available claim</ErrorMessage>}
</RecipientWrapper>
<ClaimButton buttonType={ButtonType.primaryAlternative} disabled={amount.isZero()} onClick={submitClaim}>
<ClaimButton buttonType={ButtonType.primary} disabled={amount.isZero()} onClick={submitClaim}>
Claim OMN
</ClaimButton>
</ContentWrapper>
Expand Down
13 changes: 6 additions & 7 deletions app/src/components/modal/modal_airdrop/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ import Modal from 'react-modal'
import { withTheme } from 'styled-components'

import { STANDARD_DECIMALS } from '../../../common/constants'
import { useAirdropService, useConnectedWeb3Context } from '../../../hooks'
import { formatBigNumber } from '../../../util/tools'
import { useConnectedWeb3Context } from '../../../contexts'
import { useAirdropService } from '../../../hooks'
import { bigNumberToString } from '../../../util/tools'
import { TransactionStep } from '../../../util/types'
import { IconClose, IconOmen } from '../../common/icons'
import { ContentWrapper, ModalNavigation, ModalNavigationLeft } from '../common_styled'
Expand All @@ -22,14 +23,12 @@ interface Props extends HTMLAttributes<HTMLDivElement> {
export const ModalAirdrop = (props: Props) => {
const { theme } = props

const { balances, cpk } = useConnectedWeb3Context()
const { balances, cpk, setTxState, txHash, txState } = useConnectedWeb3Context()

const initialIsOpenState = localStorage.getItem('airdrop')
const [isOpen, setIsOpen] = useState(!initialIsOpenState)
const [checkAddress, setCheckAddress] = useState(false)
const [isTransactionModalOpen, setIsTransactionModalOpen] = useState<boolean>(false)
const [txHash, setTxHash] = useState('')
const [txState, setTxState] = useState<TransactionStep>(TransactionStep.waitingConfirmation)
const [message, setMessage] = useState('')

Modal.setAppElement('#root')
Expand All @@ -49,10 +48,10 @@ export const ModalAirdrop = (props: Props) => {
}

try {
setMessage(`Claim ${formatBigNumber(amount, STANDARD_DECIMALS)} OMN`)
setMessage(`Claim ${bigNumberToString(amount, STANDARD_DECIMALS)} OMN`)
setTxState(TransactionStep.waitingConfirmation)
setIsTransactionModalOpen(true)
await cpk.claimAirdrop({ account, setTxHash, setTxState })
await cpk.claimAirdrop({ account })
await fetchClaimAmount()
await balances.fetchBalances()
} catch (e) {
Expand Down
48 changes: 19 additions & 29 deletions app/src/components/modal/modal_lock_yo_tokens/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { STANDARD_DECIMALS } from '../../../common/constants'
import { useAirdropService } from '../../../hooks'
import { ERC20Service, OmenGuildService } from '../../../services'
import { getToken, networkIds } from '../../../util/networks'
import { daysUntil, divBN, formatBigNumber, formatLockDate } from '../../../util/tools'
import { bigNumberToString, daysUntil, divBN, formatLockDate } from '../../../util/tools'
import { TransactionStep } from '../../../util/types'
import { Button } from '../../button/button'
import { ButtonStateful, ButtonStates } from '../../button/button_stateful'
Expand All @@ -18,7 +18,7 @@ import { TextfieldCustomPlaceholder } from '../../common'
import { BigNumberInput, BigNumberInputReturn } from '../../common/form/big_number_input'
import { IconArrowBack, IconClose, IconOmen } from '../../common/icons'
import { IconAlertInverted } from '../../common/icons/IconAlertInverted'
import { ArrowIcon } from '../../market/common/new_value/img/ArrowIcon'
import { ArrowIcon } from '../../market/common_sections/tables/new_value/img/ArrowIcon'
import { ContentWrapper, ModalNavigation } from '../common_styled'
import { AirdropCardWrapper } from '../modal_airdrop/airdrop_card'
import { ModalCheckAddressWrapper } from '../modal_airdrop/check_address'
Expand Down Expand Up @@ -101,7 +101,7 @@ const PercentageText = styled.span<{ lightColor?: boolean }>`

const ModalLockTokens = (props: Props) => {
const { context, isOpen, setIsModalLockTokensOpen, theme } = props
const { account, balances, cpk, library: provider, networkId, relay } = context
const { account, balances, cpk, library: provider, networkId, relay, setTxState, txHash, txState } = context

const { fetchBalances, omenBalance, xOmenBalance } = balances

Expand All @@ -117,9 +117,6 @@ const ModalLockTokens = (props: Props) => {
const [unlockTimeLeft, setUnlockTimeLeft] = useState<number>(0)
const [isTransactionModalOpen, setIsTransactionModalOpen] = useState<boolean>(false)
const [transactionMessage, setTransactionMessage] = useState<string>('')
const [txHash, setTxHash] = useState<any>('')
const [txState, setTxState] = useState<TransactionStep>(TransactionStep.idle)
const [txNetId, setTxNetId] = useState()
const [omenAllowance, setOmenAllowance] = useState<BigNumber>(Zero)
const [allowanceState, setAllowanceState] = useState<ButtonStates>(ButtonStates.idle)
const [checkAddress, setCheckAddress] = useState(false)
Expand All @@ -141,7 +138,7 @@ const ModalLockTokens = (props: Props) => {

const getTokenLockInfo = async () => {
try {
if (cpk?.address) {
if (cpk?.address && omen.omenGuildAddress) {
let address
if (context.networkId === networkIds.MAINNET && !context.relay) {
address = await omen.tokenVault()
Expand All @@ -165,9 +162,10 @@ const ModalLockTokens = (props: Props) => {
console.error(`Error while trying to fetch locked token info: `, e.message)
}
}

const fetchAllowance = async () => {
try {
if (cpk) {
if (cpk && omen.omenGuildAddress) {
let allowanceAddress
if (context.networkId === networkIds.MAINNET && !context.relay) {
allowanceAddress = await omen.tokenVault()
Expand Down Expand Up @@ -215,14 +213,12 @@ const ModalLockTokens = (props: Props) => {

try {
setTxState(TransactionStep.waitingConfirmation)
setTransactionMessage(`Lock ${formatBigNumber(amount, STANDARD_DECIMALS, 2)} OMN`)
setTransactionMessage(`Lock ${bigNumberToString(amount, STANDARD_DECIMALS, 2)} OMN`)

setIsTransactionModalOpen(true)

const transaction = await cpk.lockTokens(amount, setTxState, setTxHash)
await cpk.lockTokens({ amount })

setTxNetId(provider.network.chainId)
setTxHash(transaction)
await getTokenLockInfo()
await fetchBalances()
setDisplayLockAmount(Zero)
Expand All @@ -233,16 +229,15 @@ const ModalLockTokens = (props: Props) => {
setTxState(TransactionStep.error)
}
}

const unlockTokens = async () => {
if (!cpk) return
setTxState(TransactionStep.waitingConfirmation)
try {
setTransactionMessage(`Unlock ${formatBigNumber(userLocked, STANDARD_DECIMALS, 2)} OMN`)
setTransactionMessage(`Unlock ${bigNumberToString(userLocked, STANDARD_DECIMALS, 2)} OMN`)

setIsTransactionModalOpen(true)
const hash = await cpk.unlockTokens(userLocked)
setTxNetId(provider.network.chainId)
setTxHash(hash)
await cpk.unlockTokens({ amount: userLocked })
} catch (e) {
setTxState(TransactionStep.error)
}
Expand All @@ -254,10 +249,10 @@ const ModalLockTokens = (props: Props) => {
}

try {
setTransactionMessage(`Claim ${formatBigNumber(amount, STANDARD_DECIMALS)} OMN`)
setTransactionMessage(`Claim ${bigNumberToString(amount, STANDARD_DECIMALS)} OMN`)
setTxState(TransactionStep.waitingConfirmation)
setIsTransactionModalOpen(true)
await cpk.claimAirdrop({ account, setTxHash, setTxState })
await cpk.claimAirdrop({ account })
await fetchClaimAmount()
await balances.fetchBalances()
} catch (e) {
Expand Down Expand Up @@ -298,23 +293,23 @@ const ModalLockTokens = (props: Props) => {
<DataRow>
<LightDataItem>Wallet Balance</LightDataItem>
<DarkDataItem>
{formatBigNumber(omenBalance, STANDARD_DECIMALS, 2)} OMN
{bigNumberToString(omenBalance, STANDARD_DECIMALS, 2)} OMN
{isLockAmountOpen && <IconOmen size={24} style={{ marginLeft: '10px' }} />}
</DarkDataItem>
</DataRow>
{relay && (
<DataRow>
<LightDataItem>Omen Account</LightDataItem>
<DarkDataItem>
{formatBigNumber(xOmenBalance, STANDARD_DECIMALS, 2)} OMN
{bigNumberToString(xOmenBalance, STANDARD_DECIMALS, 2)} OMN
{isLockAmountOpen && <IconOmen size={24} style={{ marginLeft: '10px' }} />}
</DarkDataItem>
</DataRow>
)}
<DataRow>
<LightDataItem>Locked in Guild</LightDataItem>
<DarkDataItem>
{formatBigNumber(userLocked, 18, 2)} OMN
{bigNumberToString(userLocked, 18, 2)} OMN
{isLockAmountOpen && <IconOmen size={24} style={{ marginLeft: '10px' }} />}
</DarkDataItem>
</DataRow>
Expand All @@ -335,7 +330,7 @@ const ModalLockTokens = (props: Props) => {
}
onClickMaxButton={() => {
setDisplayLockAmount(omenBalance)
setAmountToDisplay(formatBigNumber(omenBalance, STANDARD_DECIMALS, 2))
setAmountToDisplay(bigNumberToString(omenBalance, STANDARD_DECIMALS, 2))
}}
shouldDisplayMaxButton={true}
symbol={'OMN'}
Expand Down Expand Up @@ -394,11 +389,7 @@ const ModalLockTokens = (props: Props) => {
/>
<ButtonSection>
{!isLockAmountOpen && (
<ButtonsLockUnlock
buttonType={ButtonType.primaryAlternative}
disabled={unlockTimeLeft >= 0}
onClick={unlockTokens}
>
<ButtonsLockUnlock buttonType={ButtonType.primary} disabled={unlockTimeLeft >= 0} onClick={unlockTokens}>
Unlock Omen
</ButtonsLockUnlock>
)}
Expand All @@ -415,7 +406,7 @@ const ModalLockTokens = (props: Props) => {
</ApproveButton>
)}
<ButtonsLockUnlock
buttonType={ButtonType.primaryAlternative}
buttonType={ButtonType.primary}
disabled={
(displayLockAmount.isZero() ||
omenBalance.isZero() ||
Expand Down Expand Up @@ -446,7 +437,6 @@ const ModalLockTokens = (props: Props) => {
icon={<IconOmen size={24} style={{ marginLeft: '10px' }} />}
isOpen={isTransactionModalOpen}
message={transactionMessage}
netId={txNetId}
onClose={onClose}
txHash={txHash}
txState={txState}
Expand Down
13 changes: 6 additions & 7 deletions app/src/hooks/useAirdropService.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { BigNumber } from 'ethers/utils'
import { useEffect, useState } from 'react'

import { useConnectedWeb3Context } from '../contexts/connectedWeb3'
import { AirdropService } from '../services'

import { useConnectedWeb3Context } from './connectedWeb3'

interface Status {
active: boolean
}
Expand All @@ -16,9 +15,9 @@ interface AirdropServiceParams {
}

export const useAirdropService = (): AirdropServiceParams => {
const { account, library: provider, networkId, relay } = useConnectedWeb3Context()
const { account, library: provider, networkId } = useConnectedWeb3Context()

const [airdrop, setAirdrop] = useState<AirdropService>(new AirdropService(networkId, provider, account, relay))
const [airdrop, setAirdrop] = useState<AirdropService>(new AirdropService(networkId, provider, account))
const [claimAmount, setClaimAmount] = useState(new BigNumber('0'))

const fetchClaimAmount = async (status?: Status) => {
Expand All @@ -37,14 +36,14 @@ export const useAirdropService = (): AirdropServiceParams => {
status.active = false
}
// eslint-disable-next-line
}, [airdrop, airdrop.relay, account, relay, networkId])
}, [airdrop, account, networkId])

useEffect(() => {
if (account) {
setAirdrop(new AirdropService(networkId, provider, account, relay))
setAirdrop(new AirdropService(networkId, provider, account))
}
// eslint-disable-next-line
}, [networkId, account, relay])
}, [networkId, account])

return { airdrop, claimAmount, fetchClaimAmount }
}
5 changes: 2 additions & 3 deletions app/src/services/airdrop/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,10 @@ import { airdropAbi } from './abi'
class AirdropService {
airdrops?: Contract[]
provider: any
relay: boolean

constructor(networkId: number, provider: any, signerAddress: Maybe<string>, relay: boolean) {
constructor(networkId: number, provider: any, signerAddress: Maybe<string>) {
const signer: Wallet = provider.getSigner()
this.provider = provider
this.relay = relay
const airdrops = getAirdrops(networkId)
if (airdrops && airdrops.length && signerAddress) {
this.airdrops = airdrops.map(airdrop => new ethers.Contract(airdrop, airdropAbi, provider).connect(signer))
Expand All @@ -33,6 +31,7 @@ class AirdropService {
if (claim && claim.amount) {
try {
const claimed = await airdrop.isClaimed(claim.index)

if (!claimed) {
return { ...claim, airdrop: airdrop.address, recipient }
}
Expand Down
Loading