Как сделать пагинацию на каналах в 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 находится здесь

Другие вопросы по тегам