Skip to content

Commit 8b12269

Browse files
authored
Merge pull request #1666 from mars-protocol/develop
v3.0.0
2 parents 9b6c061 + e7fd01c commit 8b12269

File tree

210 files changed

+2456
-1236
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

210 files changed

+2456
-1236
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Mars Protocol v2 Outpost Frontend
22

3-
![https://app.marsprotocol.io](https://raw.githubusercontent.com/mars-protocol/mars-v2-frontend/main/public/banner.png)
3+
![https://app.marsprotocol.io](https://raw.githubusercontent.com/mars-protocol/mars-v2-frontend/main/public/banner.jpg)
44

55
## 1. Web App
66

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mars-v2-frontend",
3-
"version": "2.11.6",
3+
"version": "3.0.0",
44
"homepage": "./",
55
"private": false,
66
"license": "SEE LICENSE IN LICENSE FILE",
@@ -51,6 +51,7 @@
5151
"react-dom": "^19.2.0",
5252
"react-draggable": "^4.5.0",
5353
"react-helmet-async": "^2.0.5",
54+
"@react-native-async-storage/async-storage": "^2.0.0",
5455
"react-qr-code": "^2.0.18",
5556
"react-router-dom": "^7.9.2",
5657
"react-spring": "^10.0.3",
@@ -66,6 +67,10 @@
6667
},
6768
"devDependencies": {
6869
"@babel/eslint-parser": "^7.28.4",
70+
"buffer": "^6.0.3",
71+
"crypto-browserify": "^3.12.0",
72+
"react-native-web": "^0.19.13",
73+
"stream-browserify": "^3.0.0",
6974
"@eslint/compat": "^1.4.0",
7075
"@svgr/webpack": "^8.1.0",
7176
"@tailwindcss/container-queries": "^0.1.1",

public/banner.jpg

24.7 KB
Loading

public/banner.png

-194 KB
Binary file not shown.

public/reset.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<meta content="@mars_protocol" name="twitter:site" />
77
<meta content="@mars_protocol" name="twitter:creator" />
88
<meta content="https://app.marsprotocol.io" property="og:url" />
9-
<meta content="https://app.marsprotocol.io/banner.png" property="og:image" />
9+
<meta content="https://app.marsprotocol.io/banner.jpg" property="og:image" />
1010
<meta content="Mars Protocol" property="og:site_name" />
1111
<meta content="#ffffff" name="msapplication-TileColor" />
1212
<meta content="#ffffff" name="theme-color" />
@@ -167,7 +167,7 @@ <h1 class="w-full text-4xl text-center">Reset Your Outpost Settings</h1>
167167
</p>
168168
<button
169169
onclick="onButtonClick()"
170-
class="min-w-[150px] reset-button relative z-1 flex items-center appearance-none break-normal outline-none transition-all hover:cursor-pointer transition-color text-sm px-4 py-1.5 min-h-8 border border-white/30 bg-transparent hover:bg-white/20 active:bg-white/40 focus:bg-white/20 rounded-sm text-white shadow-button justify-center group"
170+
class="min-w-[150px] reset-button relative z-1 flex items-center appearance-none break-normal outline-none transition-all hover:cursor-pointer transition-color text-sm px-4 py-1.5 min-h-8 border border-white/30 bg-transparent hover:bg-white/10 active:bg-white/40 focus:bg-white/10 rounded-sm text-white shadow-button justify-center group"
171171
tabindex="0"
172172
>
173173
<span>Reset Outpost Settings</span>

public/tradingview.css

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,34 @@
11
.theme-dark:root {
2-
--tv-background: #220e1d;
3-
--tv-form-background: #7f78e8;
4-
--tv-button-background: linear-gradient(180deg, #7f78e8 0%, #926ac8 100%);
5-
--tv-button-background-hover: linear-gradient(180deg, #926ac8 0%, #7f78e8 100%);
6-
--tv-menu-background: #222;
7-
--tv-menu-text: rgba(255, 255, 255, 0.3);
8-
--tv-menu-text-hover: rgba(255, 255, 255, 1);
9-
--tv-color-pane-background: var(--tv-background);
2+
/* Color palette variables */
3+
--color-surface: 225deg 9% 9%;
4+
--color-surface-light: 231deg 11% 12%;
5+
--color-surface-dark: 220deg 9% 7%;
6+
7+
--tv-background: hsl(var(--color-surface));
8+
--tv-form-background: hsl(var(--color-surface-light));
9+
--tv-button-background: hsl(var(--color-surface-light));
10+
--tv-button-background-hover: hsl(var(--color-surface));
11+
--tv-menu-background: hsl(var(--color-surface));
12+
--tv-menu-text: rgba(255, 255, 255, 0.6);
13+
--tv-menu-text-hover: rgba(255, 255, 255, 0.9);
14+
--tv-color-pane-background: hsl(var(--color-surface-dark));
15+
--tv-color-scale-text: var(--tv-menu-text);
16+
--tv-color-grid-line: rgba(255, 255, 255, 0.05);
17+
--tv-color-axis-line: rgba(255, 255, 255, 0.3);
1018
--tv-color-platform-background: var(--tv-background);
1119
--tv-color-toolbar-button-text: var(--tv-menu-text);
1220
--tv-color-toolbar-button-text-hover: var(--tv-menu-text-hover);
1321
--tv-color-toolbar-button-text-active: var(--tv-menu-text-hover);
1422
--tv-color-toolbar-button-text-active-hover: var(--tv-menu-text-hover);
1523
--tv-color-toolbar-button-background-hover: var(--tv-background);
1624
--tv-color-toolbar-button-background-expanded: var(--tv-background);
17-
--tv-color-toolbar-button-background-active: var(--tv-background);
18-
--tv-color-toolbar-button-background-active-hover: var(--tv-background);
25+
--tv-color-toolbar-button-background-active: hsl(var(--color-surface-dark));
26+
--tv-color-toolbar-button-background-active-hover: hsl(var(--color-surface-dark));
1927
--tv-horizontal-scroll-fade-color: var(--tv-background);
2028
--tv-vertical-scroll-fade-color: var(--tv-background);
2129
--tv-color-popup-background: var(--tv-background);
22-
--tv-color-toolbar-toggle-button-background-active: rgba(255, 255, 255, 0.2);
23-
--tv-color-toolbar-toggle-button-background-active-hover: rgba(255, 255, 255, 0.2);
30+
--tv-color-toolbar-toggle-button-background-active: hsl(var(--color-surface-dark));
31+
--tv-color-toolbar-toggle-button-background-active-hover: hsl(var(--color-surface-dark));
2432
--tv-color-toolbar-divider-background: var(--tv-menu-text);
2533
--ui-lib-button-default-color-content: #fff;
2634
--ui-lib-button-default-color-border: var(--tv-form-background);
@@ -29,6 +37,7 @@
2937
--themed-color-content-primary-inverse: #fff;
3038
--tv-color-popup-element-toolbox-text-active-hover: #fff;
3139
--themed-color-content-secondary-inverse: #fff;
40+
--color-pane-bg: hsl(var(--color-surface));
3241
}
3342

3443
/* Favorited menus */

public/tradingview_default.css

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,34 @@
11
.theme-dark:root {
2-
--tv-background: #220e1d;
3-
--tv-form-background: #7f78e8;
4-
--tv-button-background: linear-gradient(180deg, #7f78e8 0%, #926ac8 100%);
5-
--tv-button-background-hover: linear-gradient(180deg, #926ac8 0%, #7f78e8 100%);
6-
--tv-menu-background: #31142a;
7-
--tv-menu-text: rgba(255, 255, 255, 0.3);
8-
--tv-menu-text-hover: rgba(255, 255, 255, 1);
9-
--tv-color-pane-background: var(--tv-background);
2+
/* Color palette variables */
3+
--color-surface: 225deg 9% 9%;
4+
--color-surface-light: 231deg 11% 12%;
5+
--color-surface-dark: 220deg 9% 7%;
6+
7+
--tv-background: hsl(var(--color-surface));
8+
--tv-form-background: hsl(var(--color-surface-light));
9+
--tv-button-background: hsl(var(--color-surface-light));
10+
--tv-button-background-hover: hsl(var(--color-surface));
11+
--tv-menu-background: hsl(var(--color-surface));
12+
--tv-menu-text: rgba(255, 255, 255, 0.6);
13+
--tv-menu-text-hover: rgba(255, 255, 255, 0.9);
14+
--tv-color-pane-background: hsl(var(--color-surface-dark));
15+
--tv-color-scale-text: var(--tv-menu-text);
16+
--tv-color-grid-line: rgba(255, 255, 255, 0.05);
17+
--tv-color-axis-line: rgba(255, 255, 255, 0.3);
1018
--tv-color-platform-background: var(--tv-background);
1119
--tv-color-toolbar-button-text: var(--tv-menu-text);
1220
--tv-color-toolbar-button-text-hover: var(--tv-menu-text-hover);
1321
--tv-color-toolbar-button-text-active: var(--tv-menu-text-hover);
1422
--tv-color-toolbar-button-text-active-hover: var(--tv-menu-text-hover);
1523
--tv-color-toolbar-button-background-hover: var(--tv-background);
1624
--tv-color-toolbar-button-background-expanded: var(--tv-background);
17-
--tv-color-toolbar-button-background-active: var(--tv-background);
18-
--tv-color-toolbar-button-background-active-hover: var(--tv-background);
25+
--tv-color-toolbar-button-background-active: hsl(var(--color-surface-dark));
26+
--tv-color-toolbar-button-background-active-hover: hsl(var(--color-surface-dark));
1927
--tv-horizontal-scroll-fade-color: var(--tv-background);
2028
--tv-vertical-scroll-fade-color: var(--tv-background);
2129
--tv-color-popup-background: var(--tv-background);
22-
--tv-color-toolbar-toggle-button-background-active: rgba(255, 255, 255, 0.2);
23-
--tv-color-toolbar-toggle-button-background-active-hover: rgba(255, 255, 255, 0.2);
30+
--tv-color-toolbar-toggle-button-background-active: hsl(var(--color-surface-dark));
31+
--tv-color-toolbar-toggle-button-background-active-hover: hsl(var(--color-surface-dark));
2432
--tv-color-toolbar-divider-background: var(--tv-menu-text);
2533
--ui-lib-button-default-color-content: #fff;
2634
--ui-lib-button-default-color-border: var(--tv-form-background);
@@ -29,6 +37,8 @@
2937
--themed-color-content-primary-inverse: #fff;
3038
--tv-color-popup-element-toolbox-text-active-hover: #fff;
3139
--themed-color-content-secondary-inverse: #fff;
40+
41+
--color-pane-bg: hsl(var(--color-surface));
3242
}
3343

3444
/* Favorited menus */
@@ -208,7 +218,7 @@ button:hover {
208218

209219
[class^='button-'] {
210220
background-color: transparent !important;
211-
border-radius: 4px !important;
221+
border-radius: 0 !important;
212222
}
213223

214224
[class^='button-']:hover {
@@ -220,23 +230,27 @@ button[class^='button-'][class*='primary-'] {
220230
border: none !important;
221231
color: var(--tv-menu-text-hover) !important;
222232
background: var(--tv-button-background) !important;
233+
border-radius: 0 !important;
223234
}
224235

225236
button[class^='button-'][class*='primary-']:hover {
226237
color: var(--tv-menu-text-hover) !important;
227238
background: var(--tv-button-background-hover) !important;
239+
border-radius: 0 !important;
228240
}
229241

230242
button[class^='button-'][class*='secondary-'] {
231243
border: 1px solid var(--tv-menu-text) !important;
232244
color: var(--tv-menu-text-hover) !important;
233245
background: none !important;
246+
border-radius: 0 !important;
234247
}
235248

236249
button[class^='button-'][class*='secondary-']:hover {
237250
border: 1px solid var(--tv-menu-text-hover) !important;
238251
color: var(--tv-menu-text-hover) !important;
239252
background: none !important;
253+
border-radius: 0 !important;
240254
}
241255

242256
/* Checkbox */
@@ -315,12 +329,12 @@ button[class^='button-'][class*='secondary-']:hover {
315329
[class^='tabContent-']::-webkit-scrollbar-thumb {
316330
background-color: var(--tv-menu-text) !important;
317331
border: transparent !important;
318-
border-radius: 2px;
332+
border-radius: 0;
319333
}
320334

321335
[class^='scrollWrap-']::-webkit-scrollbar-track,
322336
[class^='tabContent-']::-webkit-scrollbar-track {
323-
border-radius: 2px;
337+
border-radius: 0;
324338
}
325339

326340
[class^='fadeTop-'] {

public/vaults_banner.jpg

-76.1 KB
Loading
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { getUrl } from 'utils/url'
2+
3+
interface LiquidationsFilter {
4+
liquidatee_account_id?: string
5+
}
6+
7+
export default async function getLiquidations(
8+
chainConfig: ChainConfig,
9+
page = 1,
10+
pageSize = 25,
11+
searchQuery?: string | string[],
12+
) {
13+
try {
14+
let filterParam = ''
15+
if (searchQuery) {
16+
let filter: LiquidationsFilter | undefined
17+
// multiple account IDs
18+
if (Array.isArray(searchQuery)) {
19+
filter = { liquidatee_account_id: `[${searchQuery.join(', ')}]` }
20+
} else if (typeof searchQuery === 'string' && searchQuery.trim()) {
21+
// single account ID
22+
filter = { liquidatee_account_id: searchQuery.trim() }
23+
}
24+
if (filter) {
25+
filterParam = `&filters=${encodeURIComponent(JSON.stringify(filter))}`
26+
}
27+
}
28+
29+
const baseUrl = `${chainConfig.endpoints.liquidations}&product=creditmanager&page=${page}&limit=${pageSize}&orders={"block_height":"desc"}${filterParam}`
30+
31+
const url = getUrl(baseUrl, '')
32+
const response = await fetch(url)
33+
const data = await response.json()
34+
35+
return { data: data.data, total: data.total } as LiquidationsResponse
36+
} catch (error) {
37+
console.error('Could not fetch liquidations data.', error)
38+
return { data: [], total: 0 }
39+
}
40+
}

src/api/swap/getAstroportRouteInfo.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,18 @@ export default async function getRouteInfo(
99
amount: BigNumber,
1010
assets: Asset[],
1111
chainConfig: ChainConfig,
12+
adjustedSwapFee?: number,
1213
): Promise<SwapRouteInfo | null> {
1314
const astroportUrl = `${chainConfig.endpoints.routes}?start=${denomIn}&end=${denomOut}&amount=${amount.toString()}&chainId=${chainConfig.id}&limit=1`
15+
const swapFee = adjustedSwapFee ?? chainConfig.swapFee
1416

1517
try {
1618
const resp = await fetchWithTimeout(astroportUrl, FETCH_TIMEOUT)
1719
const route = (await resp.json())[0] as AstroportRouteResponse
1820

1921
let amountOut = BN(route.amount_out)
2022
if (!amountOut.gt(0))
21-
amountOut = amountOut.times(1 - chainConfig.swapFee).integerValue(BigNumber.ROUND_FLOOR)
23+
amountOut = amountOut.times(1 - swapFee).integerValue(BigNumber.ROUND_FLOOR)
2224

2325
return {
2426
amountOut,

0 commit comments

Comments
 (0)