fix(core): subscribe search not unsubscribe (#11929)

This commit is contained in:
EYHN
2025-04-23 13:56:58 +00:00
parent db5eadb72a
commit 4df75ec5d0
5 changed files with 44 additions and 22 deletions

View File

@@ -260,6 +260,8 @@ export class ChatPanelAddPopover extends SignalWatcher(
@query('.search-input')
accessor searchInput!: HTMLInputElement;
private _menuGroupAbortController = new AbortController();
override connectedCallback() {
super.connectedCallback();
this._updateSearchGroup();
@@ -273,6 +275,7 @@ export class ChatPanelAddPopover extends SignalWatcher(
override disconnectedCallback() {
super.disconnectedCallback();
document.removeEventListener('keydown', this._handleKeyDown);
this._menuGroupAbortController.abort();
}
override render() {
@@ -385,13 +388,15 @@ export class ChatPanelAddPopover extends SignalWatcher(
}
private _updateSearchGroup() {
this._menuGroupAbortController.abort();
this._menuGroupAbortController = new AbortController();
switch (this._mode) {
case AddPopoverMode.Tags: {
this._searchGroups = [
this.searchMenuConfig.getTagMenuGroup(
this._query,
this._addTagChip,
this.abortController.signal
this._menuGroupAbortController.signal
),
];
break;
@@ -401,7 +406,7 @@ export class ChatPanelAddPopover extends SignalWatcher(
this.searchMenuConfig.getCollectionMenuGroup(
this._query,
this._addCollectionChip,
this.abortController.signal
this._menuGroupAbortController.signal
),
];
break;
@@ -410,7 +415,7 @@ export class ChatPanelAddPopover extends SignalWatcher(
const docGroup = this.searchMenuConfig.getDocMenuGroup(
this._query,
this._addDocChip,
this.abortController.signal
this._menuGroupAbortController.signal
);
if (!this._query) {
this._searchGroups = [docGroup];
@@ -418,12 +423,12 @@ export class ChatPanelAddPopover extends SignalWatcher(
const tagGroup = this.searchMenuConfig.getTagMenuGroup(
this._query,
this._addTagChip,
this.abortController.signal
this._menuGroupAbortController.signal
);
const collectionGroup = this.searchMenuConfig.getCollectionMenuGroup(
this._query,
this._addCollectionChip,
this.abortController.signal
this._menuGroupAbortController.signal
);
const nothing = html``;
this._searchGroups = [

View File

@@ -37,12 +37,12 @@ export function patchQuickSearchService(framework: FrameworkProvider) {
searchResult = await new Promise((resolve, reject) =>
framework.get(QuickSearchService).quickSearch.show(
[
framework.get(RecentDocsQuickSearchSession),
framework.get(CreationQuickSearchSession),
framework.get(DocsQuickSearchSession),
framework.get(LinksQuickSearchSession),
framework.get(ExternalLinksQuickSearchSession),
framework.get(JournalsQuickSearchSession),
framework.createEntity(RecentDocsQuickSearchSession),
framework.createEntity(CreationQuickSearchSession),
framework.createEntity(DocsQuickSearchSession),
framework.createEntity(LinksQuickSearchSession),
framework.createEntity(ExternalLinksQuickSearchSession),
framework.createEntity(JournalsQuickSearchSession),
],
result => {
if (result === null) {

View File

@@ -116,4 +116,8 @@ export class DocsQuickSearchSession
setQuery(query: string) {
this.query$.next(query);
}
override dispose(): void {
this.query.unsubscribe();
}
}