From 8d30b52fc10b915ddde6bd4ea45dcee1a37b392a Mon Sep 17 00:00:00 2001 From: Maxim Slipenko Date: Sat, 7 Jun 2025 19:17:00 +0300 Subject: [PATCH] exclude current issue from suggestion --- web_src/js/features/comp/TextExpander.js | 4 +++- web_src/js/features/issue.js | 2 +- web_src/js/utils/match.js | 6 ++++-- web_src/js/utils/match.test.js | 7 +++++++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/web_src/js/features/comp/TextExpander.js b/web_src/js/features/comp/TextExpander.js index cc96306716..4d345c24d1 100644 --- a/web_src/js/features/comp/TextExpander.js +++ b/web_src/js/features/comp/TextExpander.js @@ -4,11 +4,13 @@ import {getIssueIcon, getIssueColor,isIssueSuggestionsLoaded, fetchIssueSuggesti import {svg} from '../../svg.js' import {createElementFromHTML} from '../../utils/dom.js'; import { GET } from '../../modules/fetch.js'; +import {parseIssueHref} from '../../utils.js' async function issueSuggestions(text) { const key = '#'; - const matches = matchIssue(text); + const issuePathInfo = parseIssueHref(window.location.href); + const matches = matchIssue(text, Number(issuePathInfo.index)); if (!matches.length) return {matched: false}; const ul = document.createElement('ul'); diff --git a/web_src/js/features/issue.js b/web_src/js/features/issue.js index 44a65eea4c..5eba97dc3c 100644 --- a/web_src/js/features/issue.js +++ b/web_src/js/features/issue.js @@ -36,7 +36,7 @@ export function isIssueSuggestionsLoaded() { return !!window.config.issueValues } -async function fetchIssueSuggestions() { +export async function fetchIssueSuggestions() { const issuePathInfo = parseIssueHref(window.location.href); if (!issuePathInfo.ownerName) { const repoOwnerPathInfo = parseRepoOwnerPathInfo(window.location.pathname); diff --git a/web_src/js/utils/match.js b/web_src/js/utils/match.js index 982b54336d..724bfd3367 100644 --- a/web_src/js/utils/match.js +++ b/web_src/js/utils/match.js @@ -44,8 +44,10 @@ export function matchMention(queryText) { return sortAndReduce(results); } -export function matchIssue(queryText) { - const issues = window.config.issueValues ?? []; +export function matchIssue(queryText, currentIssue = null) { + const issues = (window.config.issueValues ?? []).filter( + issue => issue.number !== currentIssue + ); const query = queryText.toLowerCase().trim(); if (!query) { diff --git a/web_src/js/utils/match.test.js b/web_src/js/utils/match.test.js index 102993f95d..aa918e89f4 100644 --- a/web_src/js/utils/match.test.js +++ b/web_src/js/utils/match.test.js @@ -52,6 +52,7 @@ test('matchMention', () => { test('matchIssue', () => { expect(matchIssue('')).toEqual(window.config.issueValues.slice(0, 6)); expect(matchIssue('1')).toEqual([window.config.issueValues[9], window.config.issueValues[0]]); + expect(matchIssue('1', 1)).toEqual([window.config.issueValues[0]]); expect(matchIssue('issue')).toEqual([ window.config.issueValues[0], window.config.issueValues[1], @@ -59,4 +60,10 @@ test('matchIssue', () => { window.config.issueValues[7], window.config.issueValues[9], ]); + expect(matchIssue('issue', 10)).toEqual([ + window.config.issueValues[1], + window.config.issueValues[2], + window.config.issueValues[7], + window.config.issueValues[9], + ]); }); \ No newline at end of file