getModulesPaginated method

  1. @override
Future<(List<ETHAddress>, ETHAddress)> getModulesPaginated({
  1. required EthereumProvider provider,
  2. ETHAddress? start,
  3. required int pageSize,
})
override

Returns an array of modules.

If all entries fit into a single page, the next pointer will be address(0x1). If another page is present, next will be the last element of the returned array.

Parameters:

  • start: Start of the page. Must be a module or the start pointer (address(0x1)).
  • pageSize: Maximum number of modules that should be returned. Must be greater than 0.

Implementation

@override
Future<(List<ETHAddress>, ETHAddress)> getModulesPaginated({
  required EthereumProvider provider,
  ETHAddress? start,
  required int pageSize,
}) async {
  final params = [start ?? ETHAddress.one, BigInt.from(pageSize)];
  return queryContract<(List<ETHAddress>, ETHAddress)>(
    functionName: SafeContractFunction.getModulesPaginated,
    provider: provider,
    params: params,
    onResponse: (result) {
      final owners = JsonParser.valueEnsureAsList<SolidityAddress>(
        result.elementAtOrNull(0),
      );
      return (
        owners.map((e) => e.toEthereumAddress()).toList(),
        JsonParser.valueAs<SolidityAddress>(
          result.elementAtOrNull(1),
        ).toEthereumAddress(),
      );
    },
  );
}