Skip to content

Commit

Permalink
k
Browse files Browse the repository at this point in the history
  • Loading branch information
pablonyx committed Feb 5, 2025
1 parent f04f4d7 commit d3ffbbd
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 16 deletions.
12 changes: 6 additions & 6 deletions backend/onyx/db/slack_bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,9 @@ def fetch_slack_bot_tokens(
db_session: Session, slack_bot_id: int
) -> dict[str, str] | None:
slack_bot = db_session.scalar(select(SlackBot).where(SlackBot.id == slack_bot_id))
if slack_bot:
return {
"app_token": slack_bot.app_token,
"bot_token": slack_bot.bot_token,
}
return None
if not slack_bot:
return None
return {
"app_token": slack_bot.app_token,
"bot_token": slack_bot.bot_token,
}
9 changes: 9 additions & 0 deletions backend/onyx/server/manage/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -281,3 +281,12 @@ class AllUsersResponse(BaseModel):
accepted_pages: int
invited_pages: int
slack_users_pages: int


class SlackChannel(BaseModel):
id: str
name: str


class SlackChannelsResponse(BaseModel):
channels: dict[str, SlackChannel]
33 changes: 24 additions & 9 deletions backend/onyx/server/manage/slack_bot.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from typing import Dict

from fastapi import APIRouter
from fastapi import Depends
from fastapi import HTTPException
Expand Down Expand Up @@ -30,8 +28,10 @@
from onyx.onyxbot.slack.config import validate_channel_name
from onyx.server.manage.models import SlackBot
from onyx.server.manage.models import SlackBotCreationRequest
from onyx.server.manage.models import SlackChannel
from onyx.server.manage.models import SlackChannelConfig
from onyx.server.manage.models import SlackChannelConfigCreationRequest
from onyx.server.manage.models import SlackChannelsResponse
from onyx.server.manage.validate_tokens import validate_app_token
from onyx.server.manage.validate_tokens import validate_bot_token
from onyx.utils.telemetry import create_milestone_and_report
Expand Down Expand Up @@ -341,13 +341,12 @@ def list_bot_configs(

@router.get(
"/admin/slack-app/bots/{bot_id}/channels_from_slack_api",
response_model=Dict[str, str],
)
def get_all_channels_from_slack_api(
bot_id: int,
db_session: Session = Depends(get_session),
_: User | None = Depends(current_admin_user),
) -> Dict[str, str]:
) -> SlackChannelsResponse:
tokens = fetch_slack_bot_tokens(db_session, bot_id)
if not tokens or "bot_token" not in tokens:
raise HTTPException(
Expand All @@ -358,10 +357,26 @@ def get_all_channels_from_slack_api(
client = WebClient(token=bot_token)

try:
response = client.conversations_list(limit=1000)
channels = {channel["name"]: channel["id"] for channel in response["channels"]}
return channels
except SlackApiError:
channels = {}
cursor = None
while True:
response = client.conversations_list(
types="public_channel,private_channel",
exclude_archived=True,
limit=1000,
cursor=cursor,
)
for channel in response["channels"]:
channels[channel["name"]] = SlackChannel(
id=channel["id"], name=channel["name"]
)

cursor = response.get("response_metadata", {}).get("next_cursor")
if not cursor:
break

return SlackChannelsResponse(channels=channels)
except SlackApiError as e:
raise HTTPException(
status_code=500, detail="Error fetching channels from Slack API"
status_code=500, detail=f"Error fetching channels from Slack API: {str(e)}"
)
2 changes: 1 addition & 1 deletion web/src/components/ui/badge.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const badgeVariants = cva(
canceled:
"border-gray-200 bg-gray-50 text-gray-600 hover:bg-gray-75 dark:bg-gray-900 dark:text-neutral-50 dark:hover:bg-gray-850",
orange:
"border-orange-200 bg-orange-50 text-orange-600 h`over:bg-orange-75 dark:bg-orange-900 dark:text-neutral-50 dark:hover:bg-orange-850",
"border-orange-200 bg-orange-50 text-orange-600 hover:bg-orange-75 dark:bg-orange-900 dark:text-neutral-50 dark:hover:bg-orange-850",
paused:
"border-amber-200 bg-amber-50 text-amber-600 hover:bg-amber-75 dark:bg-amber-900 dark:text-neutral-50 dark:hover:bg-amber-850",
in_progress:
Expand Down

0 comments on commit d3ffbbd

Please sign in to comment.