diff --git a/api/server/routes/search.js b/api/server/routes/search.js index 36c68cc2b..5c7846aee 100644 --- a/api/server/routes/search.js +++ b/api/server/routes/search.js @@ -1,40 +1,17 @@ -const { Keyv } = require('keyv'); const express = require('express'); const { MeiliSearch } = require('meilisearch'); -const { Conversation } = require('~/models/Conversation'); const requireJwtAuth = require('~/server/middleware/requireJwtAuth'); -const { Message } = require('~/models/Message'); const { isEnabled } = require('~/server/utils'); -const keyvRedis = require('~/cache/keyvRedis'); const router = express.Router(); -const expiration = 60 * 1000; -const cache = isEnabled(process.env.USE_REDIS) - ? new Keyv({ store: keyvRedis }) - : new Keyv({ namespace: 'search', ttl: expiration }); - router.use(requireJwtAuth); -router.get('/sync', async function (req, res) { - await Message.syncWithMeili(); - await Conversation.syncWithMeili(); - res.send('synced'); -}); - -router.get('/test', async function (req, res) { - const { q } = req.query; - const messages = ( - await Message.meiliSearch(q, { attributesToHighlight: ['text'] }, true) - ).hits.map((message) => { - const { _formatted, ...rest } = message; - return { ...rest, searchResult: true, text: _formatted.text }; - }); - res.send(messages); -}); - router.get('/enable', async function (req, res) { - let result = false; + if (!isEnabled(process.env.SEARCH)) { + return res.send(false); + } + try { const client = new MeiliSearch({ host: process.env.MEILI_HOST, @@ -42,8 +19,7 @@ router.get('/enable', async function (req, res) { }); const { status } = await client.health(); - result = status === 'available' && !!process.env.SEARCH; - return res.send(result); + return res.send(status === 'available'); } catch (error) { return res.send(false); } diff --git a/client/src/components/Chat/ChatView.tsx b/client/src/components/Chat/ChatView.tsx index a180bb92e..bce6974c1 100644 --- a/client/src/components/Chat/ChatView.tsx +++ b/client/src/components/Chat/ChatView.tsx @@ -1,4 +1,4 @@ -import { memo, useCallback } from 'react'; +import { memo, useMemo, useCallback } from 'react'; import { useRecoilValue } from 'recoil'; import { useForm } from 'react-hook-form'; import { useParams } from 'react-router-dom'; @@ -19,6 +19,16 @@ import Header from './Header'; import Footer from './Footer'; import store from '~/store'; +function LoadingSpinner() { + return ( +