added live search for ContactForm.tsx

This commit is contained in:
slawk0
2024-12-01 11:26:14 +01:00
parent 0e26a68f1c
commit 679abd1c55
4 changed files with 105 additions and 7 deletions

View File

@@ -670,6 +670,20 @@ async function getConversationsForUser(user_id) {
}
}
async function contactSuggestion(username) {
const query = `
SELECT username FROM accounts
WHERE LOWER(username) LIKE $1
LIMIT 5;
`;
try {
const result = await client.query(query, [`%${username.toLowerCase()}%`]);
return result.rows.map((row) => row.username);
} catch (e) {
console.error("Failed to fetch contact suggestions", e);
return [];
}
}
function getTime() {
return new Date();
}
@@ -692,4 +706,5 @@ module.exports = {
addMemberToGroup,
addMemberToGroupByUsername,
getConversationsForUser,
contactSuggestion,
};

View File

@@ -42,6 +42,7 @@ const {
createGroup,
addMemberToGroup,
addMemberToGroupByUsername,
contactSuggestion,
} = require("./db/db");
const { extname } = require("node:path");
@@ -271,6 +272,28 @@ app.get("/api/chat/contacts", authorizeUser, async (req, res) => {
return res.status(200).json(contacts);
});
app.get(
"/api/chat/contacts/suggestions/:contact",
authorizeUser,
async (req, res) => {
const contact = req.params.contact;
if (!contact) {
return res.status(401).json({
message: "contact not provided",
});
}
try {
const suggestions = await contactSuggestion(contact);
console.log(
`contacts suggestions for contact: ${contact}, suggestions: ${suggestions}`,
);
return res.status(200).json(suggestions);
} catch (e) {
res.status(500).json({ message: "Failed to get contact suggestions" });
}
},
);
app.get("/api/chat/messages/:contact", authorizeUser, async (req, res) => {
if (!req.params.contact) {
return res.status(400).json({ message: "Missing contact parameter" });