mirror of
https://github.com/luxfi/bridge.git
synced 2026-09-24 00:26:46 +00:00
83 lines
2.3 KiB
TypeScript
83 lines
2.3 KiB
TypeScript
import { CryptoNetwork, NetworkCurrency } from "./CryptoNetwork";
|
|
import { Exchange } from "./Exchange";
|
|
import { Layer } from "./Layer";
|
|
import { BridgeSettings } from "./BridgeSettings";
|
|
|
|
export class BridgeAppSettings {
|
|
constructor(settings: BridgeSettings | any) {
|
|
this.layers = BridgeAppSettings.ResolveLayers(settings.networks);
|
|
this.exchanges = settings.exchanges;
|
|
}
|
|
|
|
exchanges: Exchange[];
|
|
layers: Layer[];
|
|
|
|
resolveImgSrc = (
|
|
item:
|
|
| Layer
|
|
| NetworkCurrency
|
|
| Pick<Layer, "internal_name">
|
|
| { asset: string }
|
|
| undefined
|
|
) => {
|
|
if (!item) {
|
|
return "/assets/img/logo_placeholder.png";
|
|
}
|
|
|
|
const resource_storage_url = process.env.NEXT_PUBLIC_RESOURCE_STORAGE_URL;
|
|
if (!resource_storage_url)
|
|
throw new Error(
|
|
"NEXT_PUBLIC_RESOURCE_STORAGE_URL is not set up in env vars"
|
|
);
|
|
|
|
const basePath = new URL(resource_storage_url);
|
|
|
|
// Shitty way to check for partner
|
|
if ((item as any)?.internal_name != undefined) {
|
|
basePath.pathname = `/bridge/networks/${(
|
|
item as any
|
|
)?.internal_name?.toLowerCase()}.png`;
|
|
} else if ((item as any)?.asset != undefined) {
|
|
basePath.pathname = `/bridge/currencies/${(
|
|
item as any
|
|
)?.asset?.toLowerCase()}.png`;
|
|
}
|
|
console.log("=====>", basePath.href);
|
|
|
|
return basePath.href;
|
|
};
|
|
|
|
static ResolveLayers(networks: any[]): Layer[] {
|
|
const resource_storage_url = process.env.NEXT_PUBLIC_RESOURCE_STORAGE_URL;
|
|
if (!resource_storage_url)
|
|
throw new Error(
|
|
"NEXT_PUBLIC_RESOURCE_STORAGE_URL is not set up in env vars"
|
|
);
|
|
|
|
const basePath = new URL(resource_storage_url);
|
|
|
|
const networkLayers: Layer[] = networks?.map(
|
|
(n): Layer => ({
|
|
isExchange: false,
|
|
assets: BridgeAppSettings.ResolveNetworkL2Assets(n),
|
|
img_url: `${basePath}bridge/networks/${n?.internal_name?.toLowerCase()}.png`,
|
|
...n,
|
|
})
|
|
);
|
|
return networkLayers;
|
|
}
|
|
|
|
static ResolveNetworkL2Assets(network: CryptoNetwork): NetworkCurrency[] {
|
|
return network?.currencies?.map((c) => ({
|
|
asset: c.asset,
|
|
status: c.status,
|
|
contract_address: c.contract_address,
|
|
decimals: c.decimals,
|
|
precision: c.precision,
|
|
price_in_usd: c.price_in_usd,
|
|
is_native: c.is_native,
|
|
is_refuel_enabled: c.is_refuel_enabled,
|
|
}));
|
|
}
|
|
}
|