+
Points are updated
every 24 hours
@@ -75,7 +75,15 @@ export const LeaderboardView = () => {
{user.rank}
- {user.address}
+ {`${user.address.slice(
+ 0,
+ 6
+ )}...${user.address.slice(-4)}`}
+ {`${user.address.slice(
+ 0,
+ 14
+ )}...${user.address.slice(-14)}`}
+ {user.address}
|
{user.points}
@@ -89,9 +97,9 @@ export const LeaderboardView = () => {
-
+ {/*
This page is not supported on this screen size.
-
+ */}
>
);
};
diff --git a/apps/frontend/src/components/PointIcons/index.tsx b/apps/frontend/src/components/PointIcons/index.tsx
index 06ab8b79..ea988b89 100644
--- a/apps/frontend/src/components/PointIcons/index.tsx
+++ b/apps/frontend/src/components/PointIcons/index.tsx
@@ -18,9 +18,10 @@ export type Point = {
type PointIconsProps = {
points: Point[];
+ mobile?: boolean;
};
-export const PointIcons = ({ points }: PointIconsProps) => {
+export const PointIcons = ({ points, mobile = false }: PointIconsProps) => {
return (
{points.map((point: Point) => {
@@ -57,6 +58,8 @@ export const PointIcons = ({ points }: PointIconsProps) => {
e.preventDefault()}
+ className={mobile ? 'w-64' : 'w-128'}
+ align="center"
>
{point.name}
diff --git a/apps/frontend/src/components/Providers/FuelProviderWrapper.tsx b/apps/frontend/src/components/Providers/FuelProviderWrapper.tsx
new file mode 100644
index 00000000..3a9df643
--- /dev/null
+++ b/apps/frontend/src/components/Providers/FuelProviderWrapper.tsx
@@ -0,0 +1,134 @@
+'use client';
+
+import 'react-toastify/dist/ReactToastify.css';
+
+import { appConfig } from '@/configs';
+import { isMobile } from '@/utils/isMobile';
+import {
+ BakoSafeConnector,
+ BurnerWalletConnector,
+ FuelWalletConnector,
+ FuelWalletDevelopmentConnector,
+ FueletWalletConnector,
+ SolanaConnector,
+ WalletConnectConnector,
+ createConfig,
+} from '@fuels/connectors';
+import { FuelProvider } from '@fuels/react';
+import { CHAIN_IDS, type FuelConnector, Provider } from 'fuels';
+import { type ReactNode } from 'react';
+import { fallback } from 'viem';
+import { http, createConfig as createConfigWagmiConfig } from 'wagmi';
+import { mainnet, sepolia } from 'wagmi/chains';
+import { coinbaseWallet, injected, walletConnect } from 'wagmi/connectors';
+
+const METADATA = {
+ name: 'Swaylend',
+ description: 'Swaylend',
+ url: 'https://app.swaylend.com',
+ icons: ['https://app.swaylend.com/logo512.png'],
+};
+
+const UI_CONFIG = {
+ suggestBridge: false,
+};
+const NETWORKS = [
+ appConfig.env === 'testnet'
+ ? {
+ bridgeURL: `${appConfig.client.fuelExplorerUrl}/bridge`,
+ url: appConfig.client.fuelNodeUrl,
+ chainId: CHAIN_IDS.fuel.testnet,
+ }
+ : {
+ bridgeURL: `${appConfig.client.fuelExplorerUrl}/bridge`,
+ url: appConfig.client.fuelNodeUrl,
+ chainId: CHAIN_IDS.fuel.mainnet,
+ },
+];
+
+const wagmiConfig = createConfigWagmiConfig({
+ chains: [mainnet, sepolia],
+ connectors: [
+ injected({ shimDisconnect: false }),
+ walletConnect({
+ projectId: appConfig.client.walletConnectProjectId,
+ metadata: METADATA,
+ showQrModal: false,
+ }),
+ coinbaseWallet({
+ appName: METADATA.name,
+ appLogoUrl: METADATA.icons[0],
+ darkMode: true,
+ reloadOnDisconnect: true,
+ }),
+ ],
+ transports: {
+ [mainnet.id]: fallback([
+ http(
+ `https://eth-mainnet.g.alchemy.com/v2/${appConfig.client.alchemyId}`
+ ),
+ ]),
+ [sepolia.id]: fallback([
+ http(
+ `https://eth-sepolia.g.alchemy.com/v2/${appConfig.client.alchemyId}`
+ ),
+ ]),
+ },
+});
+
+const customDefaultConnectors = (): Array => {
+ const provider = Provider.create(appConfig.client.fuelNodeUrl);
+ const connectors: Array = [
+ new FueletWalletConnector(),
+ new WalletConnectConnector({
+ projectId: appConfig.client.walletConnectProjectId,
+ wagmiConfig: wagmiConfig,
+ chainId:
+ appConfig.env === 'testnet'
+ ? CHAIN_IDS.fuel.testnet
+ : CHAIN_IDS.fuel.mainnet,
+ fuelProvider: provider,
+ }),
+ new SolanaConnector({
+ projectId: appConfig.client.walletConnectProjectId,
+ chainId:
+ appConfig.env === 'testnet'
+ ? CHAIN_IDS.fuel.testnet
+ : CHAIN_IDS.fuel.mainnet,
+ fuelProvider: provider,
+ }),
+ // Add desktop only connectors
+ ...(!isMobile(navigator.userAgent)
+ ? [new FuelWalletConnector(), new BakoSafeConnector()]
+ : []),
+ ];
+
+ if (appConfig.env === 'testnet') {
+ connectors.push(
+ new FuelWalletDevelopmentConnector(),
+ new BurnerWalletConnector({
+ chainId: CHAIN_IDS.fuel.testnet,
+ fuelProvider: provider,
+ })
+ );
+ }
+
+ return connectors;
+};
+
+const FUEL_CONFIG = createConfig(() => ({
+ connectors: customDefaultConnectors(),
+}));
+
+export const FuelProviderWrapper = ({ children }: { children: ReactNode }) => {
+ return (
+
+ {children}
+
+ );
+};
diff --git a/apps/frontend/src/components/Providers/index.tsx b/apps/frontend/src/components/Providers/index.tsx
index c2d7e3ee..c3f12e15 100644
--- a/apps/frontend/src/components/Providers/index.tsx
+++ b/apps/frontend/src/components/Providers/index.tsx
@@ -2,17 +2,6 @@
import 'react-toastify/dist/ReactToastify.css';
-import {
- BakoSafeConnector,
- BurnerWalletConnector,
- FuelWalletConnector,
- FuelWalletDevelopmentConnector,
- FueletWalletConnector,
- SolanaConnector,
- WalletConnectConnector,
- createConfig,
-} from '@fuels/connectors';
-import { FuelProvider } from '@fuels/react';
import {
QueryClient,
QueryClientProvider,
@@ -21,17 +10,11 @@ import {
import { ThemeProvider } from 'next-themes';
import { type ReactNode, useEffect } from 'react';
import { ToastContainer } from 'react-toastify';
+import { FuelProviderWrapper } from './FuelProviderWrapper';
import MarketContractStoreWatcher from '@/components/Providers/MarketContractStoreWatcher';
-import { appConfig } from '@/configs';
-import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
-import { CHAIN_IDS, type FuelConnector, Provider } from 'fuels';
import posthog from 'posthog-js';
import { PostHogProvider } from 'posthog-js/react';
-import { fallback } from 'viem';
-import { http, createConfig as createConfigWagmiConfig } from 'wagmi';
-import { mainnet, sepolia } from 'wagmi/chains';
-import { coinbaseWallet, injected, walletConnect } from 'wagmi/connectors';
import PostHogIdentify from './PostHogIdentify';
function makeQueryClient() {
@@ -63,102 +46,6 @@ function getQueryClient() {
return browserQueryClient;
}
-const METADATA = {
- name: 'Swaylend',
- description: 'Swaylend',
- url: 'https://app.swaylend.com',
- icons: ['https://app.swaylend.com/logo512.png'],
-};
-
-const UI_CONFIG = {
- suggestBridge: false,
-};
-const NETWORKS = [
- appConfig.env === 'testnet'
- ? {
- bridgeURL: `${appConfig.client.fuelExplorerUrl}/bridge`,
- url: appConfig.client.fuelNodeUrl,
- chainId: CHAIN_IDS.fuel.testnet,
- }
- : {
- bridgeURL: `${appConfig.client.fuelExplorerUrl}/bridge`,
- url: appConfig.client.fuelNodeUrl,
- chainId: CHAIN_IDS.fuel.mainnet,
- },
-];
-
-const wagmiConfig = createConfigWagmiConfig({
- chains: [mainnet, sepolia],
- connectors: [
- injected({ shimDisconnect: false }),
- walletConnect({
- projectId: appConfig.client.walletConnectProjectId,
- metadata: METADATA,
- showQrModal: false,
- }),
- coinbaseWallet({
- appName: METADATA.name,
- appLogoUrl: METADATA.icons[0],
- darkMode: true,
- reloadOnDisconnect: true,
- }),
- ],
- transports: {
- [mainnet.id]: fallback([
- http(
- `https://eth-mainnet.g.alchemy.com/v2/${appConfig.client.alchemyId}`
- ),
- ]),
- [sepolia.id]: fallback([
- http(
- `https://eth-sepolia.g.alchemy.com/v2/${appConfig.client.alchemyId}`
- ),
- ]),
- },
-});
-
-const customDefaultConnectors = (): Array => {
- const provider = Provider.create(appConfig.client.fuelNodeUrl);
- const connectors: Array = [
- new FueletWalletConnector(),
- new FuelWalletConnector(),
- new BakoSafeConnector(),
- new WalletConnectConnector({
- projectId: appConfig.client.walletConnectProjectId,
- wagmiConfig: wagmiConfig,
- chainId:
- appConfig.env === 'testnet'
- ? CHAIN_IDS.fuel.testnet
- : CHAIN_IDS.fuel.mainnet,
- fuelProvider: provider,
- }),
- new SolanaConnector({
- projectId: appConfig.client.walletConnectProjectId,
- chainId:
- appConfig.env === 'testnet'
- ? CHAIN_IDS.fuel.testnet
- : CHAIN_IDS.fuel.mainnet,
- fuelProvider: provider,
- }),
- ];
-
- if (appConfig.env === 'testnet') {
- connectors.push(
- new FuelWalletDevelopmentConnector(),
- new BurnerWalletConnector({
- chainId: CHAIN_IDS.fuel.testnet,
- fuelProvider: provider,
- })
- );
- }
-
- return connectors;
-};
-
-const FUEL_CONFIG = createConfig(() => ({
- connectors: customDefaultConnectors(),
-}));
-
export const Providers = ({ children }: { children: ReactNode }) => {
const queryClient = getQueryClient();
@@ -187,12 +74,7 @@ export const Providers = ({ children }: { children: ReactNode }) => {
>
-
+
<>
{children}
@@ -213,7 +95,7 @@ export const Providers = ({ children }: { children: ReactNode }) => {
theme="dark"
/>
>
-
+
{/* */}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 97ec2fe0..c1868254 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4339,6 +4339,7 @@ packages:
'@web3modal/wagmi@5.0.0':
resolution: {integrity: sha512-AegPzmmArOpELk9N44/BzNHKE50Fp19nfDJ/eVq8fM/yqDSlq7Gj2D1sEeZuEeXQGxgoAKNOWOlKP6IoQ/+s6g==}
+ deprecated: Web3Modal is now Reown AppKit. Please follow the upgrade guide at https://docs.reown.com/appkit/upgrade/from-w3m-to-reown
peerDependencies:
'@wagmi/connectors': '>=4'
'@wagmi/core': '>=2.0.0'
@@ -5608,9 +5609,6 @@ packages:
engine.io-client@6.5.4:
resolution: {integrity: sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==}
- engine.io-client@6.6.1:
- resolution: {integrity: sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==}
-
engine.io-client@6.6.2:
resolution: {integrity: sha512-TAr+NKeoVTjEVW8P3iHguO1LO6RlUz9O5Y8o7EY0fU+gY1NYqas7NN3slpFtbXEsLMHk0h90fJMfKjRkQ0qUIw==}
@@ -7422,10 +7420,6 @@ packages:
resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
engines: {node: '>= 6.13.0'}
- node-gyp-build@4.8.2:
- resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==}
- hasBin: true
-
node-gyp-build@4.8.4:
resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
hasBin: true
@@ -8608,10 +8602,6 @@ packages:
resolution: {integrity: sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==}
engines: {node: '>=10.0.0'}
- socket.io-client@4.8.0:
- resolution: {integrity: sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==}
- engines: {node: '>=10.0.0'}
-
socket.io-client@4.8.1:
resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==}
engines: {node: '>=10.0.0'}
@@ -9545,10 +9535,6 @@ packages:
resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==}
engines: {node: '>=0.4.0'}
- xmlhttprequest-ssl@2.1.1:
- resolution: {integrity: sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==}
- engines: {node: '>=0.4.0'}
-
xmlhttprequest-ssl@2.1.2:
resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==}
engines: {node: '>=0.4.0'}
@@ -12889,7 +12875,7 @@ snapshots:
'@metamask/safe-event-emitter@3.1.2': {}
- '@metamask/sdk-communication-layer@0.27.0(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.20)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))':
+ '@metamask/sdk-communication-layer@0.27.0(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.20)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))':
dependencies:
bufferutil: 4.0.8
cross-fetch: 4.0.0(encoding@0.1.13)
@@ -12898,7 +12884,7 @@ snapshots:
eciesjs: 0.3.20
eventemitter2: 6.4.9
readable-stream: 3.6.2
- socket.io-client: 4.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)
+ socket.io-client: 4.8.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)
utf-8-validate: 5.0.10
uuid: 8.3.2
transitivePeerDependencies:
@@ -12941,7 +12927,7 @@ snapshots:
dependencies:
'@metamask/onboarding': 1.0.1
'@metamask/providers': 16.1.0
- '@metamask/sdk-communication-layer': 0.27.0(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.20)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))
+ '@metamask/sdk-communication-layer': 0.27.0(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.20)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))
'@metamask/sdk-install-modal-web': 0.26.5(i18next@23.11.5)(react-dom@18.3.1(react@18.3.1))(react-native@0.75.4(@babel/core@7.25.7)(@babel/preset-env@7.25.7(@babel/core@7.25.7))(@types/react@18.3.12)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10))(react@18.3.1)
'@types/dom-screen-wake-lock': 1.0.3
bowser: 2.11.0
@@ -12958,7 +12944,7 @@ snapshots:
react-native-webview: 11.26.1(react-native@0.75.4(@babel/core@7.25.7)(@babel/preset-env@7.25.7(@babel/core@7.25.7))(@types/react@18.3.12)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10))(react@18.3.1)
readable-stream: 3.6.2
rollup-plugin-visualizer: 5.12.0(rollup@4.27.3)
- socket.io-client: 4.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)
+ socket.io-client: 4.8.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)
util: 0.12.5
uuid: 8.3.2
optionalDependencies:
@@ -14531,7 +14517,7 @@ snapshots:
'@solana/web3.js@1.91.7(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)':
dependencies:
- '@babel/runtime': 7.25.7
+ '@babel/runtime': 7.26.0
'@noble/curves': 1.6.0
'@noble/hashes': 1.5.0
'@solana/buffer-layout': 4.0.1
@@ -14575,7 +14561,7 @@ snapshots:
'@solana/web3.js@1.93.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)':
dependencies:
- '@babel/runtime': 7.25.7
+ '@babel/runtime': 7.26.0
'@noble/curves': 1.6.0
'@noble/hashes': 1.5.0
'@solana/buffer-layout': 4.0.1
@@ -16133,7 +16119,7 @@ snapshots:
'@walletconnect/window-getters': 1.0.1
'@walletconnect/window-metadata': 1.0.1
detect-browser: 5.3.0
- elliptic: 6.5.7
+ elliptic: 6.6.1
query-string: 7.1.3
uint8arrays: 3.1.0
transitivePeerDependencies:
@@ -16451,7 +16437,7 @@ snapshots:
acorn-walk@8.3.4:
dependencies:
- acorn: 8.12.1
+ acorn: 8.14.0
acorn@8.12.1: {}
@@ -16862,7 +16848,7 @@ snapshots:
bufferutil@4.0.8:
dependencies:
- node-gyp-build: 4.8.2
+ node-gyp-build: 4.8.4
bundle-require@5.0.0(esbuild@0.24.0):
dependencies:
@@ -17726,18 +17712,6 @@ snapshots:
- supports-color
- utf-8-validate
- engine.io-client@6.6.1(bufferutil@4.0.8)(utf-8-validate@5.0.10):
- dependencies:
- '@socket.io/component-emitter': 3.1.2
- debug: 4.3.7(supports-color@8.1.1)
- engine.io-parser: 5.2.3
- ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)
- xmlhttprequest-ssl: 2.1.1
- transitivePeerDependencies:
- - bufferutil
- - supports-color
- - utf-8-validate
-
engine.io-client@6.6.2(bufferutil@4.0.8)(utf-8-validate@5.0.10):
dependencies:
'@socket.io/component-emitter': 3.1.2
@@ -18666,11 +18640,11 @@ snapshots:
i18next-browser-languagedetector@7.1.0:
dependencies:
- '@babel/runtime': 7.25.7
+ '@babel/runtime': 7.26.0
i18next@23.11.5:
dependencies:
- '@babel/runtime': 7.25.7
+ '@babel/runtime': 7.26.0
iconv-lite@0.4.24:
dependencies:
@@ -20020,8 +19994,6 @@ snapshots:
node-forge@1.3.1: {}
- node-gyp-build@4.8.2: {}
-
node-gyp-build@4.8.4: {}
node-int64@0.4.0: {}
@@ -21290,17 +21262,6 @@ snapshots:
- supports-color
- utf-8-validate
- socket.io-client@4.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10):
- dependencies:
- '@socket.io/component-emitter': 3.1.2
- debug: 4.3.7(supports-color@8.1.1)
- engine.io-client: 6.6.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)
- socket.io-parser: 4.2.4
- transitivePeerDependencies:
- - bufferutil
- - supports-color
- - utf-8-validate
-
socket.io-client@4.8.1(bufferutil@4.0.8)(utf-8-validate@5.0.10):
dependencies:
'@socket.io/component-emitter': 3.1.2
@@ -21769,7 +21730,7 @@ snapshots:
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 20.17.6
- acorn: 8.12.1
+ acorn: 8.14.0
acorn-walk: 8.3.4
arg: 4.1.3
create-require: 1.1.1
@@ -21787,7 +21748,7 @@ snapshots:
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 22.9.1
- acorn: 8.12.1
+ acorn: 8.14.0
acorn-walk: 8.3.4
arg: 4.1.3
create-require: 1.1.1
@@ -22003,7 +21964,7 @@ snapshots:
utf-8-validate@5.0.10:
dependencies:
- node-gyp-build: 4.8.2
+ node-gyp-build: 4.8.4
utf8@3.0.0: {}
@@ -22285,8 +22246,6 @@ snapshots:
xmlhttprequest-ssl@2.0.0: {}
- xmlhttprequest-ssl@2.1.1: {}
-
xmlhttprequest-ssl@2.1.2: {}
xtend@4.0.2: {}
|