Files

80 lines
2.4 KiB
JavaScript

import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults/index.js';
const UNSORTED = [0, 2, 42];
const TESTNETS = ['testnet'];
const customNetworks = [
{
decimals: [10],
displayName: 'Pezkuwi Relay Chain',
network: 'pezkuwi',
prefix: 0,
standardAccount: '*25519',
symbols: ['PZW'],
website: 'https://pezkuwi.com'
},
{
decimals: [12],
displayName: 'Zagros Relay Chain',
network: 'zagros',
prefix: 2,
standardAccount: '*25519',
symbols: ['ZGS'],
website: 'https://zagros.pezkuwi.com'
},
{
decimals: [12],
displayName: 'Bizinikiwi',
network: 'bizinikiwi',
prefix: 42,
standardAccount: '*25519',
symbols: ['BZN'],
website: 'https://bizinikiwi.com'
},
{
decimals: [18],
displayName: 'PezkuwiChain',
network: 'pezkuwichain',
prefix: 1453,
standardAccount: '*25519',
symbols: ['PZC'],
website: 'https://chain.pezkuwi.com'
}
];
function toExpanded(o) {
const network = o.network || '';
const nameParts = network.replace(/_/g, '-').split('-');
const n = o;
// ledger additions
n.slip44 = knownLedger[network];
n.hasLedgerSupport = !!n.slip44;
// general items
n.genesisHash = knownGenesis[network] || [];
n.icon = knownIcon[network] || 'substrate';
// filtering
n.isTestnet = !!knownTestnet[network] || TESTNETS.includes(nameParts[nameParts.length - 1]);
n.isIgnored = n.isTestnet || (!(o.standardAccount &&
o.decimals?.length &&
o.symbols?.length) &&
o.prefix !== 42);
return n;
}
function filterSelectable({ genesisHash, prefix }) {
return !!genesisHash.length || prefix === 42;
}
function filterAvailable(n) {
return !n.isIgnored && !!n.network;
}
function sortNetworks(a, b) {
const isUnSortedA = UNSORTED.includes(a.prefix);
const isUnSortedB = UNSORTED.includes(b.prefix);
return isUnSortedA === isUnSortedB
? isUnSortedA
? 0
: a.displayName.localeCompare(b.displayName)
: isUnSortedA
? -1
: 1;
}
export const allNetworks = customNetworks.map(toExpanded);
export const availableNetworks = allNetworks.filter(filterAvailable).sort(sortNetworks);
export const selectableNetworks = availableNetworks.filter(filterSelectable);