Separate common interfaces from client-specific classes
Changes:
- Move client-specific classes to client/src/models
- Extract common interface to standalone files in common/interfaces
- Remove unused features from client-specific classes
- These are features which were once used on the old server, but are now no longer needed
- Remove getObject() method for Account, Contact, and Conversation
- Remove lookups, registrationState and registeringName from Account
- Remove resolving logic from Contact
- Remove requests and listeners from Conversation (once used for Socket.IO and promises on server)
- Rename services/Conversation.ts to services/conversationQueries.ts
- Update imports
Future work:
- Create interface versions of Account, Contact, and Conversation
- Create new interfaces to replace Records on server
GitLab: #94
Change-Id: Ia51fe6ebeda44a30887d851a5564569dc290e5ed
diff --git a/client/src/components/AccountPreferences.tsx b/client/src/components/AccountPreferences.tsx
index 2086f14..3a63ee7 100644
--- a/client/src/components/AccountPreferences.tsx
+++ b/client/src/components/AccountPreferences.tsx
@@ -35,10 +35,11 @@
Typography,
} from '@mui/material';
import { motion } from 'framer-motion';
-import { Account, AccountDetails } from 'jami-web-common';
+import { AccountDetails } from 'jami-web-common';
import { useState } from 'react';
import { useAuthContext } from '../contexts/AuthProvider';
+import { Account } from '../models/Account';
import ConversationAvatar from './ConversationAvatar';
import ConversationsOverviewCard from './ConversationsOverviewCard';
import JamiIdCard from './JamiIdCard';
diff --git a/client/src/components/ConversationList.tsx b/client/src/components/ConversationList.tsx
index 684c7e5..6b03224 100644
--- a/client/src/components/ConversationList.tsx
+++ b/client/src/components/ConversationList.tsx
@@ -19,10 +19,10 @@
import List from '@mui/material/List';
import ListSubheader from '@mui/material/ListSubheader';
import Typography from '@mui/material/Typography';
-import { Conversation } from 'jami-web-common';
import { useContext, useEffect } from 'react';
import { MessengerContext } from '../contexts/MessengerProvider';
+import { Conversation } from '../models/Conversation';
import { useAppSelector } from '../redux/hooks';
import ConversationListItem from './ConversationListItem';
diff --git a/client/src/components/ConversationListItem.tsx b/client/src/components/ConversationListItem.tsx
index 03685c3..ebf0c93 100644
--- a/client/src/components/ConversationListItem.tsx
+++ b/client/src/components/ConversationListItem.tsx
@@ -16,7 +16,6 @@
* <https://www.gnu.org/licenses/>.
*/
import { Box, ListItem, ListItemAvatar, ListItemText } from '@mui/material';
-import { Conversation } from 'jami-web-common';
import { QRCodeCanvas } from 'qrcode.react';
import { useCallback, useContext, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
@@ -26,6 +25,7 @@
import { MessengerContext } from '../contexts/MessengerProvider';
import { useStartCall } from '../hooks/useStartCall';
import { useUrlParams } from '../hooks/useUrlParams';
+import { Conversation } from '../models/Conversation';
import { setRefreshFromSlice } from '../redux/appSlice';
import { useAppDispatch } from '../redux/hooks';
import { ConversationRouteParams } from '../router';
diff --git a/client/src/components/ConversationView.tsx b/client/src/components/ConversationView.tsx
index e412cca..0319574 100644
--- a/client/src/components/ConversationView.tsx
+++ b/client/src/components/ConversationView.tsx
@@ -16,13 +16,13 @@
* <https://www.gnu.org/licenses/>.
*/
import { Divider, Stack, Typography } from '@mui/material';
-import { ConversationMember } from 'jami-web-common';
import { useContext, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { useAuthContext } from '../contexts/AuthProvider';
import { ConversationContext } from '../contexts/ConversationProvider';
import { useStartCall } from '../hooks/useStartCall';
+import { ConversationMember } from '../models/Conversation';
import ChatInterface from '../pages/ChatInterface';
import { translateEnumeration, TranslateEnumerationOptions } from '../utils/translations';
import { AddParticipantButton, ShowOptionsMenuButton, StartAudioCallButton, StartVideoCallButton } from './Button';
diff --git a/client/src/components/ConversationsOverviewCard.tsx b/client/src/components/ConversationsOverviewCard.tsx
index 84d022d..cdc1c79 100644
--- a/client/src/components/ConversationsOverviewCard.tsx
+++ b/client/src/components/ConversationsOverviewCard.tsx
@@ -16,11 +16,11 @@
* <https://www.gnu.org/licenses/>.
*/
import { Card, CardActionArea, CardContent, CircularProgress, Typography } from '@mui/material';
-import { Conversation } from 'jami-web-common/dist/Conversation';
import { useEffect, useState } from 'react';
import { useNavigate } from 'react-router';
import { useAuthContext } from '../contexts/AuthProvider';
+import { Conversation } from '../models/Conversation';
export default function ConversationsOverviewCard() {
const { axiosInstance, account } = useAuthContext();
diff --git a/client/src/components/JamiIdCard.tsx b/client/src/components/JamiIdCard.tsx
index 6a3be3c..73c038c 100644
--- a/client/src/components/JamiIdCard.tsx
+++ b/client/src/components/JamiIdCard.tsx
@@ -16,7 +16,8 @@
* <https://www.gnu.org/licenses/>.
*/
import { Box, Card, CardContent, Typography } from '@mui/material';
-import { Account } from 'jami-web-common';
+
+import { Account } from '../models/Account';
type JamiIdCardProps = {
account: Account;
diff --git a/client/src/components/Message.tsx b/client/src/components/Message.tsx
index 7cf7225..669f041 100644
--- a/client/src/components/Message.tsx
+++ b/client/src/components/Message.tsx
@@ -18,11 +18,13 @@
import { Box, Chip, Divider, Stack, Tooltip, Typography } from '@mui/material';
import { styled } from '@mui/material/styles';
import { Dayjs } from 'dayjs';
-import { Account, Contact, Message } from 'jami-web-common';
+import { Message } from 'jami-web-common';
import { ReactElement, ReactNode, useCallback, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import dayjs from '../dayjsInitializer';
+import { Account } from '../models/Account';
+import { Contact } from '../models/Contact';
import { EmojiButton, MoreButton, ReplyMessageButton } from './Button';
import ConversationAvatar from './ConversationAvatar';
import PopoverList, { PopoverListItemData } from './PopoverList';
diff --git a/client/src/components/MessageList.tsx b/client/src/components/MessageList.tsx
index 0ae04d2..538acc7 100644
--- a/client/src/components/MessageList.tsx
+++ b/client/src/components/MessageList.tsx
@@ -17,12 +17,13 @@
*/
import { Typography } from '@mui/material';
import { Box, Stack } from '@mui/system';
-import { ConversationMember, Message } from 'jami-web-common';
+import { Message } from 'jami-web-common';
import { MutableRefObject, useRef, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { Waypoint } from 'react-waypoint';
import { useAuthContext } from '../contexts/AuthProvider';
+import { ConversationMember } from '../models/Conversation';
import { MessageRow } from './Message';
import { ArrowDownIcon } from './SvgIcon';
diff --git a/client/src/components/SendMessageForm.tsx b/client/src/components/SendMessageForm.tsx
index dfb5f3d..d1267aa 100644
--- a/client/src/components/SendMessageForm.tsx
+++ b/client/src/components/SendMessageForm.tsx
@@ -17,11 +17,11 @@
*/
import { InputBase } from '@mui/material';
import { Stack } from '@mui/system';
-import { ConversationMember } from 'jami-web-common';
import { ChangeEvent, FormEvent, useCallback, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { useAuthContext } from '../contexts/AuthProvider';
+import { ConversationMember } from '../models/Conversation';
import { translateEnumeration, TranslateEnumerationOptions } from '../utils/translations';
import {
RecordVideoMessageButton,