feat: Add xoxp/xoxb token support for conversations_unreads #199
+558
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Adds fallback implementation for
conversations_unreadstool that works with xoxp and xoxb tokens.This PR is stacked on top of #171 and includes those commits. It should be reviewed after #171 is merged, or reviewed with the understanding that it builds upon that PR's functionality.
Problem
The current implementation of
conversations_unreads(from #171) uses theClientCountsAPI, which only works with browser session tokens (xoxc/xoxd). When used with OAuth tokens (xoxp/xoxb), it executes without error but returns empty results.Solution
This PR adds an automatic fallback that:
ClientCountsfirst (fast path for xoxc/xoxd)ClientCountsreturns empty resultsconversations.infoto checkunread_counton each channelThis approach was validated in a Python implementation before porting to Go.
Implementation Details
getUnreadsUsingConversationsInfoimplements the per-channel approachClientCountsreturns zero channels and switches to fallbackGetConversationInfoContexttoSlackAPIinterfaceLimitations with xoxp/xoxb tokens
mentions_onlyfilter is not supported (no access to mention counts viaconversations.info)mentions_onlyis requestedlastReadandlatesttimestamps are not available viaconversations.info(returned as empty strings)ClientCountsapproach as it requires one API call per channelTesting
Related
🤖 Generated with Claude Code