mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
79 lines
2.5 KiB
TypeScript
79 lines
2.5 KiB
TypeScript
import React, { useMemo, useRef, useEffect, useState } from 'react';
|
|
|
|
import { getFeaturePayload } from 'configs/app/features/types';
|
|
|
|
import config from 'configs/app';
|
|
import essentialDappsChainsConfig from 'configs/essential-dapps-chains';
|
|
import useIsMobile from 'lib/hooks/useIsMobile';
|
|
import { useColorMode } from 'toolkit/next/color-mode';
|
|
import { BODY_TYPEFACE } from 'toolkit/theme/foundations/typography';
|
|
import MarketplaceAppIframe from 'ui/marketplace/MarketplaceAppIframe';
|
|
import AdBanner from 'ui/shared/ad/AdBanner';
|
|
|
|
const feature = getFeaturePayload(config.features.marketplace);
|
|
const dappConfig = feature?.essentialDapps?.swap;
|
|
|
|
const defaultChainId = Number(
|
|
dappConfig?.chains.includes(config.chain.id as string) ?
|
|
config.chain.id :
|
|
dappConfig?.chains[0],
|
|
);
|
|
|
|
function getExplorerUrls() {
|
|
return Object.fromEntries(dappConfig?.chains.map((chainId) => {
|
|
const chainConfig = essentialDappsChainsConfig()?.chains.find(
|
|
(chain) => chain.id === chainId,
|
|
);
|
|
return [ Number(chainId), [ chainConfig?.explorer_url ] ];
|
|
}) || []);
|
|
}
|
|
|
|
export default function Swap() {
|
|
const isMobile = useIsMobile();
|
|
const { colorMode } = useColorMode();
|
|
const colorRef = useRef<HTMLDivElement>(null);
|
|
const [ mainColor, setMainColor ] = useState('#2563eb');
|
|
const [ borderColor, setBorderColor ] = useState('rgba(0,0,0,0.06)');
|
|
|
|
useEffect(() => {
|
|
if (colorRef.current) {
|
|
const styles = getComputedStyle(colorRef.current);
|
|
setMainColor(styles.getPropertyValue('--color-blue-600').trim() || '#2563eb');
|
|
setBorderColor(
|
|
colorMode === 'light'
|
|
? 'rgba(0,0,0,0.06)'
|
|
: 'rgba(255,255,255,0.06)',
|
|
);
|
|
}
|
|
}, [ colorMode ]);
|
|
|
|
const message = useMemo(() => ({
|
|
type: 'config',
|
|
integrator: dappConfig?.integrator,
|
|
fee: Number(dappConfig?.fee),
|
|
chains: dappConfig?.chains.map((chainId) => Number(chainId)),
|
|
explorerUrls: getExplorerUrls(),
|
|
mainColor,
|
|
borderColor,
|
|
fontFamily: BODY_TYPEFACE,
|
|
defaultChainId,
|
|
}), [ mainColor, borderColor ]);
|
|
|
|
return (
|
|
<div ref={ colorRef } className="flex flex-1 flex-col justify-between gap-6">
|
|
<MarketplaceAppIframe
|
|
appId="swap"
|
|
appUrl={ dappConfig?.url }
|
|
message={ message }
|
|
isEssentialDapp
|
|
/>
|
|
{ (feature?.essentialDappsAdEnabled && !isMobile) && (
|
|
<AdBanner
|
|
format="mobile"
|
|
className="w-fit rounded-md overflow-hidden ml-auto"
|
|
/>
|
|
) }
|
|
</div>
|
|
);
|
|
};
|