mirror of
https://github.com/pezkuwichain/pezkuwi-common.git
synced 2026-04-21 23:48:05 +00:00
80 lines
2.4 KiB
JavaScript
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);
|