Change conversation during call
- Add `CallManagerProvider` to manage calls when the user navigates away from the call interface.
- Delete `NotificationManager`. Move its logic to `CallManagerProvider`.
- Rework routing
- Rework `ConversationProvider` and `useConversationQuery` to remove
unecessary states
GitLab: #172
Change-Id: I4a786a3dd52159680e5712e598d9b831525fb63f
diff --git a/client/src/services/conversationQueries.ts b/client/src/services/conversationQueries.ts
index 44c0aae..94946ad 100644
--- a/client/src/services/conversationQueries.ts
+++ b/client/src/services/conversationQueries.ts
@@ -17,12 +17,14 @@
*/
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
import { IConversation, Message } from 'jami-web-common';
+import { useMemo } from 'react';
import { useAuthContext } from '../contexts/AuthProvider';
+import { Conversation } from '../models/conversation';
-export const useConversationQuery = (conversationId: string) => {
+export const useConversationQuery = (conversationId?: string) => {
const { axiosInstance } = useAuthContext();
- return useQuery(
+ const conversationQuery = useQuery(
['conversation', conversationId],
async () => {
const { data } = await axiosInstance.get<IConversation>(`/conversations/${conversationId}`);
@@ -32,6 +34,17 @@
enabled: !!conversationId,
}
);
+
+ const conversation = useMemo(() => {
+ if (conversationQuery.isSuccess) {
+ return Conversation.fromInterface(conversationQuery.data);
+ }
+ }, [conversationQuery.isSuccess, conversationQuery.data]);
+
+ return {
+ conversation,
+ ...conversationQuery,
+ };
};
export const useMessagesQuery = (conversationId: string) => {