mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-07-18 23:11:12 +02:00
Merge pull request #5 from fblgit/fix/slack-channel-discovery
Fix: Use live API data for Slack channel discovery
This commit is contained in:
commit
6bd595b83b
2 changed files with 71 additions and 19 deletions
|
|
@ -74,9 +74,8 @@ export default function EditConnectorPage() {
|
||||||
isFetchingRepos,
|
isFetchingRepos,
|
||||||
handleFetchRepositories,
|
handleFetchRepositories,
|
||||||
handleRepoSelectionChange,
|
handleRepoSelectionChange,
|
||||||
// Placeholder functions that would ideally come from the hook
|
discoverSlackChannelsAPI, // Added the actual API function from the hook
|
||||||
// discoverSlackChannels: hookDiscoverSlackChannels,
|
// triggerSlackReindex: hookTriggerSlackReindex, // Placeholder for reindex
|
||||||
// triggerSlackReindex: hookTriggerSlackReindex,
|
|
||||||
} = useConnectorEditPage(connectorId, searchSpaceId);
|
} = useConnectorEditPage(connectorId, searchSpaceId);
|
||||||
|
|
||||||
// State for Slack Channel Management
|
// State for Slack Channel Management
|
||||||
|
|
@ -110,22 +109,18 @@ export default function EditConnectorPage() {
|
||||||
const handleDiscoverChannels = async () => {
|
const handleDiscoverChannels = async () => {
|
||||||
setIsDiscoveringChannels(true);
|
setIsDiscoveringChannels(true);
|
||||||
toast.info("Discovering Slack channels...");
|
toast.info("Discovering Slack channels...");
|
||||||
// Replace with actual API call:
|
|
||||||
// const channels = await hookDiscoverSlackChannels(connectorId);
|
// Call the actual API function from the hook
|
||||||
// For now, using mock data:
|
const actualChannels = await discoverSlackChannelsAPI(connectorId);
|
||||||
await new Promise(resolve => setTimeout(resolve, 1500)); // Simulate API delay
|
|
||||||
const mockChannels: SlackChannelInfo[] = [
|
setDiscoveredChannels(actualChannels);
|
||||||
{ id: "C123", name: "general", is_private: false, is_member: true },
|
|
||||||
{ id: "C456", name: "random", is_private: false, is_member: true },
|
if (actualChannels.length > 0) {
|
||||||
{ id: "C789", name: "dev-team-private", is_private: true, is_member: true },
|
toast.success(`Discovered ${actualChannels.length} channels where the bot is a member.`);
|
||||||
{ id: "CABC", name: "marketing", is_private: false, is_member: false }, // Bot not member
|
|
||||||
];
|
|
||||||
const memberChannels = mockChannels.filter(ch => ch.is_member);
|
|
||||||
setDiscoveredChannels(memberChannels);
|
|
||||||
if (memberChannels.length > 0) {
|
|
||||||
toast.success(`Discovered ${memberChannels.length} channels where bot is a member.`);
|
|
||||||
} else {
|
} else {
|
||||||
toast.warning("No channels found where the bot is a member, or discovery failed.");
|
// The API function itself should show an error toast on failure.
|
||||||
|
// This warning can be for cases where the API call succeeded but returned no channels.
|
||||||
|
toast.warning("No channels found where the bot is a member, or discovery returned no channels.");
|
||||||
}
|
}
|
||||||
setIsDiscoveringChannels(false);
|
setIsDiscoveringChannels(false);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,14 @@ import {
|
||||||
EditConnectorFormValues
|
EditConnectorFormValues
|
||||||
} from '@/components/editConnector/types';
|
} from '@/components/editConnector/types';
|
||||||
|
|
||||||
|
// Define SlackChannelInfo interface as it might not be globally available
|
||||||
|
export interface SlackChannelInfo {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
is_private: boolean;
|
||||||
|
is_member: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
export function useConnectorEditPage(connectorId: number, searchSpaceId: string) {
|
export function useConnectorEditPage(connectorId: number, searchSpaceId: string) {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { connectors, updateConnector, isLoading: connectorsLoading } = useSearchSourceConnectors();
|
const { connectors, updateConnector, isLoading: connectorsLoading } = useSearchSourceConnectors();
|
||||||
|
|
@ -245,5 +253,54 @@ export function useConnectorEditPage(connectorId: number, searchSpaceId: string)
|
||||||
isFetchingRepos,
|
isFetchingRepos,
|
||||||
handleFetchRepositories,
|
handleFetchRepositories,
|
||||||
handleRepoSelectionChange,
|
handleRepoSelectionChange,
|
||||||
|
discoverSlackChannelsAPI, // Add the new function here
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Implementation of discoverSlackChannelsAPI
|
||||||
|
async function discoverSlackChannelsAPI(connectorId: number): Promise<SlackChannelInfo[]> {
|
||||||
|
const token = localStorage.getItem('surfsense_bearer_token');
|
||||||
|
if (!token) {
|
||||||
|
toast.error('Authentication token not found. Please log in again.');
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await fetch(
|
||||||
|
`${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/search-source-connectors/slack/${connectorId}/discover-channels`,
|
||||||
|
{
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'Authorization': `Bearer ${token}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
let errorMsg = 'Failed to discover channels.';
|
||||||
|
try {
|
||||||
|
const errorData = await response.json();
|
||||||
|
errorMsg = errorData.detail || errorMsg;
|
||||||
|
} catch (e) {
|
||||||
|
// Ignore if error response is not JSON
|
||||||
|
}
|
||||||
|
toast.error(`Failed to discover channels: ${errorMsg}`);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = await response.json();
|
||||||
|
if (data && Array.isArray(data.channels)) {
|
||||||
|
// Optional: Add a success toast if needed, e.g.:
|
||||||
|
// toast.success(`Discovered ${data.channels.length} channels.`);
|
||||||
|
return data.channels as SlackChannelInfo[];
|
||||||
|
} else {
|
||||||
|
toast.error('Invalid response format from server when discovering channels.');
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error discovering Slack channels:", error);
|
||||||
|
toast.error(error instanceof Error ? `Error discovering channels: ${error.message}` : "An unknown error occurred while discovering channels.");
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue