update imports for React 18

Change-Id: Ibc75ce532003a478b31d5d85d84c83a017262041
diff --git a/client/src/components/AccountPreferences.js b/client/src/components/AccountPreferences.js
index 0c62204..68509f2 100644
--- a/client/src/components/AccountPreferences.js
+++ b/client/src/components/AccountPreferences.js
@@ -1,4 +1,4 @@
-import React, { useState } from 'react'
+import { useState } from 'react'
 
 import { List, ListItem, ListItemIcon, ListItemSecondaryAction, ListItemText, ListSubheader, Switch, Typography, Grid, Paper, CardContent, Card, TableContainer, Table, TableHead, TableRow, TableCell, TableBody, Toolbar, IconButton, ListItemAvatar, Input, TextField } from '@mui/material'
 import { PhoneCallbackRounded, GroupRounded, DeleteRounded, AddCircle } from '@mui/icons-material'
diff --git a/client/src/components/ContactList.js b/client/src/components/ContactList.js
index ec04cef..f3f4efa 100644
--- a/client/src/components/ContactList.js
+++ b/client/src/components/ContactList.js
@@ -2,7 +2,7 @@
 import authManager from "../AuthManager";
 import ConversationAvatar from "./ConversationAvatar";
 import Modal from 'react-modal';
-import React, { useState, useEffect } from "react";
+import { useState, useEffect } from "react";
 import { Person } from "@mui/icons-material";
 import { useAppDispatch, useAppSelector } from "../../redux/hooks";
 import { ListItem, ListItemAvatar, ListItemText } from "@mui/material";
diff --git a/client/src/components/ConversationAvatar.js b/client/src/components/ConversationAvatar.js
index 9d19f25..ea9fcb0 100644
--- a/client/src/components/ConversationAvatar.js
+++ b/client/src/components/ConversationAvatar.js
@@ -1,4 +1,3 @@
-import React from 'react'
 import { Avatar } from '@mui/material'
 
 export default function ConversationAvatar({displayName,...props}) {
diff --git a/client/src/components/ConversationList.js b/client/src/components/ConversationList.js
index 28ecbd5..d81ebb2 100644
--- a/client/src/components/ConversationList.js
+++ b/client/src/components/ConversationList.js
@@ -1,5 +1,5 @@
 import List from '@mui/material/List'
-import React, { useEffect } from "react";
+import { useEffect } from "react";
 import ConversationListItem from './ConversationListItem'
 import ListSubheader from '@mui/material/ListSubheader';
 import Conversation from '../../../model/Conversation';
diff --git a/client/src/components/ConversationListItem.js b/client/src/components/ConversationListItem.js
index 36932bf..e0b8e49 100644
--- a/client/src/components/ConversationListItem.js
+++ b/client/src/components/ConversationListItem.js
@@ -1,12 +1,10 @@
-import React, { useEffect } from 'react';
 import Modal from 'react-modal';
 import authManager from '../AuthManager'
 import ConversationAvatar from './ConversationAvatar'
 import Conversation from '../../../model/Conversation'
-import React, { useState } from "react";
+import { useState } from "react";
 import { useNavigate, useParams } from "react-router-dom"
-import { ListItem, ListItemAvatar, ListItemText, Box, Typography } from '@mui/material'
-import { Button, Stack, Typography, Modal as ModalUM } from "@mui/material"
+import { ListItem, Stack, ListItemAvatar, ListItemText, Box, Typography } from '@mui/material'
 import { RemoveContactIcon, VideoCallIcon } from './svgIcons';
 import { AudioCallIcon, BlockContactIcon, ContactDetailsIcon, CrossIcon, MessageIcon } from './svgIcons';
 import { QRCodeCanvas} from 'qrcode.react';
diff --git a/client/src/components/ConversationView.js b/client/src/components/ConversationView.js
index ba9b932..9d12665 100644
--- a/client/src/components/ConversationView.js
+++ b/client/src/components/ConversationView.js
@@ -1,4 +1,4 @@
-import React, { useCallback, useContext, useEffect, useState } from 'react';
+import { useCallback, useContext, useEffect, useState } from 'react'
 import MessageList from './MessageList';
 import SendMessageForm from './SendMessageForm';
 import Conversation from '../../../model/Conversation';
diff --git a/client/src/components/ConversationsOverviewCard.js b/client/src/components/ConversationsOverviewCard.js
index 89f8576..04f74f5 100644
--- a/client/src/components/ConversationsOverviewCard.js
+++ b/client/src/components/ConversationsOverviewCard.js
@@ -1,4 +1,4 @@
-import React, { useEffect, useState } from 'react';
+import { useEffect, useState } from 'react'
 import { Card, CardActionArea, CardContent, CircularProgress, Typography } from '@mui/material';
 import { useNavigate, useParams } from 'react-router';
 import authManager from '../AuthManager'
diff --git a/client/src/components/Header.js b/client/src/components/Header.js
index c2dc29e..0c3eda4 100644
--- a/client/src/components/Header.js
+++ b/client/src/components/Header.js
@@ -1,4 +1,4 @@
-import React, { useState } from 'react'
+import { useState } from 'react'
 import { Box, Button, Menu, MenuItem } from '@mui/material'
 import { useNavigate, useParams } from "react-router-dom"
 import authManager from '../AuthManager'
diff --git a/client/src/components/JamiIdCard.js b/client/src/components/JamiIdCard.js
index 32949d6..b999780a 100644
--- a/client/src/components/JamiIdCard.js
+++ b/client/src/components/JamiIdCard.js
@@ -1,4 +1,3 @@
-import React from 'react';
 import { Box, Card, CardContent, Typography } from '@mui/material';
 
 export default function JamiIdCard(props) {
diff --git a/client/src/components/ListItemLink.js b/client/src/components/ListItemLink.js
index a0ebc3b..c72a268 100644
--- a/client/src/components/ListItemLink.js
+++ b/client/src/components/ListItemLink.js
@@ -1,4 +1,4 @@
-import React, { useMemo, forwardRef } from 'react';
+import { useMemo, forwardRef } from 'react'
 import PropTypes from 'prop-types';
 import ListItem from '@mui/material/ListItem';
 import ListItemIcon from '@mui/material/ListItemIcon';
diff --git a/client/src/components/Message.js b/client/src/components/Message.js
index 44d423a..e22d863 100644
--- a/client/src/components/Message.js
+++ b/client/src/components/Message.js
@@ -2,7 +2,7 @@
 import dayjs from "dayjs"
 import isToday from "dayjs/plugin/isToday"
 import isYesterday from "dayjs/plugin/isYesterday"
-import React from "react"
+import { useMemo } from "react";
 import { useTranslation } from "react-i18next"
 import ConversationAvatar from "./ConversationAvatar"
 
@@ -219,7 +219,7 @@
 const MessageBubble = (props) => {
   const largeRadius = "20px"
   const smallRadius = "5px"
-  const radius = React.useMemo(() => {
+  const radius = useMemo(() => {
     if (props.position == "start") {
       return {
         borderStartStartRadius: props.isFirstOfGroup ? largeRadius : smallRadius,
diff --git a/client/src/components/MessageList.js b/client/src/components/MessageList.js
index 5ea46b5..a6084a7 100644
--- a/client/src/components/MessageList.js
+++ b/client/src/components/MessageList.js
@@ -1,5 +1,5 @@
 import dayjs from "dayjs"
-import React, { useMemo } from 'react'
+import { useMemo } from 'react'
 import dayOfYear from 'dayjs/plugin/dayOfYear'
 import isBetween from 'dayjs/plugin/isBetween'
 import { Stack } from "@mui/system"
diff --git a/client/src/components/NewContactForm.js b/client/src/components/NewContactForm.js
index a4c6f84..9482948 100644
--- a/client/src/components/NewContactForm.js
+++ b/client/src/components/NewContactForm.js
@@ -1,4 +1,4 @@
-import React, { useState } from 'react'
+import { useState } from 'react'
 import { InputBase, InputAdornment } from '@mui/material';
 import { SearchRounded } from '@mui/icons-material';
 
diff --git a/client/src/components/SendMessageForm.js b/client/src/components/SendMessageForm.js
index f1cb2d6..df520ff 100644
--- a/client/src/components/SendMessageForm.js
+++ b/client/src/components/SendMessageForm.js
@@ -1,10 +1,10 @@
-import React from 'react'
+import { useState, useCallback } from 'react'
 import { Divider, InputBase } from '@mui/material'
 import { RecordVideoMessageButton, RecordVoiceMessageButton, SelectEmojiButton, SendMessageButton, UploadFileButton } from './buttons';
 import { Stack } from '@mui/system';
 
 export default function SendMessageForm(props) {
-  const [currentMessage, setCurrentMessage] = React.useState("")
+  const [currentMessage, setCurrentMessage] = useState("")
 
   const handleSubmit = e => {
     e.preventDefault()
@@ -15,7 +15,7 @@
   }
   const handleInputChange = (event) => setCurrentMessage(event.target.value)
 
-  const onEmojiSelected = React.useCallback(
+  const onEmojiSelected = useCallback(
     (emoji) => setCurrentMessage((currentMessage) => currentMessage + emoji),
     [setCurrentMessage],
   )
diff --git a/client/src/components/UsernameChooser.js b/client/src/components/UsernameChooser.js
index 2df96c6..7703639 100644
--- a/client/src/components/UsernameChooser.js
+++ b/client/src/components/UsernameChooser.js
@@ -1,4 +1,4 @@
-import React, { useEffect, useState } from 'react'
+import { useEffect, useState } from 'react'
 import usePromise from "react-fetch-hook/usePromise"
 import { InputAdornment, TextField } from '@mui/material'
 import { SearchRounded } from '@mui/icons-material'
diff --git a/client/src/components/buttons.js b/client/src/components/buttons.js
index e1b82a4..7ea9802 100644
--- a/client/src/components/buttons.js
+++ b/client/src/components/buttons.js
@@ -2,7 +2,7 @@
 import { Box, ClickAwayListener, IconButton, Popper } from "@mui/material";
 import { styled } from "@mui/material/styles";
 import EmojiPicker from "emoji-picker-react";
-import React from "react";
+import { useState, useCallback } from "react";
 import { Arrow2Icon, ArrowIcon, CameraIcon, CameraInBubbleIcon, CancelIcon, CrossedEyeIcon, CrossIcon, EmojiIcon, EyeIcon, FolderIcon, InfoIcon, MicroInBubbleIcon, PaperClipIcon, PenIcon } from "./svgIcons";
 
 const RoundButton = styled(
@@ -215,19 +215,19 @@
 }
 
 export const SelectEmojiButton = (props) => {
-    const [anchorEl, setAnchorEl] = React.useState(null)
+    const [anchorEl, setAnchorEl] = useState(null)
   
-    const handleOpenEmojiPicker = React.useCallback(
+    const handleOpenEmojiPicker = useCallback(
       e => setAnchorEl(anchorEl ? null : e.currentTarget),
       [anchorEl],
     )
   
-    const handleClose = React.useCallback(
+    const handleClose = useCallback(
       () => setAnchorEl(null),
       [setAnchorEl],
     )
   
-    const onEmojiClick = React.useCallback(
+    const onEmojiClick = useCallback(
       (e, emojiObject) => {
         props.onEmojiSelected(emojiObject.emoji)
         handleClose()
diff --git a/client/src/components/inputs.js b/client/src/components/inputs.js
index 52047d3..a0315d3 100644
--- a/client/src/components/inputs.js
+++ b/client/src/components/inputs.js
@@ -1,6 +1,6 @@
 import { Stack, TextField } from "@mui/material"
 import { styled } from "@mui/material/styles"
-import React from "react"
+import { useState, useCallback, useEffect } from "react";
 import { InfoButton, ToggleVisibilityButton } from "./buttons"
 import { CheckedIcon, RoundCrossIcon, LockIcon, PenIcon, PersonIcon } from "./svgIcons"
 
@@ -13,16 +13,16 @@
 const StyledLockIcon = styled(LockIcon)({height: iconsHeight, color: "#03B9E9"})
 
 export const UsernameInput = ({infoButtonProps, ...props}) => {
-    const [isSelected, setIsSelected] = React.useState(false);
-    const [input, setInput] = React.useState(props.defaultValue);
-    const [startAdornment, setStartAdornment] = React.useState()
+    const [isSelected, setIsSelected] = useState(false);
+    const [input, setInput] = useState(props.defaultValue);
+    const [startAdornment, setStartAdornment] = useState()
 
-    const onChange = React.useCallback((event) => {
+    const onChange = useCallback((event) => {
         setInput(event.target.value)
         props.onChange?.(event)
     }, [props.onChange])
 
-    React.useEffect(() => {
+    useEffect(() => {
         /* Handle startAdornment */
         let Icon = StyledPersonIconLight
         let visibility = "visible"
@@ -56,21 +56,21 @@
 }
 
 export const PasswordInput = ({infoButtonProps, ...props}) => {
-    const [showPassword, setShowPassword] = React.useState(false);
-    const [isSelected, setIsSelected] = React.useState(false);
-    const [input, setInput] = React.useState(props.defaultValue);
-    const [startAdornment, setStartAdornment] = React.useState()
+    const [showPassword, setShowPassword] = useState(false);
+    const [isSelected, setIsSelected] = useState(false);
+    const [input, setInput] = useState(props.defaultValue);
+    const [startAdornment, setStartAdornment] = useState()
 
     const toggleShowPassword = () => {
         setShowPassword((showPassword) => !showPassword);
     }
 
-    const onChange = React.useCallback((event) => {
+    const onChange = useCallback((event) => {
         setInput(event.target.value)
         props.onChange?.(event)
     }, [props.onChange])
 
-    React.useEffect(() => {
+    useEffect(() => {
         /* Handle startAdornment */
         let Icon = StyledLockIcon
         let visibility = "visible"
@@ -112,16 +112,16 @@
 }
 
 export const NickNameInput = (props) => {
-    const [isSelected, setIsSelected] = React.useState(false);
-    const [input, setInput] = React.useState(props.defaultValue);
-    const [startAdornmentVisibility, setStartAdornmentVisibility] = React.useState()
+    const [isSelected, setIsSelected] = useState(false);
+    const [input, setInput] = useState(props.defaultValue);
+    const [startAdornmentVisibility, setStartAdornmentVisibility] = useState()
 
-    const onChange = React.useCallback((event) => {
+    const onChange = useCallback((event) => {
         setInput(event.target.value)
         props.onChange?.(event)
     }, [props.onChange])
 
-    React.useEffect(() => {
+    useEffect(() => {
         setStartAdornmentVisibility((isSelected || input) ? "visible" : "hidden")
     }, [isSelected, input])
 
@@ -142,17 +142,17 @@
 }
 
 export const RegularInput = (props) => {
-    const [isSelected, setIsSelected] = React.useState(false);
-    const [input, setInput] = React.useState(props.defaultValue);
-    const [startAdornmentVisibility, setStartAdornmentVisibility] = React.useState()
-    const [endAdornmentVisibility, setEndAdornmentVisibility] = React.useState()
+    const [isSelected, setIsSelected] = useState(false);
+    const [input, setInput] = useState(props.defaultValue);
+    const [startAdornmentVisibility, setStartAdornmentVisibility] = useState()
+    const [endAdornmentVisibility, setEndAdornmentVisibility] = useState()
 
-    const onChange = React.useCallback((event) => {
+    const onChange = useCallback((event) => {
         setInput(event.target.value)
         props.onChange?.(event)
     }, [props.onChange])
 
-    React.useEffect(() => {
+    useEffect(() => {
         setStartAdornmentVisibility((isSelected || input) ? "visible" : "hidden")
         setEndAdornmentVisibility((isSelected || input) ? "hidden" : "visible")
     }, [isSelected, input])
diff --git a/client/src/components/loading.js b/client/src/components/loading.js
index dee6e88..a928a22 100644
--- a/client/src/components/loading.js
+++ b/client/src/components/loading.js
@@ -1,5 +1,4 @@
 import { CircularProgress, Container } from '@mui/material';
-import React from 'react';
 
 export default function LoadingPage() {
     return <Container style={{ textAlign: "center" }}>
diff --git a/client/src/components/welcome.js b/client/src/components/welcome.js
index 46c054c..24a217a 100644
--- a/client/src/components/welcome.js
+++ b/client/src/components/welcome.js
@@ -1,6 +1,6 @@
 import { Button, Container } from '@mui/material';
 import { AnimatePresence, motion } from 'framer-motion';
-import React, { useState } from 'react';
+import { useState } from 'react'
 import JamiLogo from '../../public/jami-logo-icon.svg'
 
 const list = {