diff --git a/public/landing/biteth.png b/public/landing/biteth.png
new file mode 100644
index 000000000..115718df8
Binary files /dev/null and b/public/landing/biteth.png differ
diff --git a/src/modules/Whitelist/leaderBoard/index.tsx b/src/modules/Whitelist/leaderBoard/index.tsx
index de336df4a..8d6e20686 100644
--- a/src/modules/Whitelist/leaderBoard/index.tsx
+++ b/src/modules/Whitelist/leaderBoard/index.tsx
@@ -16,7 +16,7 @@ import { getUrlAvatarTwitter } from '@/utils/twitter';
import cs from 'clsx';
import { useAppSelector } from '@/stores/hooks';
import { commonSelector } from '@/stores/states/common/selector';
-import uniqueBy from '@popperjs/core/lib/utils/uniqueBy';
+import BigNumber from 'bignumber.js';
const valueToClassName: any = {
'10': 'boost_10',
@@ -34,7 +34,6 @@ const LeaderBoard = () => {
const [data, setData] = useState([]);
const [isFetching, setIsFetching] = useState(true);
const [refreshing, setRefreshing] = useState(false);
- const [count, setCount] = useState(undefined);
const needReload = useAppSelector(commonSelector).needReload;
const hasIncrementedPageRef = useRef(false);
@@ -62,7 +61,6 @@ const LeaderBoard = () => {
const { data: response, count } = await getTopLeaderBoards({
...refParams.current,
});
- setCount(count)
if (isNew) {
const { data: response2 } = await getTopLeaderBoards({
page: 1,
@@ -161,6 +159,10 @@ const LeaderBoard = () => {
alignItems={'center'}
width={'100%'}
justifyContent={'space-between'}
+ cursor="pointer"
+ onClick={() => {
+ window.open(`https://twitter.com/${data?.twitter_username}`)
+ }}
>
{
)}
address={''}
width={36}
- name={data?.twitter_username || ''}
+ name={data?.twitter_name || data?.twitter_username || ''}
/>
{data?.twitter_name && (
@@ -251,7 +253,7 @@ const LeaderBoard = () => {
label={
Content Points are calculated based on the performance of your posts on X, including Views, Likes, Reposts, and Quotes.
- Note: To be qualified, you must tag: @bvmnetwork
+ Note: To be qualified, you must tag:
@bvmnetwork
}
>
@@ -337,45 +339,60 @@ const LeaderBoard = () => {
// );
// },
// },
- // {
- // id: 'feature',
- // label: (
- //
- // Gas Spent
- //
- // ),
- // labelConfig,
- // config: {
- // borderBottom: 'none',
- // fontSize: '16px',
- // fontWeight: 500,
- // verticalAlign: 'middle',
- // letterSpacing: '-0.5px',
- // },
- // render(data: ILeaderBoardPoint) {
- // return (
- //
- //
- //
- // {formatCurrency(data?.point_portfolio_inday, 0, 0)}
- //
- //
- //
- // );
- // },
- // },
+ {
+ id: 'feature',
+ label: (
+
+ Gas Spent
+
+ Gas spent is calculated from total gas fees paid on Bitcoin, starting with the first payment to wallet verification on the BVM allowlist.
+
+ }
+ >
+
+
+
+ ),
+ labelConfig,
+ config: {
+ borderBottom: 'none',
+ fontSize: '16px',
+ fontWeight: 500,
+ verticalAlign: 'middle',
+ letterSpacing: '-0.5px',
+ },
+ render(data: ILeaderBoardPoint) {
+ return (
+
+
+
+ {formatCurrency(data?.gas_point, 0, 0)}
+
+
+
+ );
+ },
+ },
{
id: 'point',
label: (
@@ -408,7 +425,7 @@ const LeaderBoard = () => {
>
- {formatCurrency(data.point, 0, 0)}
+ {formatCurrency(new BigNumber(data?.point || '0').plus(data?.gas_point || '0').toNumber(), 0, 0)}
diff --git a/src/modules/landing/Componets/BitEth/index.tsx b/src/modules/landing/Componets/BitEth/index.tsx
index 082c7e664..c3ac003bd 100644
--- a/src/modules/landing/Componets/BitEth/index.tsx
+++ b/src/modules/landing/Componets/BitEth/index.tsx
@@ -19,12 +19,12 @@ export default function BitEth() {
-
- Minimal effort to migrate from Ethereum to Bitcoin.
+ Minimal effort to migrate from Ethereum to Bitcoin.
diff --git a/src/modules/landing/Componets/Chain/index.tsx b/src/modules/landing/Componets/Chain/index.tsx
index 047e1f211..ce8d963bc 100644
--- a/src/modules/landing/Componets/Chain/index.tsx
+++ b/src/modules/landing/Componets/Chain/index.tsx
@@ -140,7 +140,7 @@ export default function Chain() {
Case studies
- Say hello to the first EVM-compatible Bitcoin L2 blockchains powered by BVM.
+ Say hello to the first EVM-compatible Bitcoin L2 blockchains powered by BVM.
diff --git a/src/modules/landing/Componets/Chain/styles.module.scss b/src/modules/landing/Componets/Chain/styles.module.scss
index 74fb9eb3b..59b2b8e1d 100644
--- a/src/modules/landing/Componets/Chain/styles.module.scss
+++ b/src/modules/landing/Componets/Chain/styles.module.scss
@@ -49,7 +49,7 @@
}
&_heading{
- max-width: 820px;
+ max-width: 900px;
margin-left: auto;
margin-right: auto;
}
diff --git a/src/modules/landing/Componets/HeadingTextV2/index.tsx b/src/modules/landing/Componets/HeadingTextV2/index.tsx
index 2b4e87540..bc03a399a 100644
--- a/src/modules/landing/Componets/HeadingTextV2/index.tsx
+++ b/src/modules/landing/Componets/HeadingTextV2/index.tsx
@@ -41,7 +41,7 @@ export default function HeadingTextV2({ headings, className, children }: IProp)
useEffect(() => {
if (!play) return;
refTime.current = setTimeout(nextSlide, 500);
- refLoop.current = setInterval(nextSlide, 3000);
+ refLoop.current = setInterval(nextSlide, 2000);
return () => {
clearInterval(refLoop.current);
clearTimeout(refTime.current);
diff --git a/src/utils/storage/allowlist.storage.ts b/src/utils/storage/allowlist.storage.ts
index a6b81794e..ae3ed1612 100644
--- a/src/utils/storage/allowlist.storage.ts
+++ b/src/utils/storage/allowlist.storage.ts
@@ -1,5 +1,6 @@
import storage from '@/utils/storage/local';
import { WalletType } from '@/interfaces/wallet';
+import { compareString } from '@/utils/string';
interface IStorageItem {
address: string,
@@ -11,11 +12,15 @@ class AllowListStorage {
private static STORAGE_KEY = 'ALLOW_LIST_STORAGE_0.0.1';
public static getStorage = (): IStorageItem[] | undefined => {
- const data = storage.get(this.STORAGE_KEY);
- if (data) {
- return JSON.parse(data as string) as IStorageItem[]
+ try {
+ const data = storage.get(this.STORAGE_KEY);
+ if (data) {
+ return JSON.parse(data as string) as IStorageItem[]
+ }
+ return undefined
+ } catch (e) {
+ return undefined
}
- return undefined
};
public static setStorage = (payload: IStorageItem) => {
try {
@@ -24,7 +29,9 @@ class AllowListStorage {
storage.set(this.STORAGE_KEY, JSON.stringify([payload]));
return;
}
- data.push(payload)
+ if (!data.some(item => compareString(item.address, payload.address))) {
+ data.push(payload)
+ }
storage.set(this.STORAGE_KEY, JSON.stringify(data));
} catch (error) {
console.log('setStorage error: ', error);