From dcfc0fab15a950f728f91723dcc155bc0a36cbf0 Mon Sep 17 00:00:00 2001 From: user Date: Thu, 23 Nov 2023 01:23:23 +1030 Subject: [PATCH] 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 (