diff --git a/back/api/channels.js b/back/api/channels.js index 53d1393..ad353e8 100644 --- a/back/api/channels.js +++ b/back/api/channels.js @@ -35,7 +35,7 @@ router.get('/:name', async (req, res) => { if (channel[0]) { res.send(channel[0]); } else { - res.send('No channel found'); + res.status(400).send({ error: 'No channel found' }); } }); diff --git a/back/api/users.js b/back/api/users.js index c4435b7..386653e 100644 --- a/back/api/users.js +++ b/back/api/users.js @@ -21,7 +21,7 @@ router.get('/:username', async (req, res) => { if (user[0]) { res.send({id: user[0].id, username: user[0].username, admin: user[0].admin}); } else { - res.send('No user found'); + return res.status(400).send({ error: 'No user found' }); } }); diff --git a/front/src/components/MessageComponent.tsx b/front/src/components/MessageComponent.tsx index 32ef3e4..fda3185 100644 --- a/front/src/components/MessageComponent.tsx +++ b/front/src/components/MessageComponent.tsx @@ -21,10 +21,10 @@ export default function MessageComponent({ message, user, channel, deleteMessage if (word.startsWith("@")) { const mention = message.mentions.find((mention) => `@${mention.username}` === word); if (mention) { - return {word} ; + return {word} ; } } else if (word.startsWith("https://") || word.startsWith("http://")) { - return {word} + return {word} } return {word} ; })} diff --git a/front/src/pages/ChannelPage.tsx b/front/src/pages/ChannelPage.tsx index 5945b53..57db881 100644 --- a/front/src/pages/ChannelPage.tsx +++ b/front/src/pages/ChannelPage.tsx @@ -17,6 +17,7 @@ export default function ChannelPage({socket}: {socket: WebSocket}) { const [message, setMessage] = useState(""); const [maxMessageToShown, setMaxMessageToShown] = useState(10); const [searchedUsers, setSearchedUsers] = useState([]); + const [noChannel, setNoChannel] = useState(false); const ref = React.createRef(); function handleSubmit(e: React.FormEvent) { @@ -64,18 +65,32 @@ export default function ChannelPage({socket}: {socket: WebSocket}) { const localToken = localStorage.getItem("token"); if (localToken) { setToken(localToken); - axios.post("/api/auth/me", { token: localToken }).then((res) => { + axios + .post("/api/auth/me", { token: localToken }).then((res) => { setUser(res.data); - } - ); + }) + .catch((err) => { + console.error(err.response.data); + }); } - axios.get(`/api/channels/${name}`).then((res) => { - setChannel(res.data); - }); + axios + .get(`/api/channels/${name}`).then((res) => { + setChannel(res.data); + }) + .catch((err) => { + if (err.response.data.error === 'No channel found') { + setNoChannel(true); + } + console.error(err.response.data); + }); - axios.get(`/api/channels/${name}/messages`).then((res) => { - setMessages(res.data); - }); + axios + .get(`/api/channels/${name}/messages`).then((res) => { + setMessages(res.data); + }) + .catch((err) => { + console.error(err.response.data); + }); }, [name]); useEffect(() => { @@ -93,8 +108,6 @@ export default function ChannelPage({socket}: {socket: WebSocket}) { }); }, [channel]) - console.log(channel) - useEffect(() => { const words = message.toString().split(" "); const lastWord = words[words.length - 1]; @@ -107,15 +120,27 @@ export default function ChannelPage({socket}: {socket: WebSocket}) { setSearchedUsers(res.data); }) .catch((err) => { - console.error(err.response); + console.error(err.response.data); }); } else { setSearchedUsers([]); } }, [message]); + if (noChannel) { + return ( +
+ +
+

Channel Not Found

+

Sorry, the channel you are looking for does not exist.

+ Go back to the homepage +
+
+ ) + } - if (!channel || !messages) { + if (!channel) { return (
@@ -184,20 +209,25 @@ export default function ChannelPage({socket}: {socket: WebSocket}) { Register
)} -
- {messages.slice(0, maxMessageToShown).map((message) => ( - - ))} - {messages.length > maxMessageToShown && ( - - )} -
+ {messages ? ( +
+ {messages?.length === 0 &&

No messages yet.

} + {messages.slice(0, maxMessageToShown).map((message) => ( + + ))} + {messages.length > maxMessageToShown && ( + + )} +
+ ) : ( +

Loading messages...

+ )} ); diff --git a/front/src/pages/UserPage.tsx b/front/src/pages/UserPage.tsx index 9720937..a2a777f 100644 --- a/front/src/pages/UserPage.tsx +++ b/front/src/pages/UserPage.tsx @@ -12,6 +12,7 @@ export default function UserPage({socket}: {socket: WebSocket}) { const [pageUser, setPageUser] = useState(); const [messages, setMessages] = useState(); const [user, setUser] = useState(); + const [noUser, setNoUser] = useState(false); useEffect(() => { const localToken = localStorage.getItem("token"); @@ -31,7 +32,10 @@ export default function UserPage({socket}: {socket: WebSocket}) { setPageUser(res.data); }) .catch((err) => { - console.error(err.response); + if (err.response.data.error === "No user found") { + setNoUser(true); + } + console.error(err.response.data); }); axios @@ -40,7 +44,7 @@ export default function UserPage({socket}: {socket: WebSocket}) { setMessages(res.data); }) .catch((err) => { - console.error(err.response); + console.error(err.response.data); }); }, [username]); @@ -59,6 +63,19 @@ export default function UserPage({socket}: {socket: WebSocket}) { } }); }, [pageUser]); + + if (noUser) { + return ( +
+ +
+

User Not Found

+

Sorry, the user you are looking for does not exist.

+ Go back to the homepage +
+
+ ) + } if (!pageUser) { return (