links method
override
Returns DirectLinks owned by the authenticated MyUser or the specified Chat-group.
Implementation
@override
Paginated<DirectLinkSlug, DirectLink> links({
UserId? userId,
ChatId? chatId,
}) {
final identifier = _LinkDestination(userId: userId, chatId: chatId);
final existing = _paginates[identifier];
if (existing != null) {
return existing;
}
return _paginates[identifier] = PaginatedImpl(
pagination: Pagination<DirectLink, DirectLinksCursor, DirectLinkSlug>(
perPage: 15,
provider: GraphQlPageProvider(
fetch:
({
int? first,
int? last,
DirectLinksCursor? before,
DirectLinksCursor? after,
}) async {
if (chatId?.isLocal == true) {
return Page([], PageInfo());
}
final query = await _graphQlProvider.directLinks(
chatId: chatId,
by: userId == null
? null
: DirectLinksFilter(
location: DirectLinkLocationInput(userId: userId),
),
pagination: DirectLinksPagination(
first: first,
after: after,
last: last,
before: before,
),
);
return Page(
query.edges
.map((e) => e.node.toDto(cursor: e.cursor))
.map((e) => e.value)
.toList(),
query.pageInfo.toModel(DirectLinksCursor.new),
);
},
),
onKey: (e) => e.slug,
compare: (a, b) => a.compareTo(b),
),
);
}