Skip to content

Commit a891f7e

Browse files
committed
refactor: parsedBaseDataMap
1 parent 39e4cf4 commit a891f7e

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

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

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,21 @@ export function getConfig(params: GetConfigParams): RawConfig {
149149

150150
const accounts = params.accounts;
151151

152+
// Create a map of parsed base data for each account to avoid repeated parsing
153+
const parsedBaseDataMap = new Map(
154+
accounts.map((account) => {
155+
const baseData = parseBaseData(account.account.data);
156+
return [account.pubkey.toBase58(), baseData];
157+
}),
158+
);
159+
152160
// First pass: Extract price accounts
153161
const priceRawConfigs = Object.fromEntries(
154162
accounts
155163
.filter(
156164
(account) =>
157-
parseBaseData(account.account.data)?.type === AccountType.Price,
165+
parsedBaseDataMap.get(account.pubkey.toBase58())?.type ===
166+
AccountType.Price,
158167
)
159168
.map((account) => {
160169
const parsed = parsePriceData(account.account.data);
@@ -179,7 +188,8 @@ export function getConfig(params: GetConfigParams): RawConfig {
179188
accounts
180189
.filter(
181190
(account) =>
182-
parseBaseData(account.account.data)?.type === AccountType.Product,
191+
parsedBaseDataMap.get(account.pubkey.toBase58())?.type ===
192+
AccountType.Product,
183193
)
184194
.map((account) => {
185195
const parsed = parseProductData(account.account.data);
@@ -225,7 +235,8 @@ export function getConfig(params: GetConfigParams): RawConfig {
225235
const mappingAccounts = accounts
226236
.filter(
227237
(account) =>
228-
parseBaseData(account.account.data)?.type === AccountType.Mapping,
238+
parsedBaseDataMap.get(account.pubkey.toBase58())?.type ===
239+
AccountType.Mapping,
229240
)
230241
.map((account) => {
231242
const parsed = parseMappingData(account.account.data);
@@ -253,7 +264,8 @@ export function getConfig(params: GetConfigParams): RawConfig {
253264
// Find permission account if it exists
254265
const permissionAccount = accounts.find(
255266
(account) =>
256-
parseBaseData(account.account.data)?.type === AccountType.Permission,
267+
parsedBaseDataMap.get(account.pubkey.toBase58())?.type ===
268+
AccountType.Permission,
257269
);
258270

259271
if (permissionAccount) {

0 commit comments

Comments
 (0)