diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..0d7135c4 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,32 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +permissions: + contents: read + +jobs: + ci: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v6 + + - name: vite-plus setup + uses: voidzero-dev/setup-vp@v1 + with: + node-version-file: ".node-version" + cache: true + + - name: Run build + run: | + cp ./apps/web/.env.production.build ./apps/web/.env.production.local + vp run build + + - name: Check formatting, linting and type checks. + run: vp check diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 182b98f3..d1a9d226 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -2,11 +2,11 @@ name: Docker on: push: - branches: [ "main" ] + branches: ["main"] # Publish semver tags as releases. - tags: [ 'stackspulse@*.*.*' ] + tags: ["stackspulse@*.*.*"] pull_request: - branches: [ "main" ] + branches: ["main"] workflow_dispatch: concurrency: @@ -63,7 +63,7 @@ jobs: labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max - + build-server: runs-on: ubuntu-latest diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f2b6b588..3e09ff68 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,28 +15,33 @@ jobs: permissions: contents: write pull-requests: write - + steps: - - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v3 + - name: Checkout code + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Install pnpm + uses: pnpm/action-setup@v6 - - name: Setup Node.js 22 - uses: actions/setup-node@v4 + - name: Setup Node.js + uses: actions/setup-node@v6 with: - node-version: 22 + node-version-file: ".node-version" cache: "pnpm" - name: Install dependencies - run: pnpm install + run: pnpm install --frozen-lockfile - - name: Create Release Pull Request + - name: Create Release Pull Request or Publish id: changesets - uses: changesets/action@v1 + uses: changesets/action@v2 with: - version: pnpm run version - publish: pnpm run release - commit: 'chore: release' - title: 'chore: create new release' + version-script: pnpm run version + publish-script: pnpm run release + commit-message: "chore: release" + pr-title: "chore: create new release" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100644 index cb2c84d5..00000000 --- a/.husky/pre-commit +++ /dev/null @@ -1 +0,0 @@ -pnpm lint-staged diff --git a/.node-version b/.node-version new file mode 100644 index 00000000..3648bfc3 --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +v24.19.0 diff --git a/ansible/security/tasks/main.yml b/ansible/security/tasks/main.yml index a4fc13d5..7eeb0e86 100644 --- a/ansible/security/tasks/main.yml +++ b/ansible/security/tasks/main.yml @@ -39,10 +39,7 @@ state: present mode: "0644" loop: - - { - key: "Unattended-Upgrade::Automatic-Reboot", - value: "{{ security_autoupdate_reboot }}", - } + - { key: "Unattended-Upgrade::Automatic-Reboot", value: "{{ security_autoupdate_reboot }}" } - { key: "Unattended-Upgrade::Automatic-Reboot-Time", value: "{{ security_autoupdate_reboot_time }}", diff --git a/apps/server/src/api/protocols/users/index.ts b/apps/server/src/api/protocols/users/index.ts index b4e06437..fdc82404 100644 --- a/apps/server/src/api/protocols/users/index.ts +++ b/apps/server/src/api/protocols/users/index.ts @@ -55,10 +55,7 @@ interface QueryParams { daysToSubtract?: number; } -const getProtocolUsersDirect = async ({ - limit, - daysToSubtract, -}: QueryParams) => { +const getProtocolUsersDirect = async ({ limit, daysToSubtract }: QueryParams) => { let dateCondition = ""; if (daysToSubtract) { dateCondition = `AND txs.block_time >= EXTRACT(EPOCH FROM (NOW() - INTERVAL '${daysToSubtract} days'))`; @@ -85,10 +82,7 @@ const getProtocolUsersDirect = async ({ return result; }; -const getProtocolUsersNested = async ({ - limit, - daysToSubtract, -}: QueryParams) => { +const getProtocolUsersNested = async ({ limit, daysToSubtract }: QueryParams) => { let dateCondition = ""; if (daysToSubtract) { dateCondition = `AND txs.block_time >= EXTRACT(EPOCH FROM (NOW() - INTERVAL '${daysToSubtract} days'))`; @@ -152,9 +146,7 @@ LIMIT ${limit}; const queryEndTime = Date.now(); consola.debug( - `ProtocolUsersRoute: Query executed in ${formatElapsedTime( - queryEndTime - queryStartTime, - )}ms`, + `ProtocolUsersRoute: Query executed in ${formatElapsedTime(queryEndTime - queryStartTime)}ms`, ); return result; diff --git a/apps/server/src/api/root/tweet-weekly-users/index.ts b/apps/server/src/api/root/tweet-weekly-users/index.ts index e9e4eedd..6e1eca53 100644 --- a/apps/server/src/api/root/tweet-weekly-users/index.ts +++ b/apps/server/src/api/root/tweet-weekly-users/index.ts @@ -41,9 +41,7 @@ export default defineEventHandler(async () => { params.append("title", "Last 7 Days Unique Users"); params.append("data", JSON.stringify(dataNested)); - const imageUrlNested = `${ - env.WEB_URL - }/api/images/weekly-users?${params.toString()}`; + const imageUrlNested = `${env.WEB_URL}/api/images/weekly-users?${params.toString()}`; let messageNested = "📈 Last 7 days unique users:\n\n"; for (const stat of statsNested) { @@ -63,9 +61,7 @@ export default defineEventHandler(async () => { params.set("title", "Last 7 Days Direct Unique Users"); params.set("data", JSON.stringify(dataDirect)); - const imageUrlDirect = `${ - env.WEB_URL - }/api/images/weekly-users?${params.toString()}`; + const imageUrlDirect = `${env.WEB_URL}/api/images/weekly-users?${params.toString()}`; let messageDirect = "📈 Last 7 days unique users that interacted directly with the protocols:\n\n"; diff --git a/apps/server/src/api/tokens/transaction-volume.get.ts b/apps/server/src/api/tokens/transaction-volume.get.ts index edb252bd..584f5e16 100644 --- a/apps/server/src/api/tokens/transaction-volume.get.ts +++ b/apps/server/src/api/tokens/transaction-volume.get.ts @@ -13,10 +13,7 @@ type TokensTransactionVolumeRouteResponse = { }[]; export default defineCachedEventHandler(async (event) => { - const query = await getValidatedQueryZod( - event, - tokensTransactionVolumeRouteSchema, - ); + const query = await getValidatedQueryZod(event, tokensTransactionVolumeRouteSchema); const result = await sql` SELECT diff --git a/apps/server/src/api/transactions/index.get.ts b/apps/server/src/api/transactions/index.get.ts index ed76bd25..da9f66c0 100644 --- a/apps/server/src/api/transactions/index.get.ts +++ b/apps/server/src/api/transactions/index.get.ts @@ -51,9 +51,7 @@ LIMIT 50 const queryEndTime = Date.now(); consola.debug( - `TransactionsRoute: Query executed in ${formatElapsedTime( - queryEndTime - queryStartTime, - )}ms`, + `TransactionsRoute: Query executed in ${formatElapsedTime(queryEndTime - queryStartTime)}ms`, ); const formattedResult = result.map((r) => ({ @@ -73,9 +71,7 @@ LIMIT 50 const transactionsWithDetails: TransactionsRouteResponse = formattedResult .map((r) => - data[r.tx_id].found === true - ? { protocol: r.protocol, ...data[r.tx_id].result } - : null, + data[r.tx_id].found === true ? { protocol: r.protocol, ...data[r.tx_id].result } : null, ) .filter((tx) => tx !== null); diff --git a/apps/server/src/api/transactions/unique-senders/index.ts b/apps/server/src/api/transactions/unique-senders/index.ts index a66f58a9..730e1f37 100644 --- a/apps/server/src/api/transactions/unique-senders/index.ts +++ b/apps/server/src/api/transactions/unique-senders/index.ts @@ -16,10 +16,7 @@ type TransactionUniqueSendersRouteResponse = { }[]; export default defineCachedEventHandler(async (event) => { - const query = await getValidatedQueryZod( - event, - transactionUniqueSendersRouteSchema, - ); + const query = await getValidatedQueryZod(event, transactionUniqueSendersRouteSchema); const queryStartTime = Date.now(); const result = await sql` diff --git a/apps/server/src/db/utils.ts b/apps/server/src/db/utils.ts index 1c28ef3a..d9d05d74 100644 --- a/apps/server/src/db/utils.ts +++ b/apps/server/src/db/utils.ts @@ -9,15 +9,12 @@ export function conflictUpdateSetAllColumns( table: TTable, ): PgUpdateSetSource { const columns = getTableColumns(table); - const conflictUpdateSet = Object.entries(columns).reduce( - (acc, [columnName, columnInfo]) => { - if (!columnInfo.default) { - // @ts-ignore - acc[columnName] = sql.raw(`excluded.${columnInfo.name}`); - } - return acc; - }, - {}, - ) as PgUpdateSetSource; + const conflictUpdateSet = Object.entries(columns).reduce((acc, [columnName, columnInfo]) => { + if (!columnInfo.default) { + // @ts-ignore + acc[columnName] = sql.raw(`excluded.${columnInfo.name}`); + } + return acc; + }, {}) as PgUpdateSetSource; return conflictUpdateSet; } diff --git a/apps/server/src/lib/consola.ts b/apps/server/src/lib/consola.ts index 278c17cd..0d674a9f 100644 --- a/apps/server/src/lib/consola.ts +++ b/apps/server/src/lib/consola.ts @@ -2,9 +2,5 @@ import { createConsola } from "consola"; import { env } from "~/env"; export const consola = createConsola({ - level: env.CONSOLA_LEVEL - ? env.CONSOLA_LEVEL - : env.NODE_ENV === "development" - ? 4 - : 3, + level: env.CONSOLA_LEVEL ? env.CONSOLA_LEVEL : env.NODE_ENV === "development" ? 4 : 3, }); diff --git a/apps/web/src/app/Providers.tsx b/apps/web/src/app/Providers.tsx index ff1f1c1a..5ad5e951 100644 --- a/apps/web/src/app/Providers.tsx +++ b/apps/web/src/app/Providers.tsx @@ -11,10 +11,6 @@ const queryClient = new QueryClient({ }, }); -export const Providers = ({ - children, -}: Readonly<{ children: React.ReactNode }>) => { - return ( - {children} - ); +export const Providers = ({ children }: Readonly<{ children: React.ReactNode }>) => { + return {children}; }; diff --git a/apps/web/src/app/about/page.tsx b/apps/web/src/app/about/page.tsx index 46e372b2..06da0987 100644 --- a/apps/web/src/app/about/page.tsx +++ b/apps/web/src/app/about/page.tsx @@ -17,9 +17,8 @@ export default async function AboutPage() {
- This project aims to provide a real-time view of Stacks DeFi ecosystem - by aggregating public blockchain data and making it accessible through - an easy to use interface. + This project aims to provide a real-time view of Stacks DeFi ecosystem by aggregating + public blockchain data and making it accessible through an easy to use interface. Give us a star on{" "} @@ -42,8 +41,8 @@ export default async function AboutPage() { Data - Data is extracted from a self-hosted Stacks blockchain node and - aggregated using PostgreSQL. + Data is extracted from a self-hosted Stacks blockchain node and aggregated using + PostgreSQL. Token prices and volume is provided by{" "} diff --git a/apps/web/src/app/api/images/weekly-users/route.tsx b/apps/web/src/app/api/images/weekly-users/route.tsx index b04b98d2..d35b3dec 100644 --- a/apps/web/src/app/api/images/weekly-users/route.tsx +++ b/apps/web/src/app/api/images/weekly-users/route.tsx @@ -32,10 +32,7 @@ export async function GET(req: NextRequest) { }); if (!params.success) { - return Response.json( - { success: false, message: "Invalid parameters" }, - { status: 400 }, - ); + return Response.json({ success: false, message: "Invalid parameters" }, { status: 400 }); } const title = params.data.title; @@ -83,10 +80,7 @@ export async function GET(req: NextRequest) {
{data.map((item) => ( -
+
{item.value.toLocaleString("en-US")}
))} diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index eea794c5..eef945ec 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -32,10 +32,7 @@ export default function RootLayout({ }>) { return ( - +
diff --git a/apps/web/src/app/tokens/[token]/opengraph-image.tsx b/apps/web/src/app/tokens/[token]/opengraph-image.tsx index a672e06f..39fc7a44 100644 --- a/apps/web/src/app/tokens/[token]/opengraph-image.tsx +++ b/apps/web/src/app/tokens/[token]/opengraph-image.tsx @@ -18,16 +18,13 @@ interface PageProps { } export default async function Image({ params }: PageProps) { - const metadata = await tokenMetadataClient.GET( - "/metadata/v1/ft/{principal}", - { - params: { - path: { - principal: params.token, - }, + const metadata = await tokenMetadataClient.GET("/metadata/v1/ft/{principal}", { + params: { + path: { + principal: params.token, }, }, - ); + }); const tokenInfo = metadata?.data; if (!tokenInfo) { notFound(); diff --git a/apps/web/src/app/tokens/[token]/page.tsx b/apps/web/src/app/tokens/[token]/page.tsx index 7b05b4dc..53f9db26 100644 --- a/apps/web/src/app/tokens/[token]/page.tsx +++ b/apps/web/src/app/tokens/[token]/page.tsx @@ -16,16 +16,13 @@ interface PageProps { export async function generateMetadata(props: PageProps): Promise { const params = await props.params; - const metadata = await tokenMetadataClient.GET( - "/metadata/v1/ft/{principal}", - { - params: { - path: { - principal: params.token, - }, + const metadata = await tokenMetadataClient.GET("/metadata/v1/ft/{principal}", { + params: { + path: { + principal: params.token, }, }, - ); + }); const tokenInfo = metadata?.data; if (!tokenInfo) { notFound(); @@ -42,16 +39,13 @@ export async function generateMetadata(props: PageProps): Promise { export default async function ProtocolPage(props: PageProps) { const params = await props.params; - const metadata = await tokenMetadataClient.GET( - "/metadata/v1/ft/{principal}", - { - params: { - path: { - principal: params.token, - }, + const metadata = await tokenMetadataClient.GET("/metadata/v1/ft/{principal}", { + params: { + path: { + principal: params.token, }, }, - ); + }); const tokenInfo = metadata?.data; if (!tokenInfo) { notFound(); diff --git a/apps/web/src/app/tokens/page.tsx b/apps/web/src/app/tokens/page.tsx index 69daa6c0..fc19ed89 100644 --- a/apps/web/src/app/tokens/page.tsx +++ b/apps/web/src/app/tokens/page.tsx @@ -30,9 +30,7 @@ export default async function ProtocolPage() { Token Price 24h - - Market Cap - + Market Cap @@ -51,9 +49,7 @@ export default async function ProtocolPage() { {market.name} ) : ( - - {market.name} - + {market.name} )} @@ -68,26 +64,20 @@ export default async function ProtocolPage() { = 0 + market.price_change_percentage_24h && market.price_change_percentage_24h >= 0 ? "green" : "red" } > {market.price_change_percentage_24h - ? `${market.price_change_percentage_24h.toLocaleString( - "en-US", - { - maximumFractionDigits: 2, - }, - )}%` + ? `${market.price_change_percentage_24h.toLocaleString("en-US", { + maximumFractionDigits: 2, + })}%` : ""} - {market.market_cap - ? `$${market.market_cap.toLocaleString("en-US")}` - : ""} + {market.market_cap ? `$${market.market_cap.toLocaleString("en-US")}` : ""} ))} diff --git a/apps/web/src/components/Home/HomeStats.tsx b/apps/web/src/components/Home/HomeStats.tsx index 326e14e1..00bc53eb 100644 --- a/apps/web/src/components/Home/HomeStats.tsx +++ b/apps/web/src/components/Home/HomeStats.tsx @@ -11,12 +11,7 @@ export const HomeStats = async () => { return (
- + Total Transactions @@ -27,12 +22,7 @@ export const HomeStats = async () => { - + Unique addresses diff --git a/apps/web/src/components/Layout/Header.tsx b/apps/web/src/components/Layout/Header.tsx index de4c8794..98bc1656 100644 --- a/apps/web/src/components/Layout/Header.tsx +++ b/apps/web/src/components/Layout/Header.tsx @@ -1,18 +1,8 @@ "use client"; import { appConfig } from "@/appConfig"; -import { - Container, - DropdownMenu, - IconButton, - Link, - Separator, -} from "@radix-ui/themes"; +import { Container, DropdownMenu, IconButton, Link, Separator } from "@radix-ui/themes"; import { type Protocol, protocolsInfo } from "@stackspulse/protocols"; -import { - IconBrandGithub, - IconBrandX, - IconChevronDown, -} from "@tabler/icons-react"; +import { IconBrandGithub, IconBrandX, IconChevronDown } from "@tabler/icons-react"; import Image from "next/image"; import NextLink from "next/link"; import { IconLogo } from "../icons/IconLogo"; diff --git a/apps/web/src/components/Protocol/ProtocolTransactions.tsx b/apps/web/src/components/Protocol/ProtocolTransactions.tsx index f196207b..0829dbd3 100644 --- a/apps/web/src/components/Protocol/ProtocolTransactions.tsx +++ b/apps/web/src/components/Protocol/ProtocolTransactions.tsx @@ -10,9 +10,7 @@ interface ProtocolTransactionsProps { protocol: Protocol; } -export const ProtocolTransactions = ({ - protocol, -}: ProtocolTransactionsProps) => { +export const ProtocolTransactions = ({ protocol }: ProtocolTransactionsProps) => { const { data: transactions } = useGetTransactions({ protocol, }); diff --git a/apps/web/src/components/Stats/TopProtocolsBarList/index.tsx b/apps/web/src/components/Stats/TopProtocolsBarList/index.tsx index 420589be..7426e615 100644 --- a/apps/web/src/components/Stats/TopProtocolsBarList/index.tsx +++ b/apps/web/src/components/Stats/TopProtocolsBarList/index.tsx @@ -7,10 +7,8 @@ import { Suspense, useState } from "react"; import { TopProtocolsBarListQuery } from "./TopProtocolsBarListQuery"; export const TopProtocolsBarList = () => { - const [dateFilter, setDateFilter] = - useState("all"); - const [modeFilter, setModeFilter] = - useState("nested"); + const [dateFilter, setDateFilter] = useState("all"); + const [modeFilter, setModeFilter] = useState("nested"); return ( @@ -101,10 +99,7 @@ export const TopProtocolsBarList = () => { /> } > - + ); diff --git a/apps/web/src/components/Stats/UniqueUsersBarChart/UniqueUsersBarChartClient.tsx b/apps/web/src/components/Stats/UniqueUsersBarChart/UniqueUsersBarChartClient.tsx index 3009174a..0fd5164f 100644 --- a/apps/web/src/components/Stats/UniqueUsersBarChart/UniqueUsersBarChartClient.tsx +++ b/apps/web/src/components/Stats/UniqueUsersBarChart/UniqueUsersBarChartClient.tsx @@ -12,10 +12,7 @@ interface UniqueUsersBarChartProps { }[]; } -export const UniqueUsersBarChartClient = ({ - protocol, - data, -}: UniqueUsersBarChartProps) => { +export const UniqueUsersBarChartClient = ({ protocol, data }: UniqueUsersBarChartProps) => { const formattedData: { date: string; }[] = data.map((d) => ({ diff --git a/apps/web/src/components/Stats/UniqueUsersBarChart/index.tsx b/apps/web/src/components/Stats/UniqueUsersBarChart/index.tsx index c0b48fd0..d9f36f45 100644 --- a/apps/web/src/components/Stats/UniqueUsersBarChart/index.tsx +++ b/apps/web/src/components/Stats/UniqueUsersBarChart/index.tsx @@ -2,11 +2,7 @@ import { env } from "@/env"; import type { Protocol } from "@stackspulse/protocols"; import { UniqueUsersBarChartClient } from "./UniqueUsersBarChartClient"; -export const UniqueUsersBarChart = async ({ - protocol, -}: { - protocol: Protocol; -}) => { +export const UniqueUsersBarChart = async ({ protocol }: { protocol: Protocol }) => { const stats = await fetch( `${env.NEXT_PUBLIC_API_URL}/api/transactions/unique-senders?protocol=${protocol}`, ).then((res) => res.json()); diff --git a/apps/web/src/components/Stats/stackingdao/DepositsWithdrawBarChart/DepositWithdrawBarChartClient.tsx b/apps/web/src/components/Stats/stackingdao/DepositsWithdrawBarChart/DepositWithdrawBarChartClient.tsx index a0abd03e..ffae010f 100644 --- a/apps/web/src/components/Stats/stackingdao/DepositsWithdrawBarChart/DepositWithdrawBarChartClient.tsx +++ b/apps/web/src/components/Stats/stackingdao/DepositsWithdrawBarChart/DepositWithdrawBarChartClient.tsx @@ -11,9 +11,7 @@ interface DepositWithdrawBarChartClientProps { }[]; } -export const DepositWithdrawBarChartClient = ({ - data, -}: DepositWithdrawBarChartClientProps) => { +export const DepositWithdrawBarChartClient = ({ data }: DepositWithdrawBarChartClientProps) => { return ( diff --git a/apps/web/src/components/Token/TokenHoldersTable.tsx b/apps/web/src/components/Token/TokenHoldersTable.tsx index bc146110..6991fb66 100644 --- a/apps/web/src/components/Token/TokenHoldersTable.tsx +++ b/apps/web/src/components/Token/TokenHoldersTable.tsx @@ -33,9 +33,7 @@ export const TokenHoldersTable = ({ tokenInfo }: TokenHoldersTableProps) => { Rank Address - - Balance - + Balance % of Supply @@ -65,8 +63,7 @@ export const TokenHoldersTable = ({ tokenInfo }: TokenHoldersTableProps) => { {( - Number(holder.balance) / - Number(10 ** (tokenInfo.decimals ?? 0)) + Number(holder.balance) / Number(10 ** (tokenInfo.decimals ?? 0)) ).toLocaleString("en-US")} diff --git a/apps/web/src/components/Token/TokenStats.tsx b/apps/web/src/components/Token/TokenStats.tsx index bd01a26e..013950f3 100644 --- a/apps/web/src/components/Token/TokenStats.tsx +++ b/apps/web/src/components/Token/TokenStats.tsx @@ -20,13 +20,7 @@ export const TokenStats = ({ tokenInfo }: TokenStatsProps) => { Supply - + {Number( Number(data.total_supply) / Number(10 ** (tokenInfo.decimals ?? 0)), ).toLocaleString("en-US")} diff --git a/apps/web/src/components/Token/TokenTransactionsVolume.tsx b/apps/web/src/components/Token/TokenTransactionsVolume.tsx index 9e5408d9..c0ca3d93 100644 --- a/apps/web/src/components/Token/TokenTransactionsVolume.tsx +++ b/apps/web/src/components/Token/TokenTransactionsVolume.tsx @@ -19,8 +19,7 @@ export const TokenTransactionsVolume = ({ tokenInfo }: TokenStatsProps) => { const formattedData = useMemo(() => { return data.map((d) => ({ date: d.date, - daily_volume: - Number(d.daily_volume) / Number(10 ** (tokenInfo.decimals ?? 0)), + daily_volume: Number(d.daily_volume) / Number(10 ** (tokenInfo.decimals ?? 0)), })); }, [data, tokenInfo.decimals]); diff --git a/apps/web/src/components/Transaction/Action/Alex.tsx b/apps/web/src/components/Transaction/Action/Alex.tsx index 04f6cc2d..c28980cc 100644 --- a/apps/web/src/components/Transaction/Action/Alex.tsx +++ b/apps/web/src/components/Transaction/Action/Alex.tsx @@ -8,9 +8,7 @@ interface TransactionActionAlexProps { transaction: TransactionsRouteResponse[number]; } -export const TransactionActionAlex = ({ - transaction, -}: TransactionActionAlexProps) => { +export const TransactionActionAlex = ({ transaction }: TransactionActionAlexProps) => { if ( transaction.contract_call.function_name === "swap-helper" && transaction.tx_status === "success" diff --git a/apps/web/src/components/Transaction/Action/DefaultTransactionAction.tsx b/apps/web/src/components/Transaction/Action/DefaultTransactionAction.tsx index d49bbef6..70fb01a6 100644 --- a/apps/web/src/components/Transaction/Action/DefaultTransactionAction.tsx +++ b/apps/web/src/components/Transaction/Action/DefaultTransactionAction.tsx @@ -5,9 +5,7 @@ interface DefaultTransactionActionProps { transaction: TransactionsRouteResponse[number]; } -export const DefaultTransactionAction = ({ - transaction, -}: DefaultTransactionActionProps) => { +export const DefaultTransactionAction = ({ transaction }: DefaultTransactionActionProps) => { return ( <> Call {transaction.contract_call.function_name} diff --git a/apps/web/src/components/Transaction/Action/DefaultTransactionSwap.tsx b/apps/web/src/components/Transaction/Action/DefaultTransactionSwap.tsx index 99833f31..80808cf9 100644 --- a/apps/web/src/components/Transaction/Action/DefaultTransactionSwap.tsx +++ b/apps/web/src/components/Transaction/Action/DefaultTransactionSwap.tsx @@ -27,9 +27,8 @@ export const DefaultTransactionSwap = ({ } return ( <> - Swap{" "} - {displayPrice(tokenXAmount, tokenXInfo.decimals || 6)} {tokenXInfo.symbol}{" "} - for{" "} + Swap {displayPrice(tokenXAmount, tokenXInfo.decimals || 6)}{" "} + {tokenXInfo.symbol} for{" "} {displayPrice(tokenYAmount, tokenYInfo.decimals || 6)} {tokenYInfo.symbol} ); diff --git a/apps/web/src/components/Transaction/Action/StackingDAO.tsx b/apps/web/src/components/Transaction/Action/StackingDAO.tsx index 215ad09c..6476549c 100644 --- a/apps/web/src/components/Transaction/Action/StackingDAO.tsx +++ b/apps/web/src/components/Transaction/Action/StackingDAO.tsx @@ -15,8 +15,7 @@ export const TransactionActionStackingDAO = ({ transaction.tx_status === "success" ) { const stxAmount = - transaction.events.find((event) => event.event_type === "stx_asset") - ?.asset.amount || "0"; + transaction.events.find((event) => event.event_type === "stx_asset")?.asset.amount || "0"; return ( <> Deposit {displayPrice(stxAmount, 6)} STX @@ -29,8 +28,7 @@ export const TransactionActionStackingDAO = ({ transaction.tx_status === "success" ) { const stxAmount = - transaction.events.find((event) => event.event_type === "stx_asset") - ?.asset.amount || "0"; + transaction.events.find((event) => event.event_type === "stx_asset")?.asset.amount || "0"; return ( <> Withdraw {displayPrice(stxAmount, 6)} STX diff --git a/apps/web/src/components/Transaction/Action/Velar.tsx b/apps/web/src/components/Transaction/Action/Velar.tsx index 299d5191..79874acb 100644 --- a/apps/web/src/components/Transaction/Action/Velar.tsx +++ b/apps/web/src/components/Transaction/Action/Velar.tsx @@ -8,19 +8,15 @@ interface TransactionActionVelarProps { transaction: TransactionsRouteResponse[number]; } -export const TransactionActionVelar = ({ - transaction, -}: TransactionActionVelarProps) => { +export const TransactionActionVelar = ({ transaction }: TransactionActionVelarProps) => { if ( - transaction.contract_call.function_name === - "swap-exact-tokens-for-tokens" && + transaction.contract_call.function_name === "swap-exact-tokens-for-tokens" && transaction.tx_status === "success" ) { const eventLog = transaction.events.find( (event) => event.event_type === "smart_contract_log" && - event.contract_log.contract_id === - "SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-core", + event.contract_log.contract_id === "SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-core", ) as TransactionEventSmartContractLog; if (eventLog) { const data = cvToJSON(hexToCV(eventLog.contract_log.value.hex)).value; diff --git a/apps/web/src/components/Transaction/TransactionRow.tsx b/apps/web/src/components/Transaction/TransactionRow.tsx index 4027f788..cd838172 100644 --- a/apps/web/src/components/Transaction/TransactionRow.tsx +++ b/apps/web/src/components/Transaction/TransactionRow.tsx @@ -18,14 +18,7 @@ export const TransactionRow = ({ transaction }: TransactionRowProps) => { return (
- + { - + ) => ( - + { +const LegendItem = ({ name, color, onClick, activeLegend }: LegendItemProps) => { const hasOnValueChange = !!onClick; return (
  • @@ -179,8 +173,7 @@ const Legend = React.forwardRef((props, ref) => { if (!scrollable) return; const hasLeftScroll = scrollable.scrollLeft > 0; - const hasRightScroll = - scrollable.scrollWidth - scrollable.clientWidth > scrollable.scrollLeft; + const hasRightScroll = scrollable.scrollWidth - scrollable.clientWidth > scrollable.scrollLeft; setHasScroll({ left: hasLeftScroll, right: hasRightScroll }); }, [setHasScroll]); @@ -254,11 +247,7 @@ const Legend = React.forwardRef((props, ref) => { }, [checkScroll, enableLegendSlider]); return ( -
      +
        (null); useOnWindowResize(() => { - const calculateHeight = (height: number | undefined) => - height ? Number(height) + 15 : 60; + const calculateHeight = (height: number | undefined) => (height ? Number(height) + 15 : 60); setLegendHeight(calculateHeight(legendRef.current?.clientHeight)); }); const legendPayload = payload.filter((item: any) => item.type !== "none"); - const paddingLeft = - legendPosition === "left" && yAxisWidth ? yAxisWidth - 8 : 0; + const paddingLeft = legendPosition === "left" && yAxisWidth ? yAxisWidth - 8 : 0; return (
        entry.value)} - colors={legendPayload.map((entry: any) => - categoryColors.get(entry.value), - )} + colors={legendPayload.map((entry: any) => categoryColors.get(entry.value))} onClickLegendItem={onClick} activeLegend={activeLegend} enableLegendSlider={enableLegendSlider} @@ -383,12 +368,7 @@ interface ChartTooltipProps { valueFormatter: (value: number) => string; } -const ChartTooltip = ({ - active, - payload, - label, - valueFormatter, -}: ChartTooltipProps) => { +const ChartTooltip = ({ active, payload, label, valueFormatter }: ChartTooltipProps) => { if (active && payload && payload.length) { return (
        {payload.map(({ value, category, color }, index) => ( -
        +