Transform CallProvider into 'CallManager' hook, review WebSocket messages for calls

- These changes allowed to remove more cascading effects. It is now possible to reactivate StrictMode. Downside is we lost the 'optional context' of CallProvider: the call logic will be loaded even if there is no call.
- The WebSocket messages have been changed so the client does not have to know the conversation members before a call. Previously, the client had to fetch the conversation members for a call, which was causing cascading effects.
- Accidentally, moving the handling of conversation members to the server added some logic for calls with more than two participants, but it is still not ready to work.

* CallProvider.tsx will be renamed in next commit in order to make it easier to track its file history

Change-Id: Iae711009adafce065ac3defc1c91c7ca0f37898c
diff --git a/common/src/interfaces/websocket-interfaces.ts b/common/src/interfaces/websocket-interfaces.ts
index f680e16..82ac1e0 100644
--- a/common/src/interfaces/websocket-interfaces.ts
+++ b/common/src/interfaces/websocket-interfaces.ts
@@ -18,7 +18,7 @@
 import { Message } from './conversation.js';
 
 export interface ContactMessage {
-  contactId: string;
+  senderContactId: string;
 }
 
 export interface ConversationMessage {
@@ -36,14 +36,29 @@
   isWriting: boolean;
 }
 
-export interface CallAction extends ContactMessage {
+export interface WithSender {
+  senderId: string;
+}
+
+export interface WithReceiver {
+  receiverId: string;
+}
+
+export interface CallAction {
   conversationId: string;
 }
 
-export interface CallBegin extends CallAction {
+export interface CallInvite extends CallAction {
   withVideoOn: boolean;
 }
 
+// eslint-disable-next-line @typescript-eslint/no-empty-interface
+export interface CallJoin extends CallAction {}
+
+export interface CallExit {
+  conversationId: string;
+}
+
 export interface WebRtcSdp extends CallAction {
   sdp: RTCSessionDescriptionInit;
 }