Skip to content

Commit 94c89ba

Browse files
committed
refactor: improve code structure and organization for better maintainability
1 parent dcba9c5 commit 94c89ba

File tree

1 file changed

+36
-30
lines changed

1 file changed

+36
-30
lines changed

governance/xc_admin/packages/xc_admin_common/src/programs/core/core_functions.ts

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -269,39 +269,45 @@ export function getDownloadableConfig(
269269
rawConfig: RawConfig,
270270
): DownloadableConfig {
271271
// Convert the raw config to a user-friendly format for download
272-
const symbolToData: DownloadableConfig = {};
273-
274272
if (rawConfig.mappingAccounts.length > 0) {
275-
rawConfig.mappingAccounts
276-
.sort(
277-
(mapping1, mapping2) =>
278-
mapping2.products.length - mapping1.products.length,
279-
)[0]
280-
.products.sort((product1, product2) =>
281-
product1.metadata.symbol.localeCompare(product2.metadata.symbol),
282-
)
283-
.map((product) => {
284-
symbolToData[product.metadata.symbol] = {
285-
address: product.address.toBase58(),
286-
metadata: {
287-
...product.metadata,
288-
},
289-
priceAccounts: product.priceAccounts.map((p: PriceRawConfig) => {
290-
return {
291-
address: p.address.toBase58(),
292-
publishers: p.publishers.map((p) => p.toBase58()),
293-
expo: p.expo,
294-
minPub: p.minPub,
295-
maxLatency: p.maxLatency,
296-
};
297-
}),
298-
};
299-
// This field is immutable and should not be updated
300-
delete symbolToData[product.metadata.symbol].metadata.price_account;
301-
});
273+
const symbolToData = Object.fromEntries(
274+
rawConfig.mappingAccounts
275+
.sort(
276+
(mapping1, mapping2) =>
277+
mapping2.products.length - mapping1.products.length,
278+
)[0]
279+
.products.sort((product1, product2) =>
280+
product1.metadata.symbol.localeCompare(product2.metadata.symbol),
281+
)
282+
.map((product) => {
283+
const { price_account, ...metadataWithoutPriceAccount } =
284+
product.metadata;
285+
286+
return [
287+
product.metadata.symbol,
288+
{
289+
address: product.address.toBase58(),
290+
metadata: {
291+
...metadataWithoutPriceAccount,
292+
},
293+
priceAccounts: product.priceAccounts.map((p: PriceRawConfig) => {
294+
return {
295+
address: p.address.toBase58(),
296+
publishers: p.publishers.map((p) => p.toBase58()),
297+
expo: p.expo,
298+
minPub: p.minPub,
299+
maxLatency: p.maxLatency,
300+
};
301+
}),
302+
},
303+
];
304+
}),
305+
);
306+
307+
return sortData(symbolToData);
302308
}
303309

304-
return sortData(symbolToData);
310+
return {};
305311
}
306312

307313
/**

0 commit comments

Comments
 (0)