Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Paginate through slack channels #38

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

sej3506
Copy link

@sej3506 sej3506 commented Feb 21, 2022

Problem

If there are over 1000 slack channels in an organization, which is
entirely possible with the ability to archive channels, the call method
in loads_slack_channels would only retrieve the first 1000.

Solution

This change adds a method to follow any pagination cursors and combine
channel list pages together to ensure we have a complete channel list.

This change also makes use of the exclude_archived argument for
conversations_list which will (on Slack's side) throw out any archived
channels. A snippet to keep in mind from Slack's docs:

"When paginating, any filters used in the request are applied after
retrieving a virtual page's limit. For example. using
exclude_archived=true when limit=20 on a virtual page that would contain
15 archived channels will return you the virtual page with only 5
results. Additional results are available from the next cursor
valuePaginate through slack channels."

If there are over 1000 slack channels in an organization, which is
entirely possible with the ability to archive channels, the call method
in loads_slack_channels would only retrieve the first 1000.

This change adds a method to follow any pagination cursors and combine
channel list pages together to ensure we have a complete channel list.

This change also makes use of the exclude_archived argument for
conversations_list which will (on Slack's side) throw out any archived
channels. A snippet to keep in mind from Slack's docs:

https://api.slack.com/methods/conversations.list
"When paginating, any filters used in the request are applied after
retrieving a virtual page's limit. For example. using
exclude_archived=true when limit=20 on a virtual page that would contain
15 archived channels will return you the virtual page with only 5
results. Additional results are available from the next cursor
valuePaginate through slack channels."
Changing get_paged_chanels to take keyword args.
Updating the loads_slack_channels spec for testing pagination to include
the pagination cursor.
Including types when calling get_paged_channels (bug fix)
@tuxagon
Copy link
Collaborator

tuxagon commented Feb 14, 2024

@sej3506 apologies for such a long time before anyone responded (mostly my fault). This project went through a whirlwind of initial changes based on some internal experimentation we were doing and the repo happened to be public for GitHub Actions. I didn't initially have the extra bandwidth to give the project support with external contributions and I let this fall through the cracks.

The two PRs you worked on are valuable; they simply became something I kept putting off responding to for much longer than I anticipated. If you're still interested in getting these merged, they'll need updated. I will ensure they get merged this time around. No worries if you're no longer interested.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants