Bug 1900940 - Render chat sidebar content for configured provider r=tarek

Support rendering providers but keep list empty for now. Show selected provider including custom and render content browser.

Differential Revision: https://phabricator.services.mozilla.com/D212836
This commit is contained in:
Ed Lee
2024-06-15 17:32:54 +00:00
parent 4e501ab8cc
commit 816c5347ed
9 changed files with 208 additions and 3 deletions

View File

@@ -22,8 +22,15 @@ XPCOMUtils.defineLazyPreferenceGetter(
"chatProvider",
"browser.ml.chat.provider"
);
XPCOMUtils.defineLazyPreferenceGetter(
lazy,
"chatSidebar",
"browser.ml.chat.sidebar"
);
export const GenAI = {
chatProviders: new Map(),
/**
* Build prompts menu to ask chat for context menu or popup.
*
@@ -45,7 +52,9 @@ export const GenAI = {
try {
prompt = JSON.parse(prompt);
} catch (ex) {}
menu.appendItem(prompt.label ?? prompt, prompt.value ?? "");
menu
.appendItem(prompt.label ?? prompt, prompt.value ?? "")
.addEventListener("command", this.handleAskChat.bind(this));
} catch (ex) {
console.error("Failed to add menu item for " + pref, ex);
}
@@ -78,7 +87,7 @@ export const GenAI = {
*
* @param {Event} event from menu command
*/
handleAskChat({ target }) {
async handleAskChat({ target }) {
const win = target.ownerGlobal;
const { selectedTab } = win.gBrowser;
const url = new URL(lazy.chatProvider);
@@ -90,7 +99,12 @@ export const GenAI = {
selection: target.closest("menu").context.selectionInfo.fullText ?? "",
})
);
win.openWebLinkIn(url + "", "tab", { relatedToCurrent: true });
if (lazy.chatSidebar) {
await win.SidebarController.show("viewGenaiChatSidebar");
win.SidebarController.browser.contentWindow.request(url);
} else {
win.openWebLinkIn(url + "", "tab", { relatedToCurrent: true });
}
},
/**