Skip to content

Commit

Permalink
MEX-332: add known contracts to fees collector model
Browse files Browse the repository at this point in the history
- expose missing allTokens field in fees collector model

Signed-off-by: Claudiu Lataretu <[email protected]>
  • Loading branch information
claudiulataretu committed Jul 24, 2023
1 parent 377c989 commit 233bbcc
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/modules/fees-collector/fees-collector.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,16 @@ export class FeesCollectorResolver {
return this.feesCollectorAbi.lockedTokensPerBlock();
}

@ResolveField(() => [String])
async allTokens(): Promise<string[]> {
return this.feesCollectorAbi.allTokens();
}

@ResolveField(() => [String])
async knownContracts(): Promise<string[]> {
return this.feesCollectorAbi.knownContracts();
}

@Query(() => FeesCollectorModel)
async feesCollector(): Promise<FeesCollectorModel> {
return this.feesCollectorService.feesCollector(scAddress.feesCollector);
Expand Down
3 changes: 3 additions & 0 deletions src/modules/fees-collector/models/fees-collector.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ export class FeesCollectorModel {
@Field(() => [String])
allTokens: string[];

@Field(() => [String])
knownContracts: string[];

@Field(() => [EsdtTokenPayment])
accumulatedFees: [EsdtTokenPayment];

Expand Down
23 changes: 23 additions & 0 deletions src/modules/fees-collector/services/fees-collector.abi.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { MXProxyService } from '../../../services/multiversx-communication/mx.pr
import {
Interaction,
TokenIdentifierValue,
TypedValue,
U32Value,
} from '@multiversx/sdk-core';
import BigNumber from 'bignumber.js';
Expand Down Expand Up @@ -104,4 +105,26 @@ export class FeesCollectorAbiService
const response = await this.getGenericData(interaction);
return response.firstValue.valueOf();
}

@ErrorLoggerAsync({
className: FeesCollectorAbiService.name,
})
@GetOrSetCache({
baseKey: 'feesCollector',
remoteTtl: CacheTtlInfo.ContractInfo.remoteTtl,
localTtl: CacheTtlInfo.ContractInfo.localTtl,
})
async knownContracts(): Promise<string[]> {
return await this.getKnownContractsRaw();

Check warning on line 118 in src/modules/fees-collector/services/fees-collector.abi.service.ts

View check run for this annotation

Codecov / codecov/patch

src/modules/fees-collector/services/fees-collector.abi.service.ts#L118

Added line #L118 was not covered by tests
}

async getKnownContractsRaw(): Promise<string[]> {
const contract = await this.mxProxy.getFeesCollectorContract();

Check warning on line 122 in src/modules/fees-collector/services/fees-collector.abi.service.ts

View check run for this annotation

Codecov / codecov/patch

src/modules/fees-collector/services/fees-collector.abi.service.ts#L122

Added line #L122 was not covered by tests
const interaction: Interaction =
contract.methodsExplicit.getAllKnownContracts();
const response = await this.getGenericData(interaction);
return response.firstValue

Check warning on line 126 in src/modules/fees-collector/services/fees-collector.abi.service.ts

View check run for this annotation

Codecov / codecov/patch

src/modules/fees-collector/services/fees-collector.abi.service.ts#L124-L126

Added lines #L124 - L126 were not covered by tests
.valueOf()
.map((value: TypedValue) => value.valueOf().bech32());

Check warning on line 128 in src/modules/fees-collector/services/fees-collector.abi.service.ts

View check run for this annotation

Codecov / codecov/patch

src/modules/fees-collector/services/fees-collector.abi.service.ts#L128

Added line #L128 was not covered by tests
}
}

0 comments on commit 233bbcc

Please sign in to comment.