Implementation
Future<dynamic> address(
{required String value,
required String tab,
bool findAll = false,
int page = 1,
// Maximun page size
int pageSize = 1000}) async {
try {
switch (tab) {
case 'blocks':
PaginatedRequest<dynamic> result = await client.get(api(
'address/blocks',
{'address': value, 'page': page, 'page_size': pageSize}));
List<dynamic> data = result.data;
if (findAll) {
data = await getAllResults(result, 'address/blocks',
{'address': value, 'page': page, 'page_size': pageSize});
}
return PaginatedRequest(
data: data.isNotEmpty ? AddressBlocks.fromJson(data) : null,
firstPage: result.firstPage,
lastPage: result.lastPage,
page: result.page,
total: result.total,
totalPages: result.totalPages,
);
case 'info':
List<dynamic> data =
await client.get(api('address/info', {'addresses': value}));
return data.length > 0
? data.map((info) => AddressInfo.fromJson(info)).toList()
: [];
case 'details':
Map<String, dynamic> data =
await client.get(api('address/details', {'address': value}));
return AddressDetails.fromJson({...data, 'address': value});
case 'labels':
List<dynamic> data = await client.get(api('address/labels'));
return data.length > 0
? data.map((label) => AddressLabel.fromJson(label)).toList()
: [];
case 'mints':
PaginatedRequest<dynamic> result = await client.get(api(
'address/mints',
{'address': value, 'page': page, 'page_size': pageSize}));
List<dynamic> data = result.data;
if (findAll) {
data = await getAllResults(result, 'address/mints',
{'address': value, 'page': page, 'page_size': pageSize});
}
return PaginatedRequest(
data: AddressMints.fromJson({'address': value, 'mints': data}),
firstPage: result.firstPage,
lastPage: result.lastPage,
page: result.page,
total: result.total,
totalPages: result.totalPages,
);
case 'data_requests_solved':
PaginatedRequest<dynamic> result = await client.get(api(
'address/data-requests-solved',
{'address': value, 'page': page, 'page_size': pageSize}));
List<dynamic> data = result.data;
if (findAll) {
data = await getAllResults(result, 'address/data-requests-solved',
{'address': value, 'page': page, 'page_size': pageSize});
}
return PaginatedRequest(
data: AddressDataRequestsSolved.fromJson(
{'address': value, 'data_requests_solved': data}),
firstPage: result.firstPage,
lastPage: result.lastPage,
page: result.page,
total: result.total,
totalPages: result.totalPages,
);
case 'data_requests_created':
PaginatedRequest<dynamic> result = await client.get(api(
'address/data-requests-created',
{'address': value, 'page': page, 'page_size': pageSize}));
List<dynamic> data = result.data;
if (findAll) {
data = await getAllResults(result, 'address/data-requests-created',
{'address': value, 'page': page, 'page_size': pageSize});
}
return PaginatedRequest(
data: AddressDataRequestsCreated.fromJson(
{'address': value, 'data_requests_created': data}),
firstPage: result.firstPage,
lastPage: result.lastPage,
page: result.page,
total: result.total,
totalPages: result.totalPages,
);
case 'value_transfers':
PaginatedRequest<dynamic> result = await client.get(api(
'address/value-transfers',
{'address': value, 'page': page, 'page_size': pageSize}));
List<dynamic> data = result.data;
if (findAll) {
data = await getAllResults(result, 'address/value-transfers',
{'address': value, 'page': page, 'page_size': pageSize});
}
return PaginatedRequest(
data: AddressValueTransfers.fromJson(
{"value_transfers": data, "address": value}),
firstPage: result.firstPage,
lastPage: result.lastPage,
page: result.page,
total: result.total,
totalPages: result.totalPages,
);
case 'stakes':
PaginatedRequest<dynamic> result = await client.get(api(
'address/stakes',
{'address': value, 'page': page, 'page_size': pageSize}));
List<dynamic> data = result.data;
if (findAll) {
data = await getAllResults(result, 'address/stakes',
{'address': value, 'page': page, 'page_size': pageSize});
}
return PaginatedRequest(
data: AddressStakes.fromJson(data),
firstPage: result.firstPage,
lastPage: result.lastPage,
page: result.page,
total: result.total,
totalPages: result.totalPages,
);
case 'unstakes':
PaginatedRequest<dynamic> result = await client.get(api(
'address/unstakes',
{'address': value, 'page': page, 'page_size': pageSize}));
List<dynamic> data = result.data;
if (findAll) {
data = await getAllResults(result, 'address/unstakes',
{'address': value, 'page': page, 'page_size': pageSize});
}
return PaginatedRequest(
data: AddressUnstakes.fromJson(data),
firstPage: result.firstPage,
lastPage: result.lastPage,
page: result.page,
total: result.total,
totalPages: result.totalPages,
);
}
} on ExplorerException catch (e) {
throw ExplorerException(
code: e.code, message: '{"address": "${e.message}"}');
}
}