diff --git a/client/src/components/ConversationList.js b/client/src/components/ConversationList.js
index d81ebb2..38628ad 100644
--- a/client/src/components/ConversationList.js
+++ b/client/src/components/ConversationList.js
@@ -1,6 +1,6 @@
-import List from '@mui/material/List'
-import { useEffect } from "react";
-import ConversationListItem from './ConversationListItem'
+import List from '@mui/material/List';
+import { useEffect } from 'react';
+import ConversationListItem from './ConversationListItem';
 import ListSubheader from '@mui/material/ListSubheader';
 import Conversation from '../../../model/Conversation';
 import { GroupRounded as GroupIcon } from '@mui/icons-material';
@@ -8,31 +8,34 @@
 import { useAppSelector } from '../../redux/hooks';
 
 export default function ConversationList(props) {
-    const { refresh } = useAppSelector((state) => state.app)
+  const { refresh } = useAppSelector((state) => state.app);
 
-    useEffect(() => {
-      console.log("refresh list");
-    }, [refresh])
+  useEffect(() => {
+    console.log('refresh list');
+  }, [refresh]);
 
-    return (
-        <div className="rooms-list">
-            <List>
-                {props.search instanceof Conversation &&
-                (<div>
-                    <ListSubheader>Public directory</ListSubheader>
-                    <ConversationListItem conversation={props.search} />
-                    <ListSubheader>Conversations</ListSubheader>
-                </div>)}
-                {props.conversations.map(conversation =>
-                    <ConversationListItem key={conversation.getId()} conversation={conversation} />
-                )}
-                {props.conversations.length === 0 && (
-                    <div className="list-placeholder">
-                        <GroupIcon color="disabled" fontSize="large"  />
-                        <Typography className="subtitle" variant="subtitle2">No conversation yet</Typography>
-                    </div>
-                )}
-            </List>
-        </div>
-    )
+  return (
+    <div className="rooms-list">
+      <List>
+        {props.search instanceof Conversation && (
+          <div>
+            <ListSubheader>Public directory</ListSubheader>
+            <ConversationListItem conversation={props.search} />
+            <ListSubheader>Conversations</ListSubheader>
+          </div>
+        )}
+        {props.conversations.map((conversation) => (
+          <ConversationListItem key={conversation.getId()} conversation={conversation} />
+        ))}
+        {props.conversations.length === 0 && (
+          <div className="list-placeholder">
+            <GroupIcon color="disabled" fontSize="large" />
+            <Typography className="subtitle" variant="subtitle2">
+              No conversation yet
+            </Typography>
+          </div>
+        )}
+      </List>
+    </div>
+  );
 }
