From cd3508b1b63bddca5a412d9c4cee5da144944585 Mon Sep 17 00:00:00 2001 From: user Date: Wed, 8 Nov 2023 21:47:28 +1030 Subject: [PATCH 1/6] Remove Ethereum from the codebase --- .../app/queries/useUserRewards.ts | 2 - .../app/queries/useUserTransactions.ts | 145 --------------- .../app/routes/$network/dashboard.tsx | 4 - .../app/routes/$network/index.tsx | 4 - .../$network/query/dashboard/prizePool.tsx | 5 - .../app/util/chainUtils/chains.ts | 8 +- .../app/util/chainUtils/links.ts | 2 - .../app/webapp.config.server.ts | 2 - web/app.fluidity.money/config.toml | 167 ------------------ web/app.fluidity.money/webapp.config.js | 10 -- 10 files changed, 1 insertion(+), 348 deletions(-) diff --git a/web/app.fluidity.money/app/queries/useUserRewards.ts b/web/app.fluidity.money/app/queries/useUserRewards.ts index 6fbf5fcf3..06654c913 100644 --- a/web/app.fluidity.money/app/queries/useUserRewards.ts +++ b/web/app.fluidity.money/app/queries/useUserRewards.ts @@ -59,7 +59,6 @@ const queryWinnersAllSolana = gql` `; const queryWinnersAll: { [network in Chain]: string } = { - ethereum: queryWinnersAll_, arbitrum: queryWinnersAll_, polygon_zk: queryWinnersAll_, solana: queryWinnersAllSolana, @@ -118,7 +117,6 @@ const queryWinnersByAddressSolana = gql` `; const queryWinnersByAddress: { [network in Chain]: string } = { - ethereum: queryWinnersByAddress_, arbitrum: queryWinnersByAddress_, polygon_zk: queryWinnersByAddress_, solana: queryWinnersByAddressSolana, diff --git a/web/app.fluidity.money/app/queries/useUserTransactions.ts b/web/app.fluidity.money/app/queries/useUserTransactions.ts index 2cb40e39d..ad39322fa 100644 --- a/web/app.fluidity.money/app/queries/useUserTransactions.ts +++ b/web/app.fluidity.money/app/queries/useUserTransactions.ts @@ -13,47 +13,6 @@ import { import { MintAddress } from "~/types/MintAddress"; const queryByAddress: Queryable = { - ethereum: gql` - query getTransactionsByAddress( - $tokens: [String!] - $address: String! - $offset: Int = 0 - $filterHashes: [String!] = [] - $limit: Int = 12 - ) { - ethereum { - transfers( - currency: { in: $tokens } - any: [{ sender: { is: $address } }, { receiver: { is: $address } }] - options: { - desc: "block.timestamp.unixtime" - limit: $limit - offset: $offset - } - ) { - sender { - address - } - receiver { - address - } - amount - currency { - symbol - } - transaction(txHash: { notIn: $filterHashes }) { - hash - } - block { - timestamp { - unixtime - } - } - } - } - } - `, - arbitrum: gql` query getTransactionsByAddress( $address: String! @@ -164,71 +123,6 @@ const queryByAddress: Queryable = { }; const queryByTxHash: Queryable = { - ethereum: gql` - query getTransactionsByTxHash( - $transactions: [String!] - $filterHashes: [String!] = [] - $tokens: [String!] = [] - $limit: Int = 12 - ) { - ethereum { - transfers( - options: { desc: "block.timestamp.unixtime", limit: $limit } - txHash: { in: $transactions } - currency: { in: $tokens } - ) { - sender { - address - } - receiver { - address - } - amount - currency { - symbol - } - transaction(txHash: { notIn: $filterHashes }) { - hash - } - block { - timestamp { - unixtime - } - } - } - } - } - `, - - arbitrum: gql` - query getTransactionsByTxHash( - $transactions: [String!] - $filterHashes: [String!] = [] - $limit: Int = 12 - ) { - transfers: user_actions( - where: { - network: { _eq: "arbitrum" } - _not: { transaction_hash: { _in: $filterHashes } } - transaction_hash: { _in: $transactions } - } - order_by: { time: desc } - limit: $limit - ) { - sender_address - recipient_address - token_short_name - time - transaction_hash - amount - token_decimals - type - swap_in - application - } - } - `, - solana: gql` query getTransactionsByTxHash( $transactions: [String!] @@ -289,45 +183,6 @@ const queryByTxHash: Queryable = { }; const queryAll: Queryable = { - ethereum: gql` - query getTransactions( - $tokens: [String!] - $offset: Int = 0 - $filterHashes: [String!] = [] - $limit: Int = 12 - ) { - ethereum { - transfers( - currency: { in: $tokens } - options: { - desc: "block.timestamp.unixtime" - limit: $limit - offset: $offset - } - ) { - sender { - address - } - receiver { - address - } - amount - currency { - symbol - } - transaction(txHash: { notIn: $filterHashes }) { - hash - } - block { - timestamp { - unixtime - } - } - } - } - } - `, - arbitrum: gql` query getTransactions( $offset: Int = 0 diff --git a/web/app.fluidity.money/app/routes/$network/dashboard.tsx b/web/app.fluidity.money/app/routes/$network/dashboard.tsx index 07c54ef0b..80dec9167 100644 --- a/web/app.fluidity.money/app/routes/$network/dashboard.tsx +++ b/web/app.fluidity.money/app/routes/$network/dashboard.tsx @@ -202,10 +202,6 @@ const CHAIN_NAME_MAP: Record< string, { name: string; icon: JSX.Element; disabled?: boolean } > = { - ethereum: { - name: "ETH", - icon: , - }, arbitrum: { name: "ARB", icon: , diff --git a/web/app.fluidity.money/app/routes/$network/index.tsx b/web/app.fluidity.money/app/routes/$network/index.tsx index 0d5b3b882..13cdceda7 100644 --- a/web/app.fluidity.money/app/routes/$network/index.tsx +++ b/web/app.fluidity.money/app/routes/$network/index.tsx @@ -37,10 +37,6 @@ const CHAIN_NAME_MAP: Record< string, { name: string; icon: JSX.Element; disabled?: boolean } > = { - ethereum: { - name: "ETH", - icon: , - }, arbitrum: { name: "ARB", icon: , diff --git a/web/app.fluidity.money/app/routes/$network/query/dashboard/prizePool.tsx b/web/app.fluidity.money/app/routes/$network/query/dashboard/prizePool.tsx index ec398a5a3..30e78cb60 100644 --- a/web/app.fluidity.money/app/routes/$network/query/dashboard/prizePool.tsx +++ b/web/app.fluidity.money/app/routes/$network/query/dashboard/prizePool.tsx @@ -17,11 +17,6 @@ export async function loader() { return Promise.resolve( Promise.all( [ - { - network: "ethereum", - abi: RewardAbi, - getPrizePool: aggregatePrizePools, - }, { network: "arbitrum", abi: TotalRewardPoolAbi, diff --git a/web/app.fluidity.money/app/util/chainUtils/chains.ts b/web/app.fluidity.money/app/util/chainUtils/chains.ts index 083790c52..cbd912e1a 100644 --- a/web/app.fluidity.money/app/util/chainUtils/chains.ts +++ b/web/app.fluidity.money/app/util/chainUtils/chains.ts @@ -1,9 +1,8 @@ -export type Chain = "ethereum" | "solana" | "arbitrum" | "polygon_zk"; +export type Chain = "solana" | "arbitrum" | "polygon_zk"; export type ChainType = "evm" | "solana"; const chainType = (network: string): ChainType | undefined => { switch (network) { - case "ethereum": case "arbitrum": case "polygon_zk": return "evm"; @@ -16,8 +15,6 @@ const chainType = (network: string): ChainType | undefined => { const getChainId = (network: Chain): number => { switch (network) { - case "ethereum": - return 1; case "arbitrum": return 42161; case "polygon_zk": @@ -34,8 +31,6 @@ const getNetworkFromChainId = ( typeof chainId_ === "string" ? parseInt(chainId_, 16) : chainId_; switch (chainId) { - case 1: - return "ethereum"; case 42161: return "arbitrum"; case 1101: @@ -45,7 +40,6 @@ const getNetworkFromChainId = ( const getChainNativeToken = (network: string): string => { switch (network) { - case "ethereum": case "arbitrum": case "polygon_zk": return "ETH"; diff --git a/web/app.fluidity.money/app/util/chainUtils/links.ts b/web/app.fluidity.money/app/util/chainUtils/links.ts index cbb672408..7bd114719 100644 --- a/web/app.fluidity.money/app/util/chainUtils/links.ts +++ b/web/app.fluidity.money/app/util/chainUtils/links.ts @@ -2,8 +2,6 @@ import type { Chain } from "./chains"; const getAddressExplorerLink = (chain: Chain, address: string): string => { switch (chain) { - case "ethereum": - return `https://etherscan.io/address/${address}`; case "solana": return `https://explorer.solana.com/address/${address}`; case "arbitrum": diff --git a/web/app.fluidity.money/app/webapp.config.server.ts b/web/app.fluidity.money/app/webapp.config.server.ts index 82404bc55..99f35d833 100644 --- a/web/app.fluidity.money/app/webapp.config.server.ts +++ b/web/app.fluidity.money/app/webapp.config.server.ts @@ -83,13 +83,11 @@ const OptionsSchema = z.object({ ), contract: z.object({ prize_pool: z.object({ - ethereum: z.string(), arbitrum: z.string(), solana: z.string(), polygon_zk: z.string(), }), eac_aggregator_proxy: z.object({ - ethereum: z.string(), arbitrum: z.string(), solana: z.string(), polygon_zk: z.string(), diff --git a/web/app.fluidity.money/config.toml b/web/app.fluidity.money/config.toml index b0ba9261d..5533080ed 100644 --- a/web/app.fluidity.money/config.toml +++ b/web/app.fluidity.money/config.toml @@ -1,10 +1,4 @@ # Setup Webapp Network Drivers -[[drivers.ethereum]] -label = "Ethereum" -testnet = false -rpc = { http = "FLU_ETH_RPC_HTTP", ws = "FLU_ETH_RPC_WS" } -server = "https://api.ethereum.fluidity.money" - [[drivers.solana]] label = "Solana" testnet = false @@ -27,112 +21,6 @@ testnet = false rpc = { http = "FLU_HASURA_RPC_HTTP", ws = "FLU_HASURA_RPC_WS" } secret = "FLU_HASURA_SECRET" -# Chain Configurations -[config.ethereum] -explorer = "https://etherscan.io" -fluidAssets = [ - "0xADc234a4e90E2045f353F5d4fCdE66144d23b458", - "0x0B319dB00d07C8fAdfaAEf13C910141a5dA0aa8F", - "0x2bE1e42BF263AaB47D27Ba92E72c14823e101D7C", - "0x9d1089802eE608BA84C5c98211afE5f37F96B36C", - "0x244517Dc59943E8CdFbD424Bdb3262c5f04a1387", -] - -[[config.ethereum.tokens]] -symbol = "USDC" -name = "USDC Native" -logo = "/assets/tokens/usdc.svg" -address = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" -colour = "#2775ca" -decimals = 6 -enabled = true - -[[config.ethereum.tokens]] -symbol = "fUSDC" -name = "Fluid USDC Native" -logo = "/assets/tokens/fUSDC.svg" -address = "0x9d1089802eE608BA84C5c98211afE5f37F96B36C" -colour = "#2775ca" -isFluidOf = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" -decimals = 6 -enabled = true - -[[config.ethereum.tokens]] -symbol = "USDT" -name = "Tether USD" -logo = "/assets/tokens/usdt.svg" -address = "0xdAC17F958D2ee523a2206206994597C13D831ec7" -colour = "#12946c" -decimals = 6 -enabled = false - -[[config.ethereum.tokens]] -symbol = "fUSDT" -name = "Fluid USDT" -logo = "/assets/tokens/fUSDT.svg" -address = "0xADc234a4e90E2045f353F5d4fCdE66144d23b458" -colour = "#12946c" -isFluidOf = "0xdAC17F958D2ee523a2206206994597C13D831ec7" -decimals = 6 -enabled = true - -[[config.ethereum.tokens]] -symbol = "TUSD" -name = "TrueUSD" -logo = "/assets/tokens/tusd.svg" -address = "0x0000000000085d4780B73119b644AE5ecd22b376" -colour = "#1da1f2" -decimals = 18 -enabled = false - -[[config.ethereum.tokens]] -symbol = "fTUSD" -name = "Fluid TUSD" -logo = "/assets/tokens/fTUSD.svg" -address = "0x0B319dB00d07C8fAdfaAEf13C910141a5dA0aa8F" -colour = "#1da1f2" -isFluidOf = "0x0000000000085d4780B73119b644AE5ecd22b376" -decimals = 18 -enabled = true - -[[config.ethereum.tokens]] -symbol = "FRAX" -name = "Frax" -logo = "/assets/tokens/frax.svg" -address = "0x853d955aCEf822Db058eb8505911ED77F175b99e" -colour = "#e84142" -decimals = 18 -enabled = false - -[[config.ethereum.tokens]] -symbol = "fFRAX" -name = "Fluid FRAX" -logo = "/assets/tokens/fFRAX.svg" -address = "0x2bE1e42BF263AaB47D27Ba92E72c14823e101D7C" -colour = "#e84142" -isFluidOf = "0x853d955aCEf822Db058eb8505911ED77F175b99e" -decimals = 18 -enabled = true - -[[config.ethereum.tokens]] -symbol = "DAI" -name = "Dai Stablecoin" -logo = "/assets/tokens/dai.svg" -address = "0x6B175474E89094C44Da98b954EedeAC495271d0F" -colour = "#825902" -decimals = 18 -enabled = false - -[[config.ethereum.tokens]] -symbol = "fDAI" -name = "Fluid DAI" -logo = "/assets/tokens/fDAI.svg" -address = "0x244517Dc59943E8CdFbD424Bdb3262c5f04a1387" -colour = "#825902" -isFluidOf = "0x6B175474E89094C44Da98b954EedeAC495271d0F" -decimals = 18 -enabled = true - [config.solana] explorer = "https://explorer.solana.com" fluidAssets = [ @@ -259,61 +147,6 @@ isFluidOf = "0xA8CE8aee21bC2A48a5EF670afCc9274C7bbbC035" decimals = 6 enabled = true - -# liquidity_providers Configurations -# eth providers -[liquidity_providers.ethereum] - -[[liquidity_providers.ethereum.providers]] -name= "uniswap" - -[liquidity_providers.ethereum.providers.link] -fUSDC = "https://app.uniswap.org/#/add/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/0x9d1089802eE608BA84C5c98211afE5f37F96B36C/" -fUSDT = "https://app.uniswap.org/#/add/0xdAC17F958D2ee523a2206206994597C13D831ec7/0xADc234a4e90E2045f353F5d4fCdE66144d23b458/" -fTUSD = "https://app.uniswap.org/#/add/0x0000000000085d4780B73119b644AE5ecd22b376/0x0B319dB00d07C8fAdfaAEf13C910141a5dA0aa8F" -fFRAX = "https://app.uniswap.org/#/add/0x853d955aCEf822Db058eb8505911ED77F175b99e/0x2bE1e42BF263AaB47D27Ba92E72c14823e101D7C" -fDAI = "https://app.uniswap.org/#/add/0x6B175474E89094C44Da98b954EedeAC495271d0F/0x244517Dc59943E8CdFbD424Bdb3262c5f04a1387/" - -[[liquidity_providers.ethereum.providers]] -name= "sushiswap" - -[liquidity_providers.ethereum.providers.link] -fUSDC = "https://www.sushi.com/earn/eth:0xc35466daaa5e61977ec4219d682eeb7beb431726/add" -fUSDT = "https://www.sushi.com/earn/eth:0x0d33d674f6eef1991e9aab561189b26ebed7c576/add" -fTUSD = "https://www.sushi.com/earn" -fFRAX = "https://www.sushi.com/earn" -fDAI = "https://www.sushi.com/earn" - -[[liquidity_providers.ethereum.providers]] -name= "dodo" - -[liquidity_providers.ethereum.providers.link] -fUSDC = "https://app.dodoex.io/earn/add-liquidity?network=mainnet&poolAddress=0x6abd7403878f3a010170a383b4f20285668fd979" -fUSDT = "https://app.dodoex.io/earn?network=mainnet" -fTUSD = "https://app.dodoex.io/earn?network=mainnet" -fFRAX = "https://app.dodoex.io/earn?network=mainnet" -fDAI = "https://app.dodoex.io/earn?network=mainnet" - -[[liquidity_providers.ethereum.providers]] -name= "balancer" - -[liquidity_providers.ethereum.providers.link] -fUSDC = "https://app.balancer.fi/#/ethereum/pool/0xfee6da6ce300197b7d613de22cb00e86a8537f06000200000000000000000393/invest" -fUSDT = "https://app.balancer.fi/#/ethereum/pool/create" -fTUSD = "https://app.balancer.fi/#/ethereum/pool/create" -fFRAX = "https://app.balancer.fi/#/ethereum/pool/create" -fDAI = "https://app.balancer.fi/#/ethereum/pool/create" - -[[liquidity_providers.ethereum.providers]] -name= "1inch" - -[liquidity_providers.ethereum.providers.link] -fUSDC = "https://app.1inch.io/#/1/earn/pools?filter=fUSDC&token0=0x9d1089802ee608ba84c5c98211afe5f37f96b36c&token1=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" -fUSDT = "https://app.1inch.io/#/1/earn/pools" -fTUSD = "https://app.1inch.io/#/1/earn/pools" -fFRAX = "https://app.1inch.io/#/1/earn/pools" -fDAI = "https://app.1inch.io/#/1/earn/pools" - # sol providers [liquidity_providers.solana] diff --git a/web/app.fluidity.money/webapp.config.js b/web/app.fluidity.money/webapp.config.js index e606ba1ac..48ab746b1 100644 --- a/web/app.fluidity.money/webapp.config.js +++ b/web/app.fluidity.money/webapp.config.js @@ -1,16 +1,6 @@ const options = { // Chains drivers: { - ethereum: [ - { - label: "Ethereum", - testnet: false, - rpc: { - http: "", - ws: "", - }, - }, - ], solana: [ { label: "Solana", From 0cb8d1ee87d44eda352dce78d1fc8a6f4135c456 Mon Sep 17 00:00:00 2001 From: user Date: Thu, 9 Nov 2023 21:56:49 +1030 Subject: [PATCH 2/6] Fix small mistake not removing an import --- .../app/routes/$network/query/dashboard/prizePool.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/web/app.fluidity.money/app/routes/$network/query/dashboard/prizePool.tsx b/web/app.fluidity.money/app/routes/$network/query/dashboard/prizePool.tsx index 30e78cb60..182786e8d 100644 --- a/web/app.fluidity.money/app/routes/$network/query/dashboard/prizePool.tsx +++ b/web/app.fluidity.money/app/routes/$network/query/dashboard/prizePool.tsx @@ -1,12 +1,8 @@ import { json } from "react-router-dom"; import config from "~/webapp.config.server"; -import RewardAbi from "~/util/chainUtils/ethereum/RewardPool.json"; import TotalRewardPoolAbi from "~/util/chainUtils/ethereum/getTotalRewardPool.json"; import RegistryAbi from "~/util/chainUtils/ethereum/Registry.json"; -import { - aggregatePrizePools, - getTotalRewardPool, -} from "~/util/chainUtils/ethereum/transaction"; +import { getTotalRewardPool } from "~/util/chainUtils/ethereum/transaction"; import { JsonRpcProvider } from "@ethersproject/providers"; import { Chain } from "~/util/chainUtils/chains"; From 260e59274dc7a3d66265f180c05b6ff9c667a1bc Mon Sep 17 00:00:00 2001 From: user Date: Thu, 9 Nov 2023 22:29:23 +1030 Subject: [PATCH 3/6] Remove more mentions of Ethereum --- .../app/queries/useHighestRewardStatistics.ts | 2 +- .../app/queries/useUserRewards.spec.ts | 2 +- .../app/queries/useUserUnclaimedRewards.ts | 21 ------------------- .../app/routes/$network.tsx | 3 +-- .../$network/dashboard/rewards/unclaimed.tsx | 2 +- .../dashboard/__tests__/unclaimed.spec.ts | 2 +- .../$network/query/dashboard/rewards.tsx | 5 ----- .../app/util/chainUtils/links.ts | 8 ------- web/app.fluidity.money/app/webapp.config.js | 17 --------------- 9 files changed, 5 insertions(+), 57 deletions(-) diff --git a/web/app.fluidity.money/app/queries/useHighestRewardStatistics.ts b/web/app.fluidity.money/app/queries/useHighestRewardStatistics.ts index 9bca3f9c5..05d007bdf 100644 --- a/web/app.fluidity.money/app/queries/useHighestRewardStatistics.ts +++ b/web/app.fluidity.money/app/queries/useHighestRewardStatistics.ts @@ -71,7 +71,7 @@ type HighestRewardByNetworkBody = { }; const useHighestRewardStatisticsByNetwork = async (network: string) => { - if (network !== "ethereum" && network !== "arbitrum") { + if (network !== "arbitrum") { throw Error(`network ${network} not supported`); } diff --git a/web/app.fluidity.money/app/queries/useUserRewards.spec.ts b/web/app.fluidity.money/app/queries/useUserRewards.spec.ts index 1dcf6def5..44d06063a 100644 --- a/web/app.fluidity.money/app/queries/useUserRewards.spec.ts +++ b/web/app.fluidity.money/app/queries/useUserRewards.spec.ts @@ -8,7 +8,7 @@ beforeAll(() => { describe("useUserRewards successfully runs", () => { it("should return a valid response", async () => { const response = await useUserRewardsByAddress( - "ethereum", + "arbitrum", "0xeb6b882a295d316ac62c8cfcc81c3e37c084b7c5" ); expect(response).toBeDefined(); diff --git a/web/app.fluidity.money/app/queries/useUserUnclaimedRewards.ts b/web/app.fluidity.money/app/queries/useUserUnclaimedRewards.ts index 0aeb44b40..d7152d5ce 100644 --- a/web/app.fluidity.money/app/queries/useUserUnclaimedRewards.ts +++ b/web/app.fluidity.money/app/queries/useUserUnclaimedRewards.ts @@ -2,27 +2,6 @@ import { gql, Queryable, jsonPost } from "~/util"; import { chainType } from "~/util/chainUtils/chains"; const query: Queryable = { - ethereum: gql` - query getPendingRewards($address: String!) { - ethereum_pending_winners( - where: { - reward_sent: { _eq: false } - address: { _eq: $address } - network: { _eq: "ethereum" } - } - order_by: { block_number: desc } - ) { - address - reward_sent - token_decimals - token_short_name - transaction_hash - win_amount - block_number - } - } - `, - solana: gql``, arbitrum: gql` diff --git a/web/app.fluidity.money/app/routes/$network.tsx b/web/app.fluidity.money/app/routes/$network.tsx index 66ea4a8bb..542a64377 100644 --- a/web/app.fluidity.money/app/routes/$network.tsx +++ b/web/app.fluidity.money/app/routes/$network.tsx @@ -62,13 +62,12 @@ const Provider = ({ children: React.ReactNode; }) => { const providers: ProviderMap = { - ethereum: EthereumProvider(walletconnectId, tokens, network), solana: SolanaProvider(solRpc, tokens), arbitrum: EthereumProvider(walletconnectId, tokens, network), polygon_zk: EthereumProvider(walletconnectId, tokens, network), }; - const [validNetwork, setValidNetwork] = useState(network ?? "ethereum"); + const [validNetwork, setValidNetwork] = useState(network ?? "arbitrum"); useEffect(() => { if (network && Object.keys(providers).includes(network)) { diff --git a/web/app.fluidity.money/app/routes/$network/dashboard/rewards/unclaimed.tsx b/web/app.fluidity.money/app/routes/$network/dashboard/rewards/unclaimed.tsx index e1353afbf..5e6c62605 100644 --- a/web/app.fluidity.money/app/routes/$network/dashboard/rewards/unclaimed.tsx +++ b/web/app.fluidity.money/app/routes/$network/dashboard/rewards/unclaimed.tsx @@ -240,7 +240,7 @@ const UnclaimedWinnings = () => { return (
{/* Info Card - Only accessible for Ethereum/Arbitrum */} - {(network === "ethereum" || network === "arbitrum") && + {(network === "arbitrum") && !!userUnclaimedRewards && ( { describe("Unclaimed page Loader", () => { it("should return a response", async () => { const reqParams = { - network: "ethereum", + network: "arbitrum", address: "0xeb6b882a295d316ac62c8cfcc81c3e37c084b7c5", }; diff --git a/web/app.fluidity.money/app/routes/$network/query/dashboard/rewards.tsx b/web/app.fluidity.money/app/routes/$network/query/dashboard/rewards.tsx index 7efdaa936..70ef8a741 100644 --- a/web/app.fluidity.money/app/routes/$network/query/dashboard/rewards.tsx +++ b/web/app.fluidity.money/app/routes/$network/query/dashboard/rewards.tsx @@ -54,11 +54,6 @@ export const loader: LoaderFunction = async ({ request, params }) => { return Promise.resolve( Promise.all( [ - { - network: "ethereum", - abi: RewardAbi, - getPrizePool: aggregatePrizePools, - }, { network: "arbitrum", abi: TotalRewardPoolAbi, diff --git a/web/app.fluidity.money/app/util/chainUtils/links.ts b/web/app.fluidity.money/app/util/chainUtils/links.ts index 7bd114719..fc388e687 100644 --- a/web/app.fluidity.money/app/util/chainUtils/links.ts +++ b/web/app.fluidity.money/app/util/chainUtils/links.ts @@ -14,8 +14,6 @@ const getAddressExplorerLink = (chain: Chain, address: string): string => { // Ethereum only const getBlockExplorerLink = (chain: Chain, block: number): string => { switch (chain) { - case "ethereum": - return `https://etherscan.io/block/${block}`; case "solana": return `https://explorer.solana.com/block/${block}`; case "arbitrum": @@ -27,8 +25,6 @@ const getBlockExplorerLink = (chain: Chain, block: number): string => { const getTxExplorerLink = (chain: Chain, address: string): string => { switch (chain) { - case "ethereum": - return `https://etherscan.io/tx/${address}`; case "solana": return `https://explorer.solana.com/tx/${address}`; case "arbitrum": @@ -40,10 +36,6 @@ const getTxExplorerLink = (chain: Chain, address: string): string => { const networkMapper = (network: string) => { switch (network) { - case "ETH": - return "ethereum"; - case "ethereum": - return "ETH"; case "SOL": return "solana"; case "solana": diff --git a/web/app.fluidity.money/app/webapp.config.js b/web/app.fluidity.money/app/webapp.config.js index b36d20841..1f66f7ff3 100644 --- a/web/app.fluidity.money/app/webapp.config.js +++ b/web/app.fluidity.money/app/webapp.config.js @@ -1,16 +1,6 @@ const options = { // Chains drivers: { - ethereum: [ - { - label: "Ethereum", - testnet: false, - rpc: { - http: "https://mainnet.infura.io/v3/your-api-key", - ws: "wss://mainnet.infura.io/ws/v3/your-api-key", - }, - }, - ], solana: [ { label: "Solana", @@ -22,13 +12,6 @@ const options = { }, ], }, - ethereum: { - currencies: [ - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "0xdAC17F958D2ee523a2206206994597C13D831ec7", - "0x6B175474E89094C44Da98b954EedeAC495271d0F", - ], - }, }; export default options; From 10f93091303edc812696f7353bd70e8cca602c4c Mon Sep 17 00:00:00 2001 From: user Date: Wed, 22 Nov 2023 23:56:44 +1030 Subject: [PATCH 4/6] Remove the unused variables --- .../app/routes/$network/query/dashboard/rewards.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/web/app.fluidity.money/app/routes/$network/query/dashboard/rewards.tsx b/web/app.fluidity.money/app/routes/$network/query/dashboard/rewards.tsx index 70ef8a741..2b8f6cdb4 100644 --- a/web/app.fluidity.money/app/routes/$network/query/dashboard/rewards.tsx +++ b/web/app.fluidity.money/app/routes/$network/query/dashboard/rewards.tsx @@ -5,14 +5,12 @@ import type { TokenPerformance } from "~/util/tokenAggregate"; import { JsonRpcProvider } from "@ethersproject/providers"; import { - aggregatePrizePools, getTotalRewardPool, } from "~/util/chainUtils/ethereum/transaction"; import { json } from "@remix-run/node"; import useApplicationRewardStatistics from "~/queries/useApplicationRewardStatistics"; import { aggregateRewards } from "~/util/rewardAggregates"; import { aggregateTokens } from "~/util/tokenAggregate"; -import RewardAbi from "~/util/chainUtils/ethereum/RewardPool.json"; import TotalRewardPoolAbi from "~/util/chainUtils/ethereum/getTotalRewardPool.json"; import config from "~/webapp.config.server"; import { From 8bb8f5cd518b1134fe962180cde098003d9455fe Mon Sep 17 00:00:00 2001 From: user Date: Thu, 23 Nov 2023 01:10:22 +1030 Subject: [PATCH 5/6] Remove more - Remove degen score - Add back Ethereum tokens to the list - Pull more ethereum --- .../app/queries/useUserTransactions.ts | 105 ++--------- .../app/routes/$network.tsx | 16 -- .../app/routes/$network/dashboard/home.tsx | 2 +- .../$network/dashboard/rewards/index.tsx | 2 +- .../app/styles/dashboard.css | 30 +--- .../app/styles/dashboard/airdrop.css | 79 ++------- .../app/styles/transfer.css | 15 +- .../app/util/api/graphql.ts | 9 +- .../chainUtils/ethereum/DegenScoreBeacon.json | 31 ---- .../util/chainUtils/ethereum/transaction.ts | 32 ---- web/app.fluidity.money/config.toml | 167 ++++++++++++++++++ .../contexts/EthereumProvider.tsx | 25 --- .../contexts/FluidityFacade.tsx | 2 - 13 files changed, 205 insertions(+), 310 deletions(-) delete mode 100644 web/app.fluidity.money/app/util/chainUtils/ethereum/DegenScoreBeacon.json diff --git a/web/app.fluidity.money/app/queries/useUserTransactions.ts b/web/app.fluidity.money/app/queries/useUserTransactions.ts index ad39322fa..2d6b51483 100644 --- a/web/app.fluidity.money/app/queries/useUserTransactions.ts +++ b/web/app.fluidity.money/app/queries/useUserTransactions.ts @@ -323,26 +323,6 @@ export type UserTransaction = { application: string; }; -type BitqueryUserTransaction = { - sender: { - address: string; - }; - receiver: { address: string }; - block: { timestamp: { unixtime: number } }; - transaction: { hash: string }; - amount: number; - currency: { symbol: string }; -}; - -type BitqueryUserTransactionRes = { - data?: { - [network: string]: { - transfers: BitqueryUserTransaction[]; - }; - }; - errors?: unknown; -}; - type HasuraUserTransaction = { sender_address: string; recipient_address: string; @@ -397,20 +377,12 @@ const useUserTransactionsByAddress = async ( }; const result = - networkGqlBackend(network) === "hasura" - ? parseHasuraUserTransactions( - await jsonPost< - UserTransactionsByAddressBody, - HasuraUserTransactionRes - >(url, body, headers) - ) - : parseBitqueryUserTransactions( - await jsonPost< - UserTransactionsByAddressBody, - BitqueryUserTransactionRes - >(url, body, headers), - network - ); + parseHasuraUserTransactions( + await jsonPost< + UserTransactionsByAddressBody, + HasuraUserTransactionRes + >(url, body, headers) + ) return result; }; @@ -442,20 +414,12 @@ const useUserTransactionsByTxHash = async ( }; const result = - networkGqlBackend(network) === "hasura" - ? parseHasuraUserTransactions( - await jsonPost< - UserTransactionsByTxHashBody, - HasuraUserTransactionRes - >(url, body, headers) - ) - : parseBitqueryUserTransactions( - await jsonPost< - UserTransactionsByTxHashBody, - BitqueryUserTransactionRes - >(url, body, headers), - network - ); + parseHasuraUserTransactions( + await jsonPost< + UserTransactionsByTxHashBody, + HasuraUserTransactionRes + >(url, body, headers) + ); return result; }; @@ -494,22 +458,13 @@ const useUserTransactionsAll = async ( }; const result = - networkGqlBackend(network) === "hasura" - ? parseHasuraUserTransactions( - await jsonPost( - url, - body, - headers - ) - ) - : parseBitqueryUserTransactions( - await jsonPost( - url, - body, - headers - ), - network - ); + parseHasuraUserTransactions( + await jsonPost( + url, + body, + headers + ) + ) return result; }; @@ -566,28 +521,6 @@ const parseHasuraUserTransactions = ( }; }; -const parseBitqueryUserTransactions = ( - result: BitqueryUserTransactionRes, - network: string -): UserTransactionsRes => { - if (!result.data || result.errors) - return { - errors: result.errors, - }; - - const transfers: BitqueryUserTransaction[] = - result.data[network]?.transfers ?? []; - - return { - data: { - transfers: transfers.map((transfer) => ({ - ...transfer, - application: "none", - })), - }, - }; -}; - export { useUserTransactionsAll, useUserTransactionsByAddress, diff --git a/web/app.fluidity.money/app/routes/$network.tsx b/web/app.fluidity.money/app/routes/$network.tsx index 542a64377..e49a9ceef 100644 --- a/web/app.fluidity.money/app/routes/$network.tsx +++ b/web/app.fluidity.money/app/routes/$network.tsx @@ -84,24 +84,8 @@ const Provider = ({ }; const ProviderOutlet = () => { - const { connected, address, getDegenScore } = useContext( - FluidityFacadeContext - ); - const { client } = useContext(SplitContext); - useEffect(() => { - if (!(address && connected)) return; - - (async () => { - if (!getDegenScore) return; - - const degenScore = await getDegenScore(address); - - client?.track("connected-user-degen-score", address, degenScore); - })(); - }, [address, client]); - return ( <> diff --git a/web/app.fluidity.money/app/routes/$network/dashboard/home.tsx b/web/app.fluidity.money/app/routes/$network/dashboard/home.tsx index 62377b9c2..f4add9655 100644 --- a/web/app.fluidity.money/app/routes/$network/dashboard/home.tsx +++ b/web/app.fluidity.money/app/routes/$network/dashboard/home.tsx @@ -76,7 +76,7 @@ function ErrorBoundary(error: Error) { } const SAFE_DEFAULT_HOME: HomeLoaderData = { - network: "ethereum", + network: "arbitrum", loaded: false, graph: { day: [], diff --git a/web/app.fluidity.money/app/routes/$network/dashboard/rewards/index.tsx b/web/app.fluidity.money/app/routes/$network/dashboard/rewards/index.tsx index c871298ee..7648e1f5d 100644 --- a/web/app.fluidity.money/app/routes/$network/dashboard/rewards/index.tsx +++ b/web/app.fluidity.money/app/routes/$network/dashboard/rewards/index.tsx @@ -108,7 +108,7 @@ type CacheData = { const SAFE_DEFAULT_REWARDS: RewardsLoaderData = { // Only used in Rewards - network: "ethereum", + network: "arbitrum", fluidTokenMap: {}, totalPrizePool: 0, loaded: false, diff --git a/web/app.fluidity.money/app/styles/dashboard.css b/web/app.fluidity.money/app/styles/dashboard.css index f5c50dbf0..ede067258 100644 --- a/web/app.fluidity.money/app/styles/dashboard.css +++ b/web/app.fluidity.money/app/styles/dashboard.css @@ -149,20 +149,7 @@ body { background-repeat: no-repeat; background-size: 100%; background-position: 0 0, 100% 0, 100% 100%, 0 100%; - background-image: linear-gradient( - 45deg, - #f3b8d8, - #b793e9, - #9fd4f3, - #ffd2c4, - #fbf3f3, - #d9abdf, - #af9ce3, - #aae4e1, - #c6ead0, - #ffffff, - #fdb5e4 - ); + background-image: linear-gradient(45deg, #f3b8d8, #b793e9, #9fd4f3, #ffd2c4, #fbf3f3, #d9abdf, #af9ce3, #aae4e1, #c6ead0, #ffffff, #fdb5e4); animation: rotate 4s linear infinite; } @@ -630,20 +617,7 @@ ul.sidebar-nav li div.active { } .holo { - background: conic-gradient( - from 209.59deg at 50% 50%, - #f3b8d8 0deg, - #b793e9 50.06deg, - #9fd4f3 85.94deg, - #ffd2c4 134.97deg, - #fbf3f3 172.05deg, - #d9abdf 200.75deg, - #af9ce3 224.67deg, - #aae4e1 259.36deg, - #c6ead0 298.82deg, - #ffffff 328.72deg, - #fdb5e4 360deg - ); + background: conic-gradient(from 209.59deg at 50% 50%, #f3b8d8 0deg, #b793e9 50.06deg, #9fd4f3 85.94deg, #ffd2c4 134.97deg, #fbf3f3 172.05deg, #d9abdf 200.75deg, #af9ce3 224.67deg, #aae4e1 259.36deg, #c6ead0 298.82deg, #ffffff 328.72deg, #fdb5e4 360deg); height: 40px; width: 40px; border-radius: 50%; diff --git a/web/app.fluidity.money/app/styles/dashboard/airdrop.css b/web/app.fluidity.money/app/styles/dashboard/airdrop.css index a75578573..fc49a1553 100644 --- a/web/app.fluidity.money/app/styles/dashboard/airdrop.css +++ b/web/app.fluidity.money/app/styles/dashboard/airdrop.css @@ -273,19 +273,7 @@ } .transaction-table > thead > tr.highlighted-row, .transaction-table > tbody > tr.airdrop-row.highlighted-row { - background: linear-gradient( - 90deg, - #f3b8d8 0%, - #b793e9 15.1%, - #9fd4f3 26.04%, - #ffd2c4 36.46%, - #fbf3f3 46.88%, - #d9abdf 57.29%, - #af9ce3 72.4%, - #aae4e1 85.42%, - #c6ead0 93.23%, - #fdb5e4 100% - ); + background: linear-gradient(90deg, #f3b8d8 0%, #b793e9 15.1%, #9fd4f3 26.04%, #ffd2c4 36.46%, #fbf3f3 46.88%, #d9abdf 57.29%, #af9ce3 72.4%, #aae4e1 85.42%, #c6ead0 93.23%, #fdb5e4 100%); } .transaction-table > thead > tr.highlighted-row td, .transaction-table > tbody > tr.airdrop-row.highlighted-row td { @@ -314,30 +302,14 @@ } .airdrop-leaderboard-mobile .transaction-table > thead > tr td:first-child, .airdrop-leaderboard-mobile .transaction-table > thead > tr th:first-child, -.airdrop-leaderboard-mobile - .transaction-table - > tbody - > tr.airdrop-row - td:first-child, -.airdrop-leaderboard-mobile - .transaction-table - > tbody - > tr.airdrop-row - th:first-child { +.airdrop-leaderboard-mobile .transaction-table > tbody > tr.airdrop-row td:first-child, +.airdrop-leaderboard-mobile .transaction-table > tbody > tr.airdrop-row th:first-child { padding-left: 1em; } .airdrop-leaderboard-mobile .transaction-table > thead > tr td:last-child, .airdrop-leaderboard-mobile .transaction-table > thead > tr th:last-child, -.airdrop-leaderboard-mobile - .transaction-table - > tbody - > tr.airdrop-row - td:last-child, -.airdrop-leaderboard-mobile - .transaction-table - > tbody - > tr.airdrop-row - th:last-child { +.airdrop-leaderboard-mobile .transaction-table > tbody > tr.airdrop-row td:last-child, +.airdrop-leaderboard-mobile .transaction-table > tbody > tr.airdrop-row th:last-child { padding-right: 1em; } .airdrop-leaderboard-mobile .transaction-table > thead > tr td, @@ -714,10 +686,7 @@ align-items: flex-start; gap: 0.5em; } -.staking-stats-container - .staking-stats-stakes-container - .stake - .stake-multiplier { +.staking-stats-container .staking-stats-stakes-container .stake .stake-multiplier { width: 100%; display: flex; flex-wrap: wrap; @@ -790,31 +759,18 @@ width: 150px; height: 150px; } -.recap-container - .recap-hero - .recap-hero-text - .recap-circle-scroll - .recap-circle-scroll-arrow { +.recap-container .recap-hero .recap-hero-text .recap-circle-scroll .recap-circle-scroll-arrow { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); } -.recap-container - .recap-hero - .recap-hero-text - .recap-circle-scroll - .recap-circle-scroll-arrow - svg { +.recap-container .recap-hero .recap-hero-text .recap-circle-scroll .recap-circle-scroll-arrow svg { fill: none; stroke: white; transform: scale(3); } -.recap-container - .recap-hero - .recap-hero-text - .recap-circle-scroll - .recap-circle-scroll-text { +.recap-container .recap-hero .recap-hero-text .recap-circle-scroll .recap-circle-scroll-text { font-size: 10px; fill: grey; letter-spacing: 0.4em; @@ -906,28 +862,19 @@ /* Track */ /* Handle */ } -.recap-container - .recap-stats - .recap-bottle-distribution-container::-webkit-scrollbar { +.recap-container .recap-stats .recap-bottle-distribution-container::-webkit-scrollbar { height: 10px; } -.recap-container - .recap-stats - .recap-bottle-distribution-container::-webkit-scrollbar-track { +.recap-container .recap-stats .recap-bottle-distribution-container::-webkit-scrollbar-track { background: transparent; border: 1px solid white; border-radius: 5px; } -.recap-container - .recap-stats - .recap-bottle-distribution-container::-webkit-scrollbar-thumb { +.recap-container .recap-stats .recap-bottle-distribution-container::-webkit-scrollbar-thumb { background: white; border-radius: 5px; } -.recap-container - .recap-stats - .recap-bottle-distribution-container - .bottle-container { +.recap-container .recap-stats .recap-bottle-distribution-container .bottle-container { gap: 1em; display: flex; flex-direction: column; diff --git a/web/app.fluidity.money/app/styles/transfer.css b/web/app.fluidity.money/app/styles/transfer.css index 0d4055653..337cd2928 100644 --- a/web/app.fluidity.money/app/styles/transfer.css +++ b/web/app.fluidity.money/app/styles/transfer.css @@ -276,20 +276,7 @@ body { right: 0; bottom: 0; z-index: 1; - background: conic-gradient( - from 209.59deg at 50% 50%, - #f3b8d8 0deg, - #b793e9 50.06deg, - #9fd4f3 85.94deg, - #ffd2c4 134.97deg, - #fbf3f3 172.05deg, - #d9abdf 200.75deg, - #af9ce3 224.67deg, - #aae4e1 259.36deg, - #c6ead0 298.82deg, - #ffffff 328.72deg, - #fdb5e4 360deg - ); + background: conic-gradient(from 209.59deg at 50% 50%, #f3b8d8 0deg, #b793e9 50.06deg, #9fd4f3 85.94deg, #ffd2c4 134.97deg, #fbf3f3 172.05deg, #d9abdf 200.75deg, #af9ce3 224.67deg, #aae4e1 259.36deg, #c6ead0 298.82deg, #ffffff 328.72deg, #fdb5e4 360deg); filter: blur(10px); scale: 1.1; } diff --git a/web/app.fluidity.money/app/util/api/graphql.ts b/web/app.fluidity.money/app/util/api/graphql.ts index b5e71197b..59a11e4ea 100644 --- a/web/app.fluidity.money/app/util/api/graphql.ts +++ b/web/app.fluidity.money/app/util/api/graphql.ts @@ -9,12 +9,10 @@ type GqlEndpoint = { headers: { [key: string]: string }; }; -type GqlBackend = "hasura" | "bitquery"; +type GqlBackend = "hasura"; export const networkGqlBackend = (network: string): GqlBackend | null => { switch (network) { - case "ethereum": - return "bitquery"; case "solana": case "arbitrum": case "polygon_zk": @@ -26,11 +24,6 @@ export const networkGqlBackend = (network: string): GqlBackend | null => { export const fetchGqlEndpoint = (network: string): GqlEndpoint | null => { switch (networkGqlBackend(network)) { - case "bitquery": - return { - url: "https://graphql.bitquery.io", - headers: { "X-API-KEY": process.env.FLU_BITQUERY_TOKEN ?? "" }, - }; case "hasura": return { url: "https://fluidity.hasura.app/v1/graphql", diff --git a/web/app.fluidity.money/app/util/chainUtils/ethereum/DegenScoreBeacon.json b/web/app.fluidity.money/app/util/chainUtils/ethereum/DegenScoreBeacon.json deleted file mode 100644 index 880a02173..000000000 --- a/web/app.fluidity.money/app/util/chainUtils/ethereum/DegenScoreBeacon.json +++ /dev/null @@ -1,31 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "traitId", - "type": "uint256" - }, - { - "internalType": "uint64", - "name": "maxAge", - "type": "uint64" - } - ], - "name": "getTrait", - "outputs": [ - { - "internalType": "uint192", - "name": "", - "type": "uint192" - } - ], - "stateMutability": "view", - "type": "function" - } -] diff --git a/web/app.fluidity.money/app/util/chainUtils/ethereum/transaction.ts b/web/app.fluidity.money/app/util/chainUtils/ethereum/transaction.ts index 2ce476e93..545721d1d 100644 --- a/web/app.fluidity.money/app/util/chainUtils/ethereum/transaction.ts +++ b/web/app.fluidity.money/app/util/chainUtils/ethereum/transaction.ts @@ -351,38 +351,6 @@ export const getTotalRewardPool = async ( } }; -// Returns User DegenScore -export const getUserDegenScore = async ( - provider: JsonRpcProvider, - userAddr: string, - degenScoreAddr: string, - degenScoreAbi: ContractInterface -): Promise => { - try { - const degenScoreContract = new Contract( - degenScoreAddr, - degenScoreAbi, - provider - ); - - if (!degenScoreContract) - throw new Error(`Could not instantiate DegenScore at ${degenScoreAddr}`); - - const degenScoreTraitId = "121371448299756538184036965"; - - const score = await degenScoreContract.callStatic.getTrait( - userAddr, - degenScoreTraitId, - 0 - ); - - return score.toNumber(); - } catch (error) { - await handleContractErrors(error as ErrorType, provider); - return 0; - } -}; - export type StakingRatioRes = { fusdcUsdcRatio: BigNumber; fusdcWethRatio: BigNumber; diff --git a/web/app.fluidity.money/config.toml b/web/app.fluidity.money/config.toml index 5533080ed..b0ba9261d 100644 --- a/web/app.fluidity.money/config.toml +++ b/web/app.fluidity.money/config.toml @@ -1,4 +1,10 @@ # Setup Webapp Network Drivers +[[drivers.ethereum]] +label = "Ethereum" +testnet = false +rpc = { http = "FLU_ETH_RPC_HTTP", ws = "FLU_ETH_RPC_WS" } +server = "https://api.ethereum.fluidity.money" + [[drivers.solana]] label = "Solana" testnet = false @@ -21,6 +27,112 @@ testnet = false rpc = { http = "FLU_HASURA_RPC_HTTP", ws = "FLU_HASURA_RPC_WS" } secret = "FLU_HASURA_SECRET" +# Chain Configurations +[config.ethereum] +explorer = "https://etherscan.io" +fluidAssets = [ + "0xADc234a4e90E2045f353F5d4fCdE66144d23b458", + "0x0B319dB00d07C8fAdfaAEf13C910141a5dA0aa8F", + "0x2bE1e42BF263AaB47D27Ba92E72c14823e101D7C", + "0x9d1089802eE608BA84C5c98211afE5f37F96B36C", + "0x244517Dc59943E8CdFbD424Bdb3262c5f04a1387", +] + +[[config.ethereum.tokens]] +symbol = "USDC" +name = "USDC Native" +logo = "/assets/tokens/usdc.svg" +address = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" +colour = "#2775ca" +decimals = 6 +enabled = true + +[[config.ethereum.tokens]] +symbol = "fUSDC" +name = "Fluid USDC Native" +logo = "/assets/tokens/fUSDC.svg" +address = "0x9d1089802eE608BA84C5c98211afE5f37F96B36C" +colour = "#2775ca" +isFluidOf = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" +decimals = 6 +enabled = true + +[[config.ethereum.tokens]] +symbol = "USDT" +name = "Tether USD" +logo = "/assets/tokens/usdt.svg" +address = "0xdAC17F958D2ee523a2206206994597C13D831ec7" +colour = "#12946c" +decimals = 6 +enabled = false + +[[config.ethereum.tokens]] +symbol = "fUSDT" +name = "Fluid USDT" +logo = "/assets/tokens/fUSDT.svg" +address = "0xADc234a4e90E2045f353F5d4fCdE66144d23b458" +colour = "#12946c" +isFluidOf = "0xdAC17F958D2ee523a2206206994597C13D831ec7" +decimals = 6 +enabled = true + +[[config.ethereum.tokens]] +symbol = "TUSD" +name = "TrueUSD" +logo = "/assets/tokens/tusd.svg" +address = "0x0000000000085d4780B73119b644AE5ecd22b376" +colour = "#1da1f2" +decimals = 18 +enabled = false + +[[config.ethereum.tokens]] +symbol = "fTUSD" +name = "Fluid TUSD" +logo = "/assets/tokens/fTUSD.svg" +address = "0x0B319dB00d07C8fAdfaAEf13C910141a5dA0aa8F" +colour = "#1da1f2" +isFluidOf = "0x0000000000085d4780B73119b644AE5ecd22b376" +decimals = 18 +enabled = true + +[[config.ethereum.tokens]] +symbol = "FRAX" +name = "Frax" +logo = "/assets/tokens/frax.svg" +address = "0x853d955aCEf822Db058eb8505911ED77F175b99e" +colour = "#e84142" +decimals = 18 +enabled = false + +[[config.ethereum.tokens]] +symbol = "fFRAX" +name = "Fluid FRAX" +logo = "/assets/tokens/fFRAX.svg" +address = "0x2bE1e42BF263AaB47D27Ba92E72c14823e101D7C" +colour = "#e84142" +isFluidOf = "0x853d955aCEf822Db058eb8505911ED77F175b99e" +decimals = 18 +enabled = true + +[[config.ethereum.tokens]] +symbol = "DAI" +name = "Dai Stablecoin" +logo = "/assets/tokens/dai.svg" +address = "0x6B175474E89094C44Da98b954EedeAC495271d0F" +colour = "#825902" +decimals = 18 +enabled = false + +[[config.ethereum.tokens]] +symbol = "fDAI" +name = "Fluid DAI" +logo = "/assets/tokens/fDAI.svg" +address = "0x244517Dc59943E8CdFbD424Bdb3262c5f04a1387" +colour = "#825902" +isFluidOf = "0x6B175474E89094C44Da98b954EedeAC495271d0F" +decimals = 18 +enabled = true + [config.solana] explorer = "https://explorer.solana.com" fluidAssets = [ @@ -147,6 +259,61 @@ isFluidOf = "0xA8CE8aee21bC2A48a5EF670afCc9274C7bbbC035" decimals = 6 enabled = true + +# liquidity_providers Configurations +# eth providers +[liquidity_providers.ethereum] + +[[liquidity_providers.ethereum.providers]] +name= "uniswap" + +[liquidity_providers.ethereum.providers.link] +fUSDC = "https://app.uniswap.org/#/add/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/0x9d1089802eE608BA84C5c98211afE5f37F96B36C/" +fUSDT = "https://app.uniswap.org/#/add/0xdAC17F958D2ee523a2206206994597C13D831ec7/0xADc234a4e90E2045f353F5d4fCdE66144d23b458/" +fTUSD = "https://app.uniswap.org/#/add/0x0000000000085d4780B73119b644AE5ecd22b376/0x0B319dB00d07C8fAdfaAEf13C910141a5dA0aa8F" +fFRAX = "https://app.uniswap.org/#/add/0x853d955aCEf822Db058eb8505911ED77F175b99e/0x2bE1e42BF263AaB47D27Ba92E72c14823e101D7C" +fDAI = "https://app.uniswap.org/#/add/0x6B175474E89094C44Da98b954EedeAC495271d0F/0x244517Dc59943E8CdFbD424Bdb3262c5f04a1387/" + +[[liquidity_providers.ethereum.providers]] +name= "sushiswap" + +[liquidity_providers.ethereum.providers.link] +fUSDC = "https://www.sushi.com/earn/eth:0xc35466daaa5e61977ec4219d682eeb7beb431726/add" +fUSDT = "https://www.sushi.com/earn/eth:0x0d33d674f6eef1991e9aab561189b26ebed7c576/add" +fTUSD = "https://www.sushi.com/earn" +fFRAX = "https://www.sushi.com/earn" +fDAI = "https://www.sushi.com/earn" + +[[liquidity_providers.ethereum.providers]] +name= "dodo" + +[liquidity_providers.ethereum.providers.link] +fUSDC = "https://app.dodoex.io/earn/add-liquidity?network=mainnet&poolAddress=0x6abd7403878f3a010170a383b4f20285668fd979" +fUSDT = "https://app.dodoex.io/earn?network=mainnet" +fTUSD = "https://app.dodoex.io/earn?network=mainnet" +fFRAX = "https://app.dodoex.io/earn?network=mainnet" +fDAI = "https://app.dodoex.io/earn?network=mainnet" + +[[liquidity_providers.ethereum.providers]] +name= "balancer" + +[liquidity_providers.ethereum.providers.link] +fUSDC = "https://app.balancer.fi/#/ethereum/pool/0xfee6da6ce300197b7d613de22cb00e86a8537f06000200000000000000000393/invest" +fUSDT = "https://app.balancer.fi/#/ethereum/pool/create" +fTUSD = "https://app.balancer.fi/#/ethereum/pool/create" +fFRAX = "https://app.balancer.fi/#/ethereum/pool/create" +fDAI = "https://app.balancer.fi/#/ethereum/pool/create" + +[[liquidity_providers.ethereum.providers]] +name= "1inch" + +[liquidity_providers.ethereum.providers.link] +fUSDC = "https://app.1inch.io/#/1/earn/pools?filter=fUSDC&token0=0x9d1089802ee608ba84c5c98211afe5f37f96b36c&token1=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" +fUSDT = "https://app.1inch.io/#/1/earn/pools" +fTUSD = "https://app.1inch.io/#/1/earn/pools" +fFRAX = "https://app.1inch.io/#/1/earn/pools" +fDAI = "https://app.1inch.io/#/1/earn/pools" + # sol providers [liquidity_providers.solana] diff --git a/web/app.fluidity.money/contexts/EthereumProvider.tsx b/web/app.fluidity.money/contexts/EthereumProvider.tsx index e3db1429f..ad35b934a 100644 --- a/web/app.fluidity.money/contexts/EthereumProvider.tsx +++ b/web/app.fluidity.money/contexts/EthereumProvider.tsx @@ -23,7 +23,6 @@ import { EIP1193 } from "@web3-react/eip1193"; import { SplitContext } from "contexts/SplitProvider"; import FluidityFacadeContext from "contexts/FluidityFacade"; import { - getUserDegenScore, getUserStakingDeposits, getTokenStakingRatio, makeStakingDeposit, @@ -42,7 +41,6 @@ import { getNetworkFromChainId, } from "~/util/chainUtils/chains"; -import DegenScoreAbi from "~/util/chainUtils/ethereum/DegenScoreBeacon.json"; import StakingAbi from "~/util/chainUtils/ethereum/Staking.json"; import LootboxOwnershipAbi from "~/util/chainUtils/ethereum/LootboxConfirmAddressOwnership.json"; import { useToolTip } from "~/components"; @@ -333,28 +331,6 @@ const EthereumFacade = ({ .map(([addr]) => addr); }; - /** - * getDegenScore returns the "DegenScore" of a user. - * - * Source: https://degenscore.com. - */ - const getDegenScore = async (address: string): Promise => { - const signer = provider?.getSigner(); - - if (!signer) { - return 0; - } - - const degenScoreAddr = "0x0521FA0bf785AE9759C7cB3CBE7512EbF20Fbdaa"; - - return getUserDegenScore( - signer.provider, - address, - degenScoreAddr, - DegenScoreAbi - ); - }; - /** * getStakingDeposits returns total tokens staked by a user. */ @@ -615,7 +591,6 @@ const EthereumFacade = ({ rawAddress: account ?? "", address: account?.toLowerCase() ?? "", manualReward, - getDegenScore, addToken, connected: isActive, connecting: isActivating, diff --git a/web/app.fluidity.money/contexts/FluidityFacade.tsx b/web/app.fluidity.money/contexts/FluidityFacade.tsx index 90f273d8f..09c188439 100644 --- a/web/app.fluidity.money/contexts/FluidityFacade.tsx +++ b/web/app.fluidity.money/contexts/FluidityFacade.tsx @@ -40,8 +40,6 @@ export interface IFluidityFacade { | undefined >; - getDegenScore?: (address: string) => Promise; - addToken?: (symbol: string) => Promise; getStakingRatios?: () => Promise; From dcfc0fab15a950f728f91723dcc155bc0a36cbf0 Mon Sep 17 00:00:00 2001 From: user Date: Thu, 23 Nov 2023 01:23:23 +1030 Subject: [PATCH 6/6] Fix some tests and remove some unused variables --- .../app/queries/useUserActionsAggregate.ts | 43 +++++----- .../app/queries/useUserTransactions.ts | 39 +++++---- .../queries/useUserUnclaimedRewards.spec.ts | 2 +- web/app.fluidity.money/app/root.tsx | 2 +- .../app/routes/$network.tsx | 16 +--- .../$network/dashboard/assets/regular.tsx | 14 ++-- .../$network/dashboard/rewards/unclaimed.tsx | 17 ++-- .../$network/query/dashboard/rewards.tsx | 4 +- web/app.fluidity.money/app/routes/wtf.tsx | 2 +- .../app/styles/dashboard.css | 30 ++++++- .../app/styles/dashboard/airdrop.css | 79 ++++++++++++++++--- .../app/styles/transfer.css | 15 +++- .../chainUtils/solana/fluidityInstruction.ts | 7 +- .../util/chainUtils/solana/instructions.ts | 22 ++++-- .../contexts/SolanaProvider.tsx | 35 ++++---- 15 files changed, 205 insertions(+), 122 deletions(-) diff --git a/web/app.fluidity.money/app/queries/useUserActionsAggregate.ts b/web/app.fluidity.money/app/queries/useUserActionsAggregate.ts index 1fb1dd023..9a2349abe 100644 --- a/web/app.fluidity.money/app/queries/useUserActionsAggregate.ts +++ b/web/app.fluidity.money/app/queries/useUserActionsAggregate.ts @@ -111,33 +111,26 @@ const queryAll: Queryable = { } `, solana: gql` - query userActionsAggregateAll( - $offset: Int = 0, - $limit: Int = 12, - ) { - solana: user_transactions_aggregate( - args: { - network_: "solana", - limit_: $limit, - offset_: $offset + query userActionsAggregateAll($offset: Int = 0, $limit: Int = 12) { + solana: user_transactions_aggregate( + args: { network_: "solana", limit_: $limit, offset_: $offset } + ) { + value: amount + receiver: recipient_address + rewardHash: reward_hash + sender: sender_address + hash: transaction_hash + utility_amount + utility_name + winner: winning_address + reward: winning_amount + application + currency + timestamp: time + swap_in + type } - ) { - value: amount - receiver: recipient_address - rewardHash: reward_hash - sender: sender_address - hash: transaction_hash - utility_amount - utility_name - winner: winning_address - reward: winning_amount - application - currency - timestamp: time - swap_in - type } - } `, }; diff --git a/web/app.fluidity.money/app/queries/useUserTransactions.ts b/web/app.fluidity.money/app/queries/useUserTransactions.ts index 2d6b51483..34d76ff5e 100644 --- a/web/app.fluidity.money/app/queries/useUserTransactions.ts +++ b/web/app.fluidity.money/app/queries/useUserTransactions.ts @@ -376,13 +376,13 @@ const useUserTransactionsByAddress = async ( errors: `Failed to fetch GraphQL URL and headers for network ${network}`, }; - const result = - parseHasuraUserTransactions( - await jsonPost< - UserTransactionsByAddressBody, - HasuraUserTransactionRes - >(url, body, headers) + const result = parseHasuraUserTransactions( + await jsonPost( + url, + body, + headers ) + ); return result; }; @@ -413,13 +413,13 @@ const useUserTransactionsByTxHash = async ( errors: `Failed to fetch GraphQL URL and headers for network ${network}`, }; - const result = - parseHasuraUserTransactions( - await jsonPost< - UserTransactionsByTxHashBody, - HasuraUserTransactionRes - >(url, body, headers) - ); + const result = parseHasuraUserTransactions( + await jsonPost( + url, + body, + headers + ) + ); return result; }; @@ -457,14 +457,13 @@ const useUserTransactionsAll = async ( errors: `Failed to fetch GraphQL URL and headers for network ${network}`, }; - const result = - parseHasuraUserTransactions( - await jsonPost( - url, - body, - headers - ) + const result = parseHasuraUserTransactions( + await jsonPost( + url, + body, + headers ) + ); return result; }; diff --git a/web/app.fluidity.money/app/queries/useUserUnclaimedRewards.spec.ts b/web/app.fluidity.money/app/queries/useUserUnclaimedRewards.spec.ts index 057cbfc23..a87c76c0d 100644 --- a/web/app.fluidity.money/app/queries/useUserUnclaimedRewards.spec.ts +++ b/web/app.fluidity.money/app/queries/useUserUnclaimedRewards.spec.ts @@ -8,7 +8,7 @@ beforeAll(() => { describe("useUserUnclaimedRewards", () => { it("should return a valid response", async () => { const { data, error } = await useUserUnclaimedRewards( - "ethereum", + "arbitrum", "0xeb6b882a295d316ac62c8cfcc81c3e37c084b7c5" ); expect(data).toBeDefined(); diff --git a/web/app.fluidity.money/app/root.tsx b/web/app.fluidity.money/app/root.tsx index 6f7d1d55d..819c7a8cd 100644 --- a/web/app.fluidity.money/app/root.tsx +++ b/web/app.fluidity.money/app/root.tsx @@ -21,7 +21,7 @@ import { SplitContextProvider } from "contexts/SplitProvider"; import CacheProvider from "contexts/CacheProvider"; import { useEffect, useState } from "react"; import { CookieConsent } from "@fluidity-money/surfing"; -import {Buffer} from "buffer"; +import { Buffer } from "buffer"; globalThis.Buffer = Buffer; diff --git a/web/app.fluidity.money/app/routes/$network.tsx b/web/app.fluidity.money/app/routes/$network.tsx index e49a9ceef..97148ed0a 100644 --- a/web/app.fluidity.money/app/routes/$network.tsx +++ b/web/app.fluidity.money/app/routes/$network.tsx @@ -2,9 +2,7 @@ import type { LoaderFunction } from "@remix-run/node"; import { Outlet, useLoaderData } from "@remix-run/react"; import serverConfig, { colors } from "~/webapp.config.server"; import { redirect } from "@remix-run/node"; -import { useEffect, useMemo, useState, useContext } from "react"; -import FluidityFacadeContext from "contexts/FluidityFacade"; -import { SplitContext } from "contexts/SplitProvider"; +import { useEffect, useMemo, useState } from "react"; import config from "../../webapp.config.js"; import EthereumProvider from "contexts/EthereumProvider"; @@ -83,16 +81,6 @@ const Provider = ({ return {children}; }; -const ProviderOutlet = () => { - const { client } = useContext(SplitContext); - - return ( - <> - - - ); -}; - type LoaderData = { network: string; explorer: string; @@ -134,7 +122,7 @@ export default function Network() { tokens={tokens} colorMap={colors} /> - + ); } diff --git a/web/app.fluidity.money/app/routes/$network/dashboard/assets/regular.tsx b/web/app.fluidity.money/app/routes/$network/dashboard/assets/regular.tsx index d9b820313..91b6d5e07 100644 --- a/web/app.fluidity.money/app/routes/$network/dashboard/assets/regular.tsx +++ b/web/app.fluidity.money/app/routes/$network/dashboard/assets/regular.tsx @@ -34,12 +34,14 @@ export const loader: LoaderFunction = async ({ params }) => { const eacAggregatorProxyAddr = config.contract.eac_aggregator_proxy[network as Chain]; - const wethPrice = chainType(network) === "evm" ? - await getWethUsdPrice( - provider, - eacAggregatorProxyAddr, - EACAggregatorProxyAbi - ) : 0; + const wethPrice = + chainType(network) === "evm" + ? await getWethUsdPrice( + provider, + eacAggregatorProxyAddr, + EACAggregatorProxyAbi + ) + : 0; const regularTokens = tokens .filter((token) => !token.isFluidOf) diff --git a/web/app.fluidity.money/app/routes/$network/dashboard/rewards/unclaimed.tsx b/web/app.fluidity.money/app/routes/$network/dashboard/rewards/unclaimed.tsx index 5e6c62605..6805f3052 100644 --- a/web/app.fluidity.money/app/routes/$network/dashboard/rewards/unclaimed.tsx +++ b/web/app.fluidity.money/app/routes/$network/dashboard/rewards/unclaimed.tsx @@ -240,15 +240,14 @@ const UnclaimedWinnings = () => { return (
{/* Info Card - Only accessible for Ethereum/Arbitrum */} - {(network === "arbitrum") && - !!userUnclaimedRewards && ( - - )} + {network === "arbitrum" && !!userUnclaimedRewards && ( + + )} {!!address && unclaimedData.state === "loading" && (
diff --git a/web/app.fluidity.money/app/routes/$network/query/dashboard/rewards.tsx b/web/app.fluidity.money/app/routes/$network/query/dashboard/rewards.tsx index 2b8f6cdb4..56ab128da 100644 --- a/web/app.fluidity.money/app/routes/$network/query/dashboard/rewards.tsx +++ b/web/app.fluidity.money/app/routes/$network/query/dashboard/rewards.tsx @@ -4,9 +4,7 @@ import type { Rewarders } from "~/util/rewardAggregates"; import type { TokenPerformance } from "~/util/tokenAggregate"; import { JsonRpcProvider } from "@ethersproject/providers"; -import { - getTotalRewardPool, -} from "~/util/chainUtils/ethereum/transaction"; +import { getTotalRewardPool } from "~/util/chainUtils/ethereum/transaction"; import { json } from "@remix-run/node"; import useApplicationRewardStatistics from "~/queries/useApplicationRewardStatistics"; import { aggregateRewards } from "~/util/rewardAggregates"; diff --git a/web/app.fluidity.money/app/routes/wtf.tsx b/web/app.fluidity.money/app/routes/wtf.tsx index 59d8ede57..9f89d43a3 100644 --- a/web/app.fluidity.money/app/routes/wtf.tsx +++ b/web/app.fluidity.money/app/routes/wtf.tsx @@ -178,7 +178,7 @@ export default function IndexPage() { const enabledChains = CHAINS.filter(({ name }) => { if (name === "POLY_ZK" && !showExperiment("enable-polygonzk")) return false; - + return true; }); diff --git a/web/app.fluidity.money/app/styles/dashboard.css b/web/app.fluidity.money/app/styles/dashboard.css index ede067258..f5c50dbf0 100644 --- a/web/app.fluidity.money/app/styles/dashboard.css +++ b/web/app.fluidity.money/app/styles/dashboard.css @@ -149,7 +149,20 @@ body { background-repeat: no-repeat; background-size: 100%; background-position: 0 0, 100% 0, 100% 100%, 0 100%; - background-image: linear-gradient(45deg, #f3b8d8, #b793e9, #9fd4f3, #ffd2c4, #fbf3f3, #d9abdf, #af9ce3, #aae4e1, #c6ead0, #ffffff, #fdb5e4); + background-image: linear-gradient( + 45deg, + #f3b8d8, + #b793e9, + #9fd4f3, + #ffd2c4, + #fbf3f3, + #d9abdf, + #af9ce3, + #aae4e1, + #c6ead0, + #ffffff, + #fdb5e4 + ); animation: rotate 4s linear infinite; } @@ -617,7 +630,20 @@ ul.sidebar-nav li div.active { } .holo { - background: conic-gradient(from 209.59deg at 50% 50%, #f3b8d8 0deg, #b793e9 50.06deg, #9fd4f3 85.94deg, #ffd2c4 134.97deg, #fbf3f3 172.05deg, #d9abdf 200.75deg, #af9ce3 224.67deg, #aae4e1 259.36deg, #c6ead0 298.82deg, #ffffff 328.72deg, #fdb5e4 360deg); + background: conic-gradient( + from 209.59deg at 50% 50%, + #f3b8d8 0deg, + #b793e9 50.06deg, + #9fd4f3 85.94deg, + #ffd2c4 134.97deg, + #fbf3f3 172.05deg, + #d9abdf 200.75deg, + #af9ce3 224.67deg, + #aae4e1 259.36deg, + #c6ead0 298.82deg, + #ffffff 328.72deg, + #fdb5e4 360deg + ); height: 40px; width: 40px; border-radius: 50%; diff --git a/web/app.fluidity.money/app/styles/dashboard/airdrop.css b/web/app.fluidity.money/app/styles/dashboard/airdrop.css index fc49a1553..a75578573 100644 --- a/web/app.fluidity.money/app/styles/dashboard/airdrop.css +++ b/web/app.fluidity.money/app/styles/dashboard/airdrop.css @@ -273,7 +273,19 @@ } .transaction-table > thead > tr.highlighted-row, .transaction-table > tbody > tr.airdrop-row.highlighted-row { - background: linear-gradient(90deg, #f3b8d8 0%, #b793e9 15.1%, #9fd4f3 26.04%, #ffd2c4 36.46%, #fbf3f3 46.88%, #d9abdf 57.29%, #af9ce3 72.4%, #aae4e1 85.42%, #c6ead0 93.23%, #fdb5e4 100%); + background: linear-gradient( + 90deg, + #f3b8d8 0%, + #b793e9 15.1%, + #9fd4f3 26.04%, + #ffd2c4 36.46%, + #fbf3f3 46.88%, + #d9abdf 57.29%, + #af9ce3 72.4%, + #aae4e1 85.42%, + #c6ead0 93.23%, + #fdb5e4 100% + ); } .transaction-table > thead > tr.highlighted-row td, .transaction-table > tbody > tr.airdrop-row.highlighted-row td { @@ -302,14 +314,30 @@ } .airdrop-leaderboard-mobile .transaction-table > thead > tr td:first-child, .airdrop-leaderboard-mobile .transaction-table > thead > tr th:first-child, -.airdrop-leaderboard-mobile .transaction-table > tbody > tr.airdrop-row td:first-child, -.airdrop-leaderboard-mobile .transaction-table > tbody > tr.airdrop-row th:first-child { +.airdrop-leaderboard-mobile + .transaction-table + > tbody + > tr.airdrop-row + td:first-child, +.airdrop-leaderboard-mobile + .transaction-table + > tbody + > tr.airdrop-row + th:first-child { padding-left: 1em; } .airdrop-leaderboard-mobile .transaction-table > thead > tr td:last-child, .airdrop-leaderboard-mobile .transaction-table > thead > tr th:last-child, -.airdrop-leaderboard-mobile .transaction-table > tbody > tr.airdrop-row td:last-child, -.airdrop-leaderboard-mobile .transaction-table > tbody > tr.airdrop-row th:last-child { +.airdrop-leaderboard-mobile + .transaction-table + > tbody + > tr.airdrop-row + td:last-child, +.airdrop-leaderboard-mobile + .transaction-table + > tbody + > tr.airdrop-row + th:last-child { padding-right: 1em; } .airdrop-leaderboard-mobile .transaction-table > thead > tr td, @@ -686,7 +714,10 @@ align-items: flex-start; gap: 0.5em; } -.staking-stats-container .staking-stats-stakes-container .stake .stake-multiplier { +.staking-stats-container + .staking-stats-stakes-container + .stake + .stake-multiplier { width: 100%; display: flex; flex-wrap: wrap; @@ -759,18 +790,31 @@ width: 150px; height: 150px; } -.recap-container .recap-hero .recap-hero-text .recap-circle-scroll .recap-circle-scroll-arrow { +.recap-container + .recap-hero + .recap-hero-text + .recap-circle-scroll + .recap-circle-scroll-arrow { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); } -.recap-container .recap-hero .recap-hero-text .recap-circle-scroll .recap-circle-scroll-arrow svg { +.recap-container + .recap-hero + .recap-hero-text + .recap-circle-scroll + .recap-circle-scroll-arrow + svg { fill: none; stroke: white; transform: scale(3); } -.recap-container .recap-hero .recap-hero-text .recap-circle-scroll .recap-circle-scroll-text { +.recap-container + .recap-hero + .recap-hero-text + .recap-circle-scroll + .recap-circle-scroll-text { font-size: 10px; fill: grey; letter-spacing: 0.4em; @@ -862,19 +906,28 @@ /* Track */ /* Handle */ } -.recap-container .recap-stats .recap-bottle-distribution-container::-webkit-scrollbar { +.recap-container + .recap-stats + .recap-bottle-distribution-container::-webkit-scrollbar { height: 10px; } -.recap-container .recap-stats .recap-bottle-distribution-container::-webkit-scrollbar-track { +.recap-container + .recap-stats + .recap-bottle-distribution-container::-webkit-scrollbar-track { background: transparent; border: 1px solid white; border-radius: 5px; } -.recap-container .recap-stats .recap-bottle-distribution-container::-webkit-scrollbar-thumb { +.recap-container + .recap-stats + .recap-bottle-distribution-container::-webkit-scrollbar-thumb { background: white; border-radius: 5px; } -.recap-container .recap-stats .recap-bottle-distribution-container .bottle-container { +.recap-container + .recap-stats + .recap-bottle-distribution-container + .bottle-container { gap: 1em; display: flex; flex-direction: column; diff --git a/web/app.fluidity.money/app/styles/transfer.css b/web/app.fluidity.money/app/styles/transfer.css index 337cd2928..0d4055653 100644 --- a/web/app.fluidity.money/app/styles/transfer.css +++ b/web/app.fluidity.money/app/styles/transfer.css @@ -276,7 +276,20 @@ body { right: 0; bottom: 0; z-index: 1; - background: conic-gradient(from 209.59deg at 50% 50%, #f3b8d8 0deg, #b793e9 50.06deg, #9fd4f3 85.94deg, #ffd2c4 134.97deg, #fbf3f3 172.05deg, #d9abdf 200.75deg, #af9ce3 224.67deg, #aae4e1 259.36deg, #c6ead0 298.82deg, #ffffff 328.72deg, #fdb5e4 360deg); + background: conic-gradient( + from 209.59deg at 50% 50%, + #f3b8d8 0deg, + #b793e9 50.06deg, + #9fd4f3 85.94deg, + #ffd2c4 134.97deg, + #fbf3f3 172.05deg, + #d9abdf 200.75deg, + #af9ce3 224.67deg, + #aae4e1 259.36deg, + #c6ead0 298.82deg, + #ffffff 328.72deg, + #fdb5e4 360deg + ); filter: blur(10px); scale: 1.1; } diff --git a/web/app.fluidity.money/app/util/chainUtils/solana/fluidityInstruction.ts b/web/app.fluidity.money/app/util/chainUtils/solana/fluidityInstruction.ts index 56cd03b68..17a26271e 100644 --- a/web/app.fluidity.money/app/util/chainUtils/solana/fluidityInstruction.ts +++ b/web/app.fluidity.money/app/util/chainUtils/solana/fluidityInstruction.ts @@ -53,10 +53,9 @@ export class FluidityInstruction extends SolanaEnum { const seedString = `FLU:${TokenSymbol}_OBLIGATION`; const seedBuffer = Buffer.from(seedString, "utf8"); - const bump = - PublicKey.findProgramAddressSync( - [seedBuffer], - new PublicKey("HEvunKKgzf4SMZimVMET6HuzAyfGJS4ZMShUz94KLUdR") + const bump = PublicKey.findProgramAddressSync( + [seedBuffer], + new PublicKey("HEvunKKgzf4SMZimVMET6HuzAyfGJS4ZMShUz94KLUdR") )[1]; return bump; diff --git a/web/app.fluidity.money/app/util/chainUtils/solana/instructions.ts b/web/app.fluidity.money/app/util/chainUtils/solana/instructions.ts index 625d24bf6..e9127b4e1 100644 --- a/web/app.fluidity.money/app/util/chainUtils/solana/instructions.ts +++ b/web/app.fluidity.money/app/util/chainUtils/solana/instructions.ts @@ -8,12 +8,16 @@ import { Connection, } from "@solana/web3.js"; import { getATAAddressSync } from "@saberhq/token-utils"; -import { useWallet, useConnection, WalletContextState } from "@solana/wallet-adapter-react"; +import { + useWallet, + useConnection, + WalletContextState, +} from "@solana/wallet-adapter-react"; import BN from "bn.js"; import { FluidityInstruction } from "./fluidityInstruction"; import { getFluidInstructionKeys, getOrCreateATA } from "./solanaAddresses"; import { TransactionResponse } from "../instructions"; -import {jsonPost} from "~/util/api/rpc"; +import { jsonPost } from "~/util/api/rpc"; export const getCheckedSolContext = () => { const wallet = useWallet(); @@ -36,7 +40,11 @@ export const getCheckedSolContext = () => { }; }; -const getBalance = async (connection: Connection, publicKey: PublicKey, token: Token): Promise => { +const getBalance = async ( + connection: Connection, + publicKey: PublicKey, + token: Token +): Promise => { try { //balance of SOL represented as a TokenAmount if (token.name === "Solana") { @@ -55,8 +63,7 @@ const getBalance = async (connection: Connection, publicKey: PublicKey, token: T } catch (e) { // if account wasn't found, the user has no ATA and therefore none of the given token const trimmedError = (e as Error).message.split(":")?.[2].trim(); - if (trimmedError === "could not find account") - return new BN(0); + if (trimmedError === "could not find account") return new BN(0); throw new Error( `Could not fetch balance: Could not fetch token ${token.address}: ${e}` @@ -95,7 +102,10 @@ export type UserAmountMintedRes = { amount_minted: number; }; -const amountMinted = async (publicKey: PublicKey, tokenName: string): Promise => { +const amountMinted = async ( + publicKey: PublicKey, + tokenName: string +): Promise => { const url = "https://api.solana.fluidity.money/user-amount-minted"; const body = { address: publicKey.toString(), diff --git a/web/app.fluidity.money/contexts/SolanaProvider.tsx b/web/app.fluidity.money/contexts/SolanaProvider.tsx index 9e3ca2c4e..9e445a465 100644 --- a/web/app.fluidity.money/contexts/SolanaProvider.tsx +++ b/web/app.fluidity.money/contexts/SolanaProvider.tsx @@ -33,13 +33,11 @@ const SolanaFacade = ({ tokens: Token[]; }) => { const wallet = useWallet(); - const { connected, publicKey, disconnect, connecting, signMessage } = - wallet; - const {connection} = useConnection(); + const { connected, publicKey, disconnect, connecting, signMessage } = wallet; + const { connection } = useConnection(); const swap = async (amount: string, tokenAddr: string) => { - if (!publicKey) - return; + if (!publicKey) return; const fromToken = tokens.find((t) => t.address === tokenAddr); @@ -60,7 +58,15 @@ const SolanaFacade = ({ `Could not initiate Swap: Could not find dest pair token from ${tokenAddr} in solana` ); - return internalSwap(wallet, connection, connected, publicKey, amount, fromToken, toToken); + return internalSwap( + wallet, + connection, + connected, + publicKey, + amount, + fromToken, + toToken + ); }; const balance = async (tokenAddr: string): Promise => { @@ -71,8 +77,7 @@ const SolanaFacade = ({ `Could not fetch balance: Could not find matching token ${tokenAddr} in solana` ); - if (!publicKey) - return new BN(0); + if (!publicKey) return new BN(0); return getBalance(connection, publicKey, token); }; @@ -84,8 +89,7 @@ const SolanaFacade = ({ }; const getFluidTokens = async (): Promise => { - if (!publicKey) - return []; + if (!publicKey) return []; const fluidTokens = tokens.filter((t) => t.isFluidOf); @@ -95,12 +99,11 @@ const SolanaFacade = ({ return fluidTokensPosBalance.map((t) => t.address); }; - - const amountMinted = async(tokenName: string): Promise => { - if (!publicKey) - return; - return amountMintedInternal(publicKey, tokenName) - } + + const amountMinted = async (tokenName: string): Promise => { + if (!publicKey) return; + return amountMintedInternal(publicKey, tokenName); + }; return (