Как сделать пагинацию на каналах в twilio-programmable-чате?
Я использую twilio javascript sdk для twilio-programmable-chat.
И я хочу применить нумерацию страниц к своим результатам в каналах, но я не могу понять это.
Вот мой текущий код.
this.chatClient.getUserChannelDescriptors().then(paginator => {
// All channels are fetched
})
Я пытался передать pageSize
похоже на то, как getMessages(10)
работать, но это не сработало.
this.chatClient.getUserChannelDescriptors(10).then(paginator => {
// The result was same, it fetched all the channels instead of just 10
})
Я ищу пример того, как можно сделать пагинацию на каналах. Благодарю.
1 ответ
Наконец-то я нашел способ, как это сделать.
Это нужно делать рекурсивно, так как мы получаем исходный список, вызывая getUserChannelDescriptors()
но тогда остальные записи можно получить, вызвав nextPage()
;
async function processChannels(paginator) {
// Now, if hasNextPage is true
// call nextPage() to get the records instead of getUserChannelDescriptors()
if (paginator.hasNextPage) {
const nextPaginator = paginator.nextPage();
processChannels(nextPaginator);
} else {
console.log("END OF RECORDS");
}
}
async function getChannels() {
const paginator = await chatClient.getUserChannelDescriptors();
// Initiate the recursive function
if (paginator.items) {
await processChannels(paginator);
}
}
И это то, что вы получите при каждом звонке.
Согласно документации, getUserChannelDescriptors
Метод не принимает никаких аргументов.
Но вам не нужно делать пагинацию вручную, так как метод возвращает Promise.<Paginator.<ChannelDescriptor>>
введите..что означает, что вы сможете получить доступ к функциям пагинации, которые предоставляет twilio.
Ваш paginator.items
должны иметь только элементы на одной странице.
РЕДАКТИРОВАТЬ: в основном дело в том, что ваш первый фрагмент правильно. К сожалению, twilio не является открытым исходным кодом, поэтому я не могу проверить, где они определили page_size
именно так. Но я бы посоветовал вам создать, скажем, сто фиктивных каналов, а затем проверить размер paginator.items
массив.
Попробуй это:
this.chatClient.getUserChannelDescriptors().then(paginator => {
console.log(paginator.items, paginator.hasNextPage(), paginator.hasPrevPage());
})
Документация для класса Paginator находится здесь