let searchTimeout;
document.getElementById("searchInput").addEventListener("input", function (e) {
clearTimeout(searchTimeout);
const query = e.target.value.trim();
if (query.length < 2) {
document.getElementById("searchResults").innerHTML =
'
Enter at least 2 characters to search
';
return;
}
searchTimeout = setTimeout(() => searchUsers(query), 300);
});
async function searchUsers(query) {
try {
const response = await fetch(
`/api/search-users?q=${encodeURIComponent(query)}`,
{
headers: {
Authorization: `Bearer ${currentToken}`,
},
},
);
if (response.ok) {
searchResults = await response.json();
renderSearchResults();
} else {
console.error("Search failed");
}
} catch (error) {
console.error("Error searching users:", error);
}
}
function renderSearchResults() {
const searchResultsContainer = document.getElementById("searchResults");
searchResultsContainer.innerHTML = "";
if (searchResults.length === 0) {
searchResultsContainer.innerHTML =
'';
return;
}
searchResults.forEach((user) => {
const div = document.createElement("div");
div.className = "chat-item";
const avatarContent = user.avatar_url
? `
`
: user.username.charAt(0).toUpperCase();
div.innerHTML = `
${avatarContent}
${user.username}
${user.phone}
Click to start chatting
`;
div.onclick = () => {
selectChat(user.username, user.phone, user.avatar_url);
showChatTab("existing");
document.getElementById("searchInput").value = "";
if (isMobile) {
hideChatsPanel();
}
};
searchResultsContainer.appendChild(div);
});
}