mirror of
https://github.com/discourse/discourse-ai.git
synced 2025-07-29 17:33:27 +00:00
65 lines
2.1 KiB
JavaScript
65 lines
2.1 KiB
JavaScript
import { withPluginApi } from "discourse/lib/plugin-api";
|
|
import AiBotSidebarNewConversation from "../discourse/components/ai-bot-sidebar-new-conversation";
|
|
import { AI_CONVERSATIONS_PANEL } from "../discourse/services/ai-conversations-sidebar-manager";
|
|
|
|
export default {
|
|
name: "ai-conversations-sidebar",
|
|
|
|
initialize() {
|
|
withPluginApi((api) => {
|
|
const siteSettings = api.container.lookup("service:site-settings");
|
|
if (!siteSettings.ai_bot_enable_dedicated_ux) {
|
|
return;
|
|
}
|
|
|
|
const currentUser = api.container.lookup("service:current-user");
|
|
if (!currentUser) {
|
|
return;
|
|
}
|
|
|
|
const aiConversationsSidebarManager = api.container.lookup(
|
|
"service:ai-conversations-sidebar-manager"
|
|
);
|
|
aiConversationsSidebarManager.api = api;
|
|
|
|
api.addSidebarPanel(
|
|
(BaseCustomSidebarPanel) =>
|
|
class AiConversationsSidebarPanel extends BaseCustomSidebarPanel {
|
|
key = AI_CONVERSATIONS_PANEL;
|
|
hidden = true;
|
|
displayHeader = false; // this would add a misplaced back to forum button
|
|
expandActiveSection = true;
|
|
}
|
|
);
|
|
|
|
api.renderInOutlet(
|
|
"before-sidebar-sections",
|
|
AiBotSidebarNewConversation
|
|
);
|
|
|
|
const setSidebarPanel = (transition) => {
|
|
if (transition?.to?.name === "discourse-ai-bot-conversations") {
|
|
return aiConversationsSidebarManager.forceCustomSidebar();
|
|
}
|
|
|
|
const topic = api.container.lookup("controller:topic").model;
|
|
// if the topic is not a private message, not created by the current user,
|
|
// or doesn't have a bot response, we don't need to override sidebar
|
|
if (
|
|
topic?.archetype === "private_message" &&
|
|
topic.user_id === currentUser.id &&
|
|
topic.is_bot_pm
|
|
) {
|
|
return aiConversationsSidebarManager.forceCustomSidebar();
|
|
}
|
|
|
|
aiConversationsSidebarManager.stopForcingCustomSidebar();
|
|
};
|
|
|
|
api.container
|
|
.lookup("service:router")
|
|
.on("routeDidChange", setSidebarPanel);
|
|
});
|
|
},
|
|
};
|