diff --git a/models/Conversation.js b/models/Conversation.js index e237b5ffcf..69743c5d37 100644 --- a/models/Conversation.js +++ b/models/Conversation.js @@ -1,5 +1,5 @@ const mongoose = require('mongoose'); -const { Message } = require('./Message'); +const { getMessages } = require('./Message'); const convoSchema = mongoose.Schema({ conversationId: { @@ -27,7 +27,7 @@ const Conversation = module.exports = { saveConversation: async ({ conversationId, parentMessageId, title }) => { - const messages = await Message.find({ conversationId }).exec(); + const messages = await getMessages({ conversationId }); const update = { parentMessageId, messages }; if (title) { update.title = title; diff --git a/models/Message.js b/models/Message.js index caf1d5affc..98691ab2c5 100644 --- a/models/Message.js +++ b/models/Message.js @@ -40,5 +40,5 @@ module.exports = { text }); }, - Message, + getMessages: async (filter) => await Message.find(filter).exec(), } \ No newline at end of file diff --git a/models/dbConnect.js b/models/dbConnect.js index 385d058838..f9a8455442 100644 --- a/models/dbConnect.js +++ b/models/dbConnect.js @@ -1,3 +1,4 @@ +require('dotenv').config(); const mongoose = require('mongoose'); const MONGO_URI = process.env.MONGO_URI; diff --git a/server/index.js b/server/index.js index 8909035473..67c3b05d6d 100644 --- a/server/index.js +++ b/server/index.js @@ -1,7 +1,7 @@ const express = require('express'); -const { ask, titleConversation } = require('../app/chatgpt'); const dbConnect = require('../models/dbConnect'); -const { saveMessage } = require('../models/Message'); +const { ask, titleConversation } = require('../app/chatgpt'); +const { saveMessage, getMessages } = require('../models/Message'); const { saveConversation, getConversations } = require('../models/Conversation'); const crypto = require('crypto'); const path = require('path'); @@ -25,8 +25,9 @@ app.get('/convos', async (req, res) => { res.status(200).send(await getConversations()); }); -app.get('/messages', async (req, res) => { - res.status(200).send(await getConversations()); +app.get('/messages/:conversationId', async (req, res) => { + const { conversationId } = req.params; + res.status(200).send(await getMessages({ conversationId })); }); app.post('/ask', async (req, res) => { @@ -44,7 +45,8 @@ app.post('/ask', async (req, res) => { }); let i = 0; - const progressCallback = async (partial) => { // console.log('partial', partial); + const progressCallback = async (partial) => { + // console.log('partial', partial); if (i === 0) { userMessage.parentMessageId = parentMessageId ? parentMessageId : partial.id; userMessage.conversationId = conversationId ? conversationId : partial.conversationId; @@ -58,7 +60,6 @@ app.post('/ask', async (req, res) => { let gptResponse = await ask(text, progressCallback, { parentMessageId, conversationId }); if (!!parentMessageId) { - // console.log('req parent vs res parent', parentMessageId, gptResponse.parentMessageId); gptResponse = { ...gptResponse, parentMessageId }; } else { gptResponse.title = await titleConversation(text, gptResponse.text); diff --git a/src/App.jsx b/src/App.jsx index 832cc57ed8..96153385b5 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,10 +1,11 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import Messages from './components/Messages'; import TextChat from './components/TextChat'; import Nav from './components/Nav'; import MobileNav from './components/MobileNav'; import useSWR from 'swr'; import useSWRMutation from 'swr/mutation'; +import useDidMountEffect from './hooks/useDidMountEffect.js'; import axios from 'axios'; const fetcher = (url) => fetch(url).then((res) => res.json()); @@ -13,23 +14,32 @@ const App = () => { const [messages, setMessages] = useState([]); const [convo, setConvo] = useState({ conversationId: null, parentMessageId: null }); const { data, error, isLoading, mutate } = useSWR('http://localhost:3050/convos', fetcher); - const { trigger, isMutating } = useSWRMutation('http://localhost:3050/messages', fetcher, { - onSuccess: function (res) { - console.log('success', res); - // setMessages(res); + + const { trigger, isMutating } = useSWRMutation( + `http://localhost:3050/messages/${convo.conversationId}`, + fetcher, + { + onSuccess: function (res) { + console.log('success', res); + setMessages(res); + } } - }); + ); + + useDidMountEffect(() => trigger(), [convo]); const onConvoClick = (conversationId, parentMessageId) => { + console.log('convo was clicked'); setConvo({ conversationId, parentMessageId }); - trigger(); - // console.log(e, e.target); }; return (
{/*
*/} -