update imports for React 18
Change-Id: Ibc75ce532003a478b31d5d85d84c83a017262041
diff --git a/client/src/App.js b/client/src/App.js
index c05265e..2505137 100644
--- a/client/src/App.js
+++ b/client/src/App.js
@@ -4,7 +4,7 @@
License: AGPL-3
*/
import { ThemeProvider } from '@mui/material/styles';
-import React, { useState, useEffect } from 'react'
+import { useState, useEffect } from 'react'
import { Route, Routes, Navigate } from 'react-router-dom'
import authManager from './AuthManager'
diff --git a/client/src/App.test.js b/client/src/App.test.js
index 4db7ebc..9a9be2e 100644
--- a/client/src/App.test.js
+++ b/client/src/App.test.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { render } from '@testing-library/react';
import App from './App';
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 = {
diff --git a/client/src/contexts/socket.js b/client/src/contexts/socket.js
index bb59030..ad3b507 100644
--- a/client/src/contexts/socket.js
+++ b/client/src/contexts/socket.js
@@ -1,7 +1,7 @@
-import React from "react";
+import { createContext } from "react";
-export const SocketContext = React.createContext();
+export const SocketContext = createContext();
export const SocketProvider = ({socket, children}) => (
<SocketContext.Provider value={socket}>
{children}
diff --git a/client/src/i18n.js b/client/src/i18n.js
index 85e043f..80d13a8 100644
--- a/client/src/i18n.js
+++ b/client/src/i18n.js
@@ -1,5 +1,5 @@
-import i18n from "i18next";
-import { initReactI18next } from "react-i18next";
+import i18n from "i18next"
+import { initReactI18next } from "react-i18next"
import translationEn from "../public/locale/en/translation.json"
import translationFr from "../public/locale/fr/translation.json"
@@ -19,6 +19,6 @@
translation: translationFr,
},
},
-});
+})
-export default i18n;
+export default i18n
diff --git a/client/src/index.js b/client/src/index.js
index a8a1407..fb7917e 100644
--- a/client/src/index.js
+++ b/client/src/index.js
@@ -1,6 +1,6 @@
'use strict'
import './index.scss'
-import React from 'react'
+import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client';
import App from './App.js'
import { store } from "../redux/store";
@@ -29,7 +29,7 @@
const root = createRoot(container);
root.render(
<Provider store={store}>
- <React.StrictMode>
+ <StrictMode>
<QueryClientProvider client={queryClient}>
<SocketProvider socket={socket}>
<Router>
@@ -37,7 +37,7 @@
</Router>
</SocketProvider>
</QueryClientProvider>
- </React.StrictMode>
+ </StrictMode>
</Provider>
);
diff --git a/client/src/pages/accountCreation.jsx b/client/src/pages/accountCreation.jsx
index 382ab1a..ae59d1b 100644
--- a/client/src/pages/accountCreation.jsx
+++ b/client/src/pages/accountCreation.jsx
@@ -1,4 +1,3 @@
-import React from 'react';
import { Container, Card, CardContent, Typography, List, Avatar, Divider } from '@mui/material';
import { DialerSipRounded, GroupOutlined, RoomRounded } from '@mui/icons-material';
import ListItemLink from '../components/ListItemLink';
diff --git a/client/src/pages/accountSelection.jsx b/client/src/pages/accountSelection.jsx
index 81eed77..65728d8 100644
--- a/client/src/pages/accountSelection.jsx
+++ b/client/src/pages/accountSelection.jsx
@@ -1,4 +1,4 @@
-import React, { useEffect, useState } from 'react';
+import { Fragment, useEffect, useState } from 'react'
import { Avatar, Card, CardHeader, Container, List } from '@mui/material';
import Header from '../components/Header'
import authManager from '../AuthManager'
@@ -44,7 +44,7 @@
if (!loaded)
return <LoadingPage />
return (
- <React.Fragment>
+ <Fragment>
<Header />
<Container maxWidth="sm" style={{paddingBottom:32}}>
<motion.div drag="x" initial="exit" animate="enter" exit="exit" variants={variants}>
@@ -64,8 +64,8 @@
</Card>
</motion.div>
</Container>
- </React.Fragment>
- )
+ </Fragment>
+ );
}
export default AccountSelection
\ No newline at end of file
diff --git a/client/src/pages/accountSettings.jsx b/client/src/pages/accountSettings.jsx
index fa29a7d..9808efd 100644
--- a/client/src/pages/accountSettings.jsx
+++ b/client/src/pages/accountSettings.jsx
@@ -1,4 +1,4 @@
-import React, {useEffect, useState} from 'react';
+import { useEffect, useState } from 'react'
import { useParams } from 'react-router';
import { Container, CircularProgress } from '@mui/material';
import Header from '../components/Header'
diff --git a/client/src/pages/addContactPage.jsx b/client/src/pages/addContactPage.jsx
index 96d7bdc..702b01d 100644
--- a/client/src/pages/addContactPage.jsx
+++ b/client/src/pages/addContactPage.jsx
@@ -1,4 +1,3 @@
-import React from 'react';
import { useNavigate } from "react-router-dom";
import { Box, Container, Fab, Card, CardContent, Typography } from '@mui/material';
diff --git a/client/src/pages/jamiAccountCreation.jsx b/client/src/pages/jamiAccountCreation.jsx
index acecd27..a551569 100644
--- a/client/src/pages/jamiAccountCreation.jsx
+++ b/client/src/pages/jamiAccountCreation.jsx
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import { useState } from 'react'
import { Container, Card, CardContent, Typography, Fab, CardActions, Box } from '@mui/material';
import { AddRounded } from '@mui/icons-material';
import UsernameChooser from '../components/UsernameChooser';
diff --git a/client/src/pages/loginDialog.jsx b/client/src/pages/loginDialog.jsx
index eaa1362..ef647e8 100644
--- a/client/src/pages/loginDialog.jsx
+++ b/client/src/pages/loginDialog.jsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import { Component } from 'react'
import Button from '@mui/material/Button';
import TextField from '@mui/material/TextField';
@@ -25,7 +25,7 @@
);
}
-class SignInPage extends React.Component {
+class SignInPage extends Component {
constructor(props) {
console.log("SignInPage " + props.open)
diff --git a/client/src/pages/messenger.jsx b/client/src/pages/messenger.jsx
index ea64d9b..a256290 100644
--- a/client/src/pages/messenger.jsx
+++ b/client/src/pages/messenger.jsx
@@ -1,4 +1,4 @@
-import React, { useEffect, useState } from 'react';
+import { useEffect, useState } from 'react'
import Header from '../components/Header'
import NewContactForm from '../components/NewContactForm'
diff --git a/client/src/pages/serverConfiguration.jsx b/client/src/pages/serverConfiguration.jsx
index df0ee49..5c80131 100644
--- a/client/src/pages/serverConfiguration.jsx
+++ b/client/src/pages/serverConfiguration.jsx
@@ -1,4 +1,3 @@
-import React from 'react'
import Header from '../components/Header'
import AccountPreferences from '../components/AccountPreferences'
import Container from '@mui/material/Container'
diff --git a/client/src/pages/serverSetup.jsx b/client/src/pages/serverSetup.jsx
index e2722fd..eaefc51 100644
--- a/client/src/pages/serverSetup.jsx
+++ b/client/src/pages/serverSetup.jsx
@@ -1,4 +1,4 @@
-import React, { useState } from 'react'
+import { useState } from 'react'
import { Box, Container, Fab, Card, CardContent, Typography, Input } from '@mui/material'
import GroupAddRounded from '@mui/icons-material/GroupAddRounded'