From e65eb2ac64da4bdbc139ed28af21cc4c927cb04b Mon Sep 17 00:00:00 2001 From: Linkie Link Date: Mon, 27 Feb 2023 21:56:14 +0100 Subject: [PATCH] v1.3.1 ### Updates ### New Features - Feat: Dockerfile enhanced to accept environmental arguments on build - Feat: added version number to the footer ### Fixes and Refactoring - Fix: APR endpoint for Apollo vaults - Fix: mobile farm table data --- .github/workflows/docker-image.yml | 32 +++++++++---------- package.json | 2 +- .../common/Footer/Footer.module.scss | 11 +++++-- src/components/common/Footer/Footer.tsx | 4 +++ .../ActiveVaultsTableMobile.tsx | 9 ++++-- src/store/slices/vaults.ts | 20 +++++++++--- src/types/interfaces/fields.d.ts | 10 +++++- 7 files changed, 60 insertions(+), 28 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 8ea1f7a..f39eff6 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -2,24 +2,24 @@ name: Docker Image CI on: push: - branches: + branches: - 'main' - + jobs: docker: runs-on: ubuntu-latest steps: - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build and push - uses: docker/build-push-action@v4 - with: - push: true - tags: marsprotocol/interface:latest + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v4 + with: + push: true + tags: marsprotocol/interface:latest, marsprotocol/interface:${{ github.run_number }} diff --git a/package.json b/package.json index 2029ad1..324f1c9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mars", "homepage": "./", - "version": "1.3.0", + "version": "1.3.1", "private": false, "license": "SEE LICENSE IN LICENSE FILE", "scripts": { diff --git a/src/components/common/Footer/Footer.module.scss b/src/components/common/Footer/Footer.module.scss index b39609e..3edf889 100644 --- a/src/components/common/Footer/Footer.module.scss +++ b/src/components/common/Footer/Footer.module.scss @@ -1,7 +1,7 @@ @import 'src/styles/master'; .footer { - @include padding(8, 0, 24); + @include padding(8, 0, 20); background-color: $backgroundFooter; display: grid; place-content: center; @@ -88,11 +88,18 @@ } } } + + .version { + @include padding(0, 0, 4); + p { + text-align: right; + } + } } @media only screen and (min-width: $bpMediumLow) { .footer { - @include padding(8, 0); + @include padding(8, 0, 0); left: space(-4); width: calc(100% + (8 * #{$spacingBase}px)); diff --git a/src/components/common/Footer/Footer.tsx b/src/components/common/Footer/Footer.tsx index 88f6b34..8d3ad20 100644 --- a/src/components/common/Footer/Footer.tsx +++ b/src/components/common/Footer/Footer.tsx @@ -6,6 +6,7 @@ import { useTranslation } from 'react-i18next' import useStore from 'store' import { DocURL } from 'types/enums/docURL' +import { version } from '../../../../package.json' import styles from './Footer.module.scss' export const Footer = () => { @@ -209,6 +210,9 @@ export const Footer = () => { +
+

Mars Protocol v{version}

+
) diff --git a/src/components/fields/ActiveVaultsTable/ActiveVaultsTableMobile.tsx b/src/components/fields/ActiveVaultsTable/ActiveVaultsTableMobile.tsx index 1b7acad..743589b 100644 --- a/src/components/fields/ActiveVaultsTable/ActiveVaultsTableMobile.tsx +++ b/src/components/fields/ActiveVaultsTable/ActiveVaultsTableMobile.tsx @@ -10,6 +10,7 @@ import { import { Loading } from 'components/common' import { VaultLogo, VaultName } from 'components/fields' import { FIELDS_TUTORIAL_KEY } from 'constants/appConstants' +import { getLiqBorrowValue, getMaxBorrowValue } from 'functions/fields' import Link from 'next/link' import { Trans, useTranslation } from 'react-i18next' import useStore from 'store' @@ -56,6 +57,8 @@ export const ActiveVaultsTableMobile = () => { >
{activeVaults.map((vault, i) => { + const maxBorrowValue = getMaxBorrowValue(vault, vault.position) + const content = (
@@ -133,9 +136,9 @@ export const ActiveVaultsTableMobile = () => {
, get: GetState): VaultsS const response = await fetch(networkConfig!.apolloAprUrl) if (response.ok) { - const data: AprResponse[] = await response.json() + const data: FlatApr[] | NestedApr[] = await response.json() const newAprs = data.map((aprData) => { - const aprTotal = aprData.apr.reduce((prev, curr) => Number(curr.value) + prev, 0) - const feeTotal = aprData.fees.reduce((prev, curr) => Number(curr.value) + prev, 0) + try { + const apr = aprData as FlatApr + const aprTotal = apr.apr.reduce((prev, curr) => Number(curr.value) + prev, 0) + const feeTotal = apr.fees.reduce((prev, curr) => Number(curr.value) + prev, 0) - const finalApr = aprTotal + feeTotal + const finalApr = aprTotal + feeTotal - return { contractAddress: aprData.contract_address, apr: finalApr } + return { contractAddress: aprData.contract_address, apr: finalApr } + } catch { + const apr = aprData as NestedApr + const aprTotal = apr.apr.aprs.reduce((prev, curr) => Number(curr.value) + prev, 0) + const feeTotal = apr.apr.fees.reduce((prev, curr) => Number(curr.value) + prev, 0) + + const finalApr = aprTotal + feeTotal + return { contractAddress: aprData.contract_address, apr: finalApr } + } }) set({ diff --git a/src/types/interfaces/fields.d.ts b/src/types/interfaces/fields.d.ts index 07c9370..f8781e2 100644 --- a/src/types/interfaces/fields.d.ts +++ b/src/types/interfaces/fields.d.ts @@ -100,12 +100,20 @@ interface AprData { apr: number } -interface AprResponse { +interface FlatApr { contract_address: string apr: { type: string; value: number | string }[] fees: { type: string; value: number | string }[] } +interface NestedApr { + contract_address: string + apr: { + aprs: { type: string; value: number | string }[] + fees: { type: string; value: number | string }[] + } +} + interface VaultCapData { address: string vaultCap: {