diff --git a/js/directory.js b/js/directory.js index bbf646a4d7..6f277588b5 100644 --- a/js/directory.js +++ b/js/directory.js @@ -273,10 +273,24 @@ function filterEntries(mode, s) { || (entry.displayName || '').toLowerCase().includes(query) || includesQuery(entry.shortDescr, query) || includesQuery(entry.welcomeMessage, query) + || simplexNameIncludesQuery(entry.simplexName, query) ) ); } +function simplexNameIncludesQuery(name, query) { + if (!name) return false; + const q = normalizeSimplexName(query); + return q !== '' && normalizeSimplexName(name).includes(q); +} + +function normalizeSimplexName(s) { + s = s.toLowerCase(); + if (s.startsWith('#') || s.startsWith('@')) s = s.slice(1); + if (s.endsWith('.simplex')) s = s.slice(0, -'.simplex'.length); + return s; +} + function includesQuery(field, query) { return field && Array.isArray(field) @@ -381,7 +395,7 @@ function displayEntries(entries) { for (let entry of entries) { try { - const { entryType, displayName, groupLink, shortDescr, welcomeMessage, imageFile } = entry; + const { entryType, displayName, simplexName, groupLink, shortDescr, welcomeMessage, imageFile } = entry; const entryDiv = document.createElement('div'); entryDiv.className = 'entry w-full flex flex-col items-start md:flex-row rounded-[4px] overflow-hidden shadow-[0px_20px_30px_rgba(0,0,0,0.12)] dark:shadow-none bg-white dark:bg-[#0B2A59] mb-8'; @@ -393,6 +407,13 @@ function displayEntries(entries) { nameElement.className = 'text-grey-black dark:text-white !text-lg md:!text-xl font-bold'; textContainer.appendChild(nameElement); + if (simplexName) { + const simplexNameElement = document.createElement('p'); + simplexNameElement.textContent = simplexName; + simplexNameElement.className = 'text-sm font-medium'; + textContainer.appendChild(simplexNameElement); + } + const welcomeMessageHTML = welcomeMessage ? renderMarkdown(welcomeMessage) : undefined; const shortDescrHTML = shortDescr ? renderMarkdown(shortDescr) : undefined; if (shortDescrHTML && welcomeMessageHTML?.includes(shortDescrHTML) !== true) {