@capgo/capacitor-stream-call 0.0.6 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/plugin.js CHANGED
@@ -46,8 +46,9 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
46
46
  }
47
47
  };
48
48
  this.callSessionStartedCallback = (event) => {
49
+ var _a, _b;
49
50
  console.log('Call created (session started)', event);
50
- if (event.call && event.call.session && event.call.session.participants) {
51
+ if ((_b = (_a = event.call) === null || _a === void 0 ? void 0 : _a.session) === null || _b === void 0 ? void 0 : _b.participants) {
51
52
  // Store the number of expected participants for this call
52
53
  const callCid = event.call.cid;
53
54
  const memberCount = event.call.session.participants.length;
@@ -55,7 +56,7 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
55
56
  this.callMembersExpected.set(callCid, memberCount);
56
57
  // Store call members in callStates
57
58
  this.callStates.set(callCid, {
58
- members: event.call.session.participants.map(p => { var _a; return ({ user_id: ((_a = p.user) === null || _a === void 0 ? void 0 : _a.id) || '' }); }),
59
+ members: event.call.session.participants.map((p) => { var _a; return ({ user_id: ((_a = p.user) === null || _a === void 0 ? void 0 : _a.id) || '' }); }),
59
60
  participantResponses: new Map(),
60
61
  expectedMemberCount: memberCount,
61
62
  createdAt: new Date(),
@@ -71,8 +72,9 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
71
72
  }
72
73
  };
73
74
  this.callRejectedCallback = (event) => {
75
+ var _a;
74
76
  console.log('Call rejected', event);
75
- if (event.user && event.user.id) {
77
+ if ((_a = event.user) === null || _a === void 0 ? void 0 : _a.id) {
76
78
  this.participantResponses.set(event.user.id, 'rejected');
77
79
  // Update the combined callStates map
78
80
  const callState = this.callStates.get(event.call_cid);
@@ -83,14 +85,15 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
83
85
  this.notifyListeners('callEvent', {
84
86
  callId: event.call_cid,
85
87
  state: 'rejected',
86
- userId: event.user.id
88
+ userId: event.user.id,
87
89
  });
88
90
  this.checkAllParticipantsResponded();
89
91
  }
90
92
  };
91
93
  this.callAcceptedCallback = (event) => {
94
+ var _a;
92
95
  console.log('Call accepted', event);
93
- if (event.user && event.user.id) {
96
+ if ((_a = event.user) === null || _a === void 0 ? void 0 : _a.id) {
94
97
  this.participantResponses.set(event.user.id, 'accepted');
95
98
  // Update the combined callStates map
96
99
  const callState = this.callStates.get(event.call_cid);
@@ -106,13 +109,14 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
106
109
  this.notifyListeners('callEvent', {
107
110
  callId: event.call_cid,
108
111
  state: 'accepted',
109
- userId: event.user.id
112
+ userId: event.user.id,
110
113
  });
111
114
  }
112
115
  };
113
116
  this.callMissedCallback = (event) => {
117
+ var _a;
114
118
  console.log('Call missed', event);
115
- if (event.user && event.user.id) {
119
+ if ((_a = event.user) === null || _a === void 0 ? void 0 : _a.id) {
116
120
  this.participantResponses.set(event.user.id, 'missed');
117
121
  // Update the combined callStates map
118
122
  const callState = this.callStates.get(event.call_cid);
@@ -123,7 +127,7 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
123
127
  this.notifyListeners('callEvent', {
124
128
  callId: event.call_cid,
125
129
  state: 'missed',
126
- userId: event.user.id
130
+ userId: event.user.id,
127
131
  });
128
132
  this.checkAllParticipantsResponded();
129
133
  }
@@ -165,7 +169,7 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
165
169
  }
166
170
  };
167
171
  this.participantLeftListener = (event) => {
168
- var _a, _b;
172
+ var _a, _b, _c;
169
173
  if (this.magicDivId && event.participant) {
170
174
  const videoId = `video-${event.participant.sessionId}`;
171
175
  const audioId = `audio-${event.participant.sessionId}`;
@@ -205,7 +209,7 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
205
209
  }
206
210
  }
207
211
  // Check if we're the only participant left in the call
208
- if (this.currentCall && this.currentCall.state.session) {
212
+ if ((_a = this.currentCall) === null || _a === void 0 ? void 0 : _a.state.session) {
209
213
  // Get the remaining participants count (we need to subtract 1 as we haven't been removed from the list yet)
210
214
  const remainingParticipants = this.currentCall.state.session.participants.length - 1;
211
215
  // If we're the only one left, end the call
@@ -216,12 +220,12 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
216
220
  // Clean up resources
217
221
  const callCid = this.currentCall.cid;
218
222
  // Invalidate and remove timer
219
- const callState = (_a = this.callStates) === null || _a === void 0 ? void 0 : _a.get(callCid);
223
+ const callState = (_b = this.callStates) === null || _b === void 0 ? void 0 : _b.get(callCid);
220
224
  if (callState === null || callState === void 0 ? void 0 : callState.timer) {
221
225
  clearInterval(callState.timer);
222
226
  }
223
227
  // Remove from callStates
224
- (_b = this.callStates) === null || _b === void 0 ? void 0 : _b.delete(callCid);
228
+ (_c = this.callStates) === null || _c === void 0 ? void 0 : _c.delete(callCid);
225
229
  // Reset the current call
226
230
  this.currentCall = undefined;
227
231
  // this.currentActiveCallId = undefined;
@@ -232,7 +236,7 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
232
236
  this.notifyListeners('callEvent', {
233
237
  callId: callCid,
234
238
  state: 'left',
235
- reason: 'participant_left'
239
+ reason: 'participant_left',
236
240
  });
237
241
  }
238
242
  }
@@ -291,19 +295,18 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
291
295
  if (elapsedSeconds >= 30) {
292
296
  console.log(`Call ${callCid} has timed out after ${elapsedSeconds} seconds`);
293
297
  // Check if anyone has accepted
294
- const hasAccepted = Array.from(callState.participantResponses.values())
295
- .some(response => response === 'accepted');
298
+ const hasAccepted = Array.from(callState.participantResponses.values()).some((response) => response === 'accepted');
296
299
  if (!hasAccepted) {
297
300
  console.log(`No one accepted call ${callCid}, marking all non-responders as missed`);
298
301
  // Mark all members who haven't responded as "missed"
299
- callState.members.forEach(member => {
302
+ callState.members.forEach((member) => {
300
303
  if (!callState.participantResponses.has(member.user_id)) {
301
304
  callState.participantResponses.set(member.user_id, 'missed');
302
305
  this.participantResponses.set(member.user_id, 'missed');
303
306
  this.notifyListeners('callEvent', {
304
307
  callId: callCid,
305
308
  state: 'missed',
306
- userId: member.user_id
309
+ userId: member.user_id,
307
310
  });
308
311
  }
309
312
  });
@@ -324,7 +327,7 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
324
327
  this.notifyListeners('callEvent', {
325
328
  callId: callCid,
326
329
  state: 'ended',
327
- reason: 'timeout'
330
+ reason: 'timeout',
328
331
  });
329
332
  }
330
333
  }
@@ -341,7 +344,7 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
341
344
  console.log(`Total expected participants: ${totalParticipants}`);
342
345
  // Count rejections and misses
343
346
  let rejectedOrMissedCount = 0;
344
- this.participantResponses.forEach(response => {
347
+ this.participantResponses.forEach((response) => {
345
348
  if (response === 'rejected' || response === 'missed') {
346
349
  rejectedOrMissedCount++;
347
350
  }
@@ -350,7 +353,7 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
350
353
  console.log(`Rejected or missed: ${rejectedOrMissedCount}`);
351
354
  const allResponded = this.participantResponses.size >= totalParticipants;
352
355
  const allRejectedOrMissed = allResponded &&
353
- Array.from(this.participantResponses.values()).every(response => response === 'rejected' || response === 'missed');
356
+ Array.from(this.participantResponses.values()).every((response) => response === 'rejected' || response === 'missed');
354
357
  // If all participants have rejected or missed the call
355
358
  if (allResponded && allRejectedOrMissed) {
356
359
  console.log('All participants have rejected or missed the call');
@@ -371,7 +374,7 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
371
374
  this.notifyListeners('callEvent', {
372
375
  callId: callCid,
373
376
  state: 'ended',
374
- reason: 'all_rejected_or_missed'
377
+ reason: 'all_rejected_or_missed',
375
378
  });
376
379
  }
377
380
  }
@@ -479,7 +482,7 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
479
482
  if (this.client.streamClient.userID && !options.userIds.includes(this.client.streamClient.userID)) {
480
483
  members.push({ user_id: this.client.streamClient.userID });
481
484
  }
482
- await call.getOrCreate({ data: { members } });
485
+ await call.getOrCreate({ data: { members, team: options.team } });
483
486
  // Store the expected member count for this call
484
487
  // -1, because we don't count the caller themselves
485
488
  this.callMembersExpected.set(call.cid, members.length);
@@ -567,6 +570,39 @@ var capacitorStreamCall = (function (exports, core, videoClient) {
567
570
  const enabled = await this.currentCall.camera.enabled;
568
571
  return { enabled };
569
572
  }
573
+ async getCallStatus() {
574
+ if (!this.currentCall) {
575
+ throw new Error('No active call');
576
+ }
577
+ const callingState = this.currentCall.state.callingState;
578
+ let state;
579
+ switch (callingState) {
580
+ case videoClient.CallingState.IDLE:
581
+ state = 'idle';
582
+ break;
583
+ case videoClient.CallingState.RINGING:
584
+ state = 'ringing';
585
+ break;
586
+ case videoClient.CallingState.JOINING:
587
+ state = 'joining';
588
+ break;
589
+ case videoClient.CallingState.RECONNECTING:
590
+ state = 'reconnecting';
591
+ break;
592
+ case videoClient.CallingState.JOINED:
593
+ state = 'joined';
594
+ break;
595
+ case videoClient.CallingState.LEFT:
596
+ state = 'left';
597
+ break;
598
+ default:
599
+ state = 'unknown';
600
+ }
601
+ return {
602
+ callId: this.currentCall.id,
603
+ state,
604
+ };
605
+ }
570
606
  }
571
607
 
572
608
  var web = /*#__PURE__*/Object.freeze({
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst StreamCall = registerPlugin('StreamCall', {\n web: () => import('./web').then((m) => new m.StreamCallWeb()),\n});\nexport * from './definitions';\nexport { StreamCall };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { CallingState, StreamVideoClient } from '@stream-io/video-client';\nexport class StreamCallWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.videoBindings = new Map();\n this.audioBindings = new Map();\n this.participantResponses = new Map();\n this.callMembersExpected = new Map();\n this.ringCallback = (event) => {\n var _a, _b;\n console.log('Call ringing', event, this.currentCall);\n this.incomingCall = event.call;\n if (!this.currentCall) {\n console.log('Creating new call', event.call.id);\n this.currentCall = (_a = this.client) === null || _a === void 0 ? void 0 : _a.call(event.call.type, event.call.id);\n // this.currentActiveCallId = this.currentCall?.cid;\n this.notifyListeners('callEvent', { callId: event.call.id, state: CallingState.RINGING });\n // Clear previous responses when a new call starts\n this.participantResponses.clear();\n }\n if (this.currentCall) {\n console.log('Call found', this.currentCall.id);\n this.callStateSubscription = (_b = this.currentCall) === null || _b === void 0 ? void 0 : _b.state.callingState$.subscribe((s) => {\n var _a;\n console.log('Call state', s);\n if (s === CallingState.JOINED) {\n this.setupParticipantListener();\n this.setupCallEventListeners();\n }\n else if (s === CallingState.LEFT || s === CallingState.RECONNECTING_FAILED) {\n this.cleanupCall();\n }\n if (this.outgoingCall && s === CallingState.RINGING) {\n this.outgoingCall = undefined;\n }\n else {\n this.notifyListeners('callEvent', { callId: (_a = this.currentCall) === null || _a === void 0 ? void 0 : _a.id, state: s });\n }\n });\n }\n };\n this.callSessionStartedCallback = (event) => {\n console.log('Call created (session started)', event);\n if (event.call && event.call.session && event.call.session.participants) {\n // Store the number of expected participants for this call\n const callCid = event.call.cid;\n const memberCount = event.call.session.participants.length;\n console.log(`Call ${callCid} created with ${memberCount} members`);\n this.callMembersExpected.set(callCid, memberCount);\n // Store call members in callStates\n this.callStates.set(callCid, {\n members: event.call.session.participants.map(p => { var _a; return ({ user_id: ((_a = p.user) === null || _a === void 0 ? void 0 : _a.id) || '' }); }),\n participantResponses: new Map(),\n expectedMemberCount: memberCount,\n createdAt: new Date(),\n });\n // Start a timeout task that runs every second\n const timeoutTask = setInterval(() => this.checkCallTimeout(callCid), 1000);\n // Update the callState with the timeout task\n const callState = this.callStates.get(callCid);\n if (callState) {\n callState.timer = timeoutTask;\n this.callStates.set(callCid, callState);\n }\n }\n };\n this.callRejectedCallback = (event) => {\n console.log('Call rejected', event);\n if (event.user && event.user.id) {\n this.participantResponses.set(event.user.id, 'rejected');\n // Update the combined callStates map\n const callState = this.callStates.get(event.call_cid);\n if (callState) {\n callState.participantResponses.set(event.user.id, 'rejected');\n this.callStates.set(event.call_cid, callState);\n }\n this.notifyListeners('callEvent', {\n callId: event.call_cid,\n state: 'rejected',\n userId: event.user.id\n });\n this.checkAllParticipantsResponded();\n }\n };\n this.callAcceptedCallback = (event) => {\n console.log('Call accepted', event);\n if (event.user && event.user.id) {\n this.participantResponses.set(event.user.id, 'accepted');\n // Update the combined callStates map\n const callState = this.callStates.get(event.call_cid);\n if (callState) {\n callState.participantResponses.set(event.user.id, 'accepted');\n // If someone accepted, clear the timer as we don't need to check anymore\n if (callState.timer) {\n clearInterval(callState.timer);\n callState.timer = undefined;\n }\n this.callStates.set(event.call_cid, callState);\n }\n this.notifyListeners('callEvent', {\n callId: event.call_cid,\n state: 'accepted',\n userId: event.user.id\n });\n }\n };\n this.callMissedCallback = (event) => {\n console.log('Call missed', event);\n if (event.user && event.user.id) {\n this.participantResponses.set(event.user.id, 'missed');\n // Update the combined callStates map\n const callState = this.callStates.get(event.call_cid);\n if (callState) {\n callState.participantResponses.set(event.user.id, 'missed');\n this.callStates.set(event.call_cid, callState);\n }\n this.notifyListeners('callEvent', {\n callId: event.call_cid,\n state: 'missed',\n userId: event.user.id\n });\n this.checkAllParticipantsResponded();\n }\n };\n // Add a combined map for call states, mirroring the iOS implementation\n this.callStates = new Map();\n }\n // private currentActiveCallId?: string;\n setupCallRingListener() {\n var _a, _b, _c, _d;\n (_a = this.client) === null || _a === void 0 ? void 0 : _a.off('call.ring', this.ringCallback);\n (_b = this.client) === null || _b === void 0 ? void 0 : _b.off('call.session_started', this.callSessionStartedCallback);\n (_c = this.client) === null || _c === void 0 ? void 0 : _c.on('call.ring', this.ringCallback);\n (_d = this.client) === null || _d === void 0 ? void 0 : _d.on('call.session_started', this.callSessionStartedCallback);\n }\n setupCallEventListeners() {\n var _a, _b, _c, _d, _e, _f;\n // Clear previous listeners if any\n (_a = this.client) === null || _a === void 0 ? void 0 : _a.off('call.rejected', this.callRejectedCallback);\n (_b = this.client) === null || _b === void 0 ? void 0 : _b.off('call.accepted', this.callAcceptedCallback);\n (_c = this.client) === null || _c === void 0 ? void 0 : _c.off('call.missed', this.callMissedCallback);\n // Register event listeners\n (_d = this.client) === null || _d === void 0 ? void 0 : _d.on('call.rejected', this.callRejectedCallback);\n (_e = this.client) === null || _e === void 0 ? void 0 : _e.on('call.accepted', this.callAcceptedCallback);\n (_f = this.client) === null || _f === void 0 ? void 0 : _f.on('call.missed', this.callMissedCallback);\n }\n setupParticipantListener() {\n // Subscribe to participant changes\n this.incomingCall = undefined;\n if (!this.currentCall)\n return;\n this.participantJoinedListener = (event) => {\n if (this.magicDivId && event.participant) {\n const magicDiv = document.getElementById(this.magicDivId);\n if (magicDiv && this.currentCall) {\n this.setupParticipantVideo(this.currentCall, event.participant, magicDiv);\n this.setupParticipantAudio(this.currentCall, event.participant, magicDiv);\n }\n }\n };\n this.participantLeftListener = (event) => {\n var _a, _b;\n if (this.magicDivId && event.participant) {\n const videoId = `video-${event.participant.sessionId}`;\n const audioId = `audio-${event.participant.sessionId}`;\n // Remove video element\n const videoEl = document.getElementById(videoId);\n if (videoEl) {\n const unbindVideo = this.videoBindings.get(videoId);\n if (unbindVideo) {\n unbindVideo();\n this.videoBindings.delete(videoId);\n }\n const tracks = videoEl.srcObject;\n if (tracks) {\n tracks.getTracks().forEach((track) => {\n track.stop();\n });\n }\n videoEl.srcObject = null;\n videoEl.remove();\n }\n // Remove audio element\n const audioEl = document.getElementById(audioId);\n if (audioEl) {\n const unbindAudio = this.audioBindings.get(audioId);\n if (unbindAudio) {\n unbindAudio();\n this.audioBindings.delete(audioId);\n }\n const tracks = audioEl.srcObject;\n if (tracks) {\n tracks.getTracks().forEach((track) => {\n track.stop();\n });\n }\n audioEl.srcObject = null;\n audioEl.remove();\n }\n }\n // Check if we're the only participant left in the call\n if (this.currentCall && this.currentCall.state.session) {\n // Get the remaining participants count (we need to subtract 1 as we haven't been removed from the list yet)\n const remainingParticipants = this.currentCall.state.session.participants.length - 1;\n // If we're the only one left, end the call\n if (remainingParticipants <= 1) {\n console.log(`We are left solo in a call. Ending. cID: ${this.currentCall.cid}`);\n // End the call\n this.currentCall.leave();\n // Clean up resources\n const callCid = this.currentCall.cid;\n // Invalidate and remove timer\n const callState = (_a = this.callStates) === null || _a === void 0 ? void 0 : _a.get(callCid);\n if (callState === null || callState === void 0 ? void 0 : callState.timer) {\n clearInterval(callState.timer);\n }\n // Remove from callStates\n (_b = this.callStates) === null || _b === void 0 ? void 0 : _b.delete(callCid);\n // Reset the current call\n this.currentCall = undefined;\n // this.currentActiveCallId = undefined;\n // Clean up\n this.cleanupCall();\n console.log(`Cleaned up resources for ended call: ${callCid}`);\n // Notify that the call has ended\n this.notifyListeners('callEvent', {\n callId: callCid,\n state: 'left',\n reason: 'participant_left'\n });\n }\n }\n };\n this.currentCall.on('participantJoined', this.participantJoinedListener);\n this.currentCall.on('participantLeft', this.participantLeftListener);\n // Setup initial participants\n const participants = this.currentCall.state.participants;\n if (this.magicDivId) {\n const magicDiv = document.getElementById(this.magicDivId);\n if (magicDiv) {\n participants.forEach((participant) => {\n if (this.currentCall) {\n this.setupParticipantVideo(this.currentCall, participant, magicDiv);\n this.setupParticipantAudio(this.currentCall, participant, magicDiv);\n }\n });\n }\n }\n }\n setupParticipantVideo(call, participant, container) {\n const id = `video-${participant.sessionId}`;\n if (!document.getElementById(id)) {\n const videoEl = document.createElement('video');\n videoEl.id = id;\n videoEl.style.width = '100%';\n videoEl.style.maxWidth = '300px';\n videoEl.style.aspectRatio = '16/9';\n container.appendChild(videoEl);\n const unbind = call.bindVideoElement(videoEl, participant.sessionId, 'videoTrack');\n if (unbind)\n this.videoBindings.set(id, unbind);\n }\n }\n setupParticipantAudio(call, participant, container) {\n if (participant.isLocalParticipant)\n return;\n const id = `audio-${participant.sessionId}`;\n if (!document.getElementById(id)) {\n const audioEl = document.createElement('audio');\n audioEl.id = id;\n container.appendChild(audioEl);\n const unbind = call.bindAudioElement(audioEl, participant.sessionId);\n if (unbind)\n this.audioBindings.set(id, unbind);\n }\n }\n checkCallTimeout(callCid) {\n const callState = this.callStates.get(callCid);\n if (!callState)\n return;\n // Calculate time elapsed since call creation\n const now = new Date();\n const elapsedSeconds = (now.getTime() - callState.createdAt.getTime()) / 1000;\n // Check if 30 seconds have passed\n if (elapsedSeconds >= 30) {\n console.log(`Call ${callCid} has timed out after ${elapsedSeconds} seconds`);\n // Check if anyone has accepted\n const hasAccepted = Array.from(callState.participantResponses.values())\n .some(response => response === 'accepted');\n if (!hasAccepted) {\n console.log(`No one accepted call ${callCid}, marking all non-responders as missed`);\n // Mark all members who haven't responded as \"missed\"\n callState.members.forEach(member => {\n if (!callState.participantResponses.has(member.user_id)) {\n callState.participantResponses.set(member.user_id, 'missed');\n this.participantResponses.set(member.user_id, 'missed');\n this.notifyListeners('callEvent', {\n callId: callCid,\n state: 'missed',\n userId: member.user_id\n });\n }\n });\n // End the call\n if (this.currentCall && this.currentCall.cid === callCid) {\n this.currentCall.leave();\n }\n // Clear the timeout task\n if (callState.timer) {\n clearInterval(callState.timer);\n callState.timer = undefined;\n }\n // Remove from callStates\n this.callStates.delete(callCid);\n // Clean up\n this.cleanupCall();\n // Notify that the call has ended\n this.notifyListeners('callEvent', {\n callId: callCid,\n state: 'ended',\n reason: 'timeout'\n });\n }\n }\n }\n checkAllParticipantsResponded() {\n if (!this.currentCall)\n return;\n const callCid = this.currentCall.cid;\n const totalParticipants = this.callMembersExpected.get(callCid);\n if (!totalParticipants) {\n console.log(`No expected participant count found for call: ${callCid}`);\n return;\n }\n console.log(`Total expected participants: ${totalParticipants}`);\n // Count rejections and misses\n let rejectedOrMissedCount = 0;\n this.participantResponses.forEach(response => {\n if (response === 'rejected' || response === 'missed') {\n rejectedOrMissedCount++;\n }\n });\n console.log(`Participants responded: ${this.participantResponses.size}/${totalParticipants}`);\n console.log(`Rejected or missed: ${rejectedOrMissedCount}`);\n const allResponded = this.participantResponses.size >= totalParticipants;\n const allRejectedOrMissed = allResponded &&\n Array.from(this.participantResponses.values()).every(response => response === 'rejected' || response === 'missed');\n // If all participants have rejected or missed the call\n if (allResponded && allRejectedOrMissed) {\n console.log('All participants have rejected or missed the call');\n // End the call\n this.currentCall.leave();\n // Clean up the timer if exists in callStates\n const callState = this.callStates.get(callCid);\n if (callState === null || callState === void 0 ? void 0 : callState.timer) {\n clearInterval(callState.timer);\n }\n // Remove from callStates\n this.callStates.delete(callCid);\n // Clear the responses\n this.participantResponses.clear();\n // Clean up\n this.cleanupCall();\n // Notify that the call has ended\n this.notifyListeners('callEvent', {\n callId: callCid,\n state: 'ended',\n reason: 'all_rejected_or_missed'\n });\n }\n }\n cleanupCall() {\n var _a;\n // First cleanup the call listeners\n if (this.currentCall) {\n if (this.participantJoinedListener) {\n this.currentCall.off('participantJoined', this.participantJoinedListener);\n this.participantJoinedListener = undefined;\n }\n if (this.participantLeftListener) {\n this.currentCall.off('participantLeft', this.participantLeftListener);\n this.participantLeftListener = undefined;\n }\n (_a = this.callStateSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n }\n if (this.magicDivId) {\n const magicDiv = document.getElementById(this.magicDivId);\n if (magicDiv) {\n // Remove all video elements\n const videoElements = magicDiv.querySelectorAll('video');\n videoElements.forEach((video) => {\n const id = video.id;\n const unbind = this.videoBindings.get(id);\n if (unbind) {\n unbind();\n this.videoBindings.delete(id);\n }\n // Stop all tracks\n const tracks = video.srcObject;\n if (tracks) {\n tracks.getTracks().forEach((track) => {\n track.stop();\n track.enabled = false;\n });\n video.srcObject = null;\n }\n video.remove();\n });\n // Remove all audio elements\n const audioElements = magicDiv.querySelectorAll('audio');\n audioElements.forEach((audio) => {\n const id = audio.id;\n const unbind = this.audioBindings.get(id);\n if (unbind) {\n unbind();\n this.audioBindings.delete(id);\n }\n // Stop all tracks\n const tracks = audio.srcObject;\n if (tracks) {\n tracks.getTracks().forEach((track) => {\n track.stop();\n track.enabled = false;\n });\n audio.srcObject = null;\n }\n audio.remove();\n });\n // Clear the container\n while (magicDiv.firstChild) {\n magicDiv.removeChild(magicDiv.firstChild);\n }\n }\n }\n // Clear all bindings\n this.videoBindings.clear();\n this.audioBindings.clear();\n // Clear call references\n this.currentCall = undefined;\n this.incomingCall = undefined;\n }\n async login(options) {\n this.client = StreamVideoClient.getOrCreateInstance({\n apiKey: options.apiKey,\n user: { id: options.userId, name: options.name, image: options.imageURL },\n token: options.token,\n });\n this.magicDivId = options.magicDivId;\n this.setupCallRingListener();\n return { success: true };\n }\n async logout() {\n var _a;\n if (!this.client) {\n console.log('No client', this.client);\n throw new Error('Client not initialized');\n }\n // Cleanup subscription\n (_a = this.callStateSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this.callStateSubscription = undefined;\n await this.client.disconnectUser();\n this.client = undefined;\n this.currentCall = undefined;\n return { success: true };\n }\n async call(options) {\n if (!this.client) {\n console.log('No client', this.client);\n throw new Error('Client not initialized - Please login first');\n }\n const call = this.client.call(options.type || 'default', crypto.randomUUID());\n const members = options.userIds.map((userId) => ({ user_id: userId }));\n if (this.client.streamClient.userID && !options.userIds.includes(this.client.streamClient.userID)) {\n members.push({ user_id: this.client.streamClient.userID });\n }\n await call.getOrCreate({ data: { members } });\n // Store the expected member count for this call\n // -1, because we don't count the caller themselves\n this.callMembersExpected.set(call.cid, members.length);\n console.log(`Setting expected members for call ${call.cid}: ${members.length}`);\n this.currentCall = call;\n if (options.ring) {\n this.outgoingCall = call.cid;\n await call.ring();\n }\n await call.join();\n return { success: true };\n }\n async endCall() {\n if (!this.currentCall) {\n console.log('No active call', this.currentCall);\n throw new Error('No active call');\n }\n await this.currentCall.leave();\n this.currentCall = undefined;\n this.cleanupCall();\n return { success: true };\n }\n async setMicrophoneEnabled(options) {\n if (!this.currentCall) {\n console.log('No active call', this.currentCall);\n throw new Error('No active call');\n }\n if (options.enabled) {\n await this.currentCall.microphone.enable();\n }\n else {\n await this.currentCall.microphone.disable();\n }\n return { success: true };\n }\n async setCameraEnabled(options) {\n if (!this.currentCall) {\n console.log('No active call', this.currentCall);\n throw new Error('No active call');\n }\n if (options.enabled) {\n await this.currentCall.camera.enable();\n }\n else {\n await this.currentCall.camera.disable();\n }\n return { success: true };\n }\n async acceptCall() {\n if (!this.incomingCall || !this.client) {\n console.log('No incoming call to accept', this.incomingCall, this.client);\n throw new Error('No incoming call to accept');\n }\n console.log('Accepting call', this.incomingCall);\n const call = this.client.call(this.incomingCall.type, this.incomingCall.id);\n this.currentCall = call;\n console.log('Joining call', call);\n await call.accept();\n await call.join();\n console.log('Joined call', call);\n this.notifyListeners('callEvent', { callId: call.id, state: CallingState.JOINED });\n this.setupParticipantListener();\n return { success: true };\n }\n async rejectCall() {\n if (!this.incomingCall || !this.client) {\n console.log('No incoming call to reject', this.incomingCall, this.client);\n throw new Error('No incoming call to reject');\n }\n console.log('Rejecting call', this.incomingCall);\n const call = this.client.call(this.incomingCall.type, this.incomingCall.id);\n console.log('Leaving call', call);\n await call.reject();\n this.incomingCall = undefined;\n console.log('Rejected call', call);\n this.notifyListeners('callEvent', { callId: call.id, state: CallingState.LEFT });\n this.cleanupCall();\n return { success: true };\n }\n async isCameraEnabled() {\n if (!this.currentCall) {\n console.log('No active call', this.currentCall);\n throw new Error('No active call');\n }\n const enabled = await this.currentCall.camera.enabled;\n return { enabled };\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin","CallingState","StreamVideoClient"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst StreamCall = registerPlugin('StreamCall', {\n web: () => import('./web').then((m) => new m.StreamCallWeb()),\n});\nexport * from './definitions';\nexport { StreamCall };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { CallingState, StreamVideoClient } from '@stream-io/video-client';\nexport class StreamCallWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.videoBindings = new Map();\n this.audioBindings = new Map();\n this.participantResponses = new Map();\n this.callMembersExpected = new Map();\n this.ringCallback = (event) => {\n var _a, _b;\n console.log('Call ringing', event, this.currentCall);\n this.incomingCall = event.call;\n if (!this.currentCall) {\n console.log('Creating new call', event.call.id);\n this.currentCall = (_a = this.client) === null || _a === void 0 ? void 0 : _a.call(event.call.type, event.call.id);\n // this.currentActiveCallId = this.currentCall?.cid;\n this.notifyListeners('callEvent', { callId: event.call.id, state: CallingState.RINGING });\n // Clear previous responses when a new call starts\n this.participantResponses.clear();\n }\n if (this.currentCall) {\n console.log('Call found', this.currentCall.id);\n this.callStateSubscription = (_b = this.currentCall) === null || _b === void 0 ? void 0 : _b.state.callingState$.subscribe((s) => {\n var _a;\n console.log('Call state', s);\n if (s === CallingState.JOINED) {\n this.setupParticipantListener();\n this.setupCallEventListeners();\n }\n else if (s === CallingState.LEFT || s === CallingState.RECONNECTING_FAILED) {\n this.cleanupCall();\n }\n if (this.outgoingCall && s === CallingState.RINGING) {\n this.outgoingCall = undefined;\n }\n else {\n this.notifyListeners('callEvent', { callId: (_a = this.currentCall) === null || _a === void 0 ? void 0 : _a.id, state: s });\n }\n });\n }\n };\n this.callSessionStartedCallback = (event) => {\n var _a, _b;\n console.log('Call created (session started)', event);\n if ((_b = (_a = event.call) === null || _a === void 0 ? void 0 : _a.session) === null || _b === void 0 ? void 0 : _b.participants) {\n // Store the number of expected participants for this call\n const callCid = event.call.cid;\n const memberCount = event.call.session.participants.length;\n console.log(`Call ${callCid} created with ${memberCount} members`);\n this.callMembersExpected.set(callCid, memberCount);\n // Store call members in callStates\n this.callStates.set(callCid, {\n members: event.call.session.participants.map((p) => { var _a; return ({ user_id: ((_a = p.user) === null || _a === void 0 ? void 0 : _a.id) || '' }); }),\n participantResponses: new Map(),\n expectedMemberCount: memberCount,\n createdAt: new Date(),\n });\n // Start a timeout task that runs every second\n const timeoutTask = setInterval(() => this.checkCallTimeout(callCid), 1000);\n // Update the callState with the timeout task\n const callState = this.callStates.get(callCid);\n if (callState) {\n callState.timer = timeoutTask;\n this.callStates.set(callCid, callState);\n }\n }\n };\n this.callRejectedCallback = (event) => {\n var _a;\n console.log('Call rejected', event);\n if ((_a = event.user) === null || _a === void 0 ? void 0 : _a.id) {\n this.participantResponses.set(event.user.id, 'rejected');\n // Update the combined callStates map\n const callState = this.callStates.get(event.call_cid);\n if (callState) {\n callState.participantResponses.set(event.user.id, 'rejected');\n this.callStates.set(event.call_cid, callState);\n }\n this.notifyListeners('callEvent', {\n callId: event.call_cid,\n state: 'rejected',\n userId: event.user.id,\n });\n this.checkAllParticipantsResponded();\n }\n };\n this.callAcceptedCallback = (event) => {\n var _a;\n console.log('Call accepted', event);\n if ((_a = event.user) === null || _a === void 0 ? void 0 : _a.id) {\n this.participantResponses.set(event.user.id, 'accepted');\n // Update the combined callStates map\n const callState = this.callStates.get(event.call_cid);\n if (callState) {\n callState.participantResponses.set(event.user.id, 'accepted');\n // If someone accepted, clear the timer as we don't need to check anymore\n if (callState.timer) {\n clearInterval(callState.timer);\n callState.timer = undefined;\n }\n this.callStates.set(event.call_cid, callState);\n }\n this.notifyListeners('callEvent', {\n callId: event.call_cid,\n state: 'accepted',\n userId: event.user.id,\n });\n }\n };\n this.callMissedCallback = (event) => {\n var _a;\n console.log('Call missed', event);\n if ((_a = event.user) === null || _a === void 0 ? void 0 : _a.id) {\n this.participantResponses.set(event.user.id, 'missed');\n // Update the combined callStates map\n const callState = this.callStates.get(event.call_cid);\n if (callState) {\n callState.participantResponses.set(event.user.id, 'missed');\n this.callStates.set(event.call_cid, callState);\n }\n this.notifyListeners('callEvent', {\n callId: event.call_cid,\n state: 'missed',\n userId: event.user.id,\n });\n this.checkAllParticipantsResponded();\n }\n };\n // Add a combined map for call states, mirroring the iOS implementation\n this.callStates = new Map();\n }\n // private currentActiveCallId?: string;\n setupCallRingListener() {\n var _a, _b, _c, _d;\n (_a = this.client) === null || _a === void 0 ? void 0 : _a.off('call.ring', this.ringCallback);\n (_b = this.client) === null || _b === void 0 ? void 0 : _b.off('call.session_started', this.callSessionStartedCallback);\n (_c = this.client) === null || _c === void 0 ? void 0 : _c.on('call.ring', this.ringCallback);\n (_d = this.client) === null || _d === void 0 ? void 0 : _d.on('call.session_started', this.callSessionStartedCallback);\n }\n setupCallEventListeners() {\n var _a, _b, _c, _d, _e, _f;\n // Clear previous listeners if any\n (_a = this.client) === null || _a === void 0 ? void 0 : _a.off('call.rejected', this.callRejectedCallback);\n (_b = this.client) === null || _b === void 0 ? void 0 : _b.off('call.accepted', this.callAcceptedCallback);\n (_c = this.client) === null || _c === void 0 ? void 0 : _c.off('call.missed', this.callMissedCallback);\n // Register event listeners\n (_d = this.client) === null || _d === void 0 ? void 0 : _d.on('call.rejected', this.callRejectedCallback);\n (_e = this.client) === null || _e === void 0 ? void 0 : _e.on('call.accepted', this.callAcceptedCallback);\n (_f = this.client) === null || _f === void 0 ? void 0 : _f.on('call.missed', this.callMissedCallback);\n }\n setupParticipantListener() {\n // Subscribe to participant changes\n this.incomingCall = undefined;\n if (!this.currentCall)\n return;\n this.participantJoinedListener = (event) => {\n if (this.magicDivId && event.participant) {\n const magicDiv = document.getElementById(this.magicDivId);\n if (magicDiv && this.currentCall) {\n this.setupParticipantVideo(this.currentCall, event.participant, magicDiv);\n this.setupParticipantAudio(this.currentCall, event.participant, magicDiv);\n }\n }\n };\n this.participantLeftListener = (event) => {\n var _a, _b, _c;\n if (this.magicDivId && event.participant) {\n const videoId = `video-${event.participant.sessionId}`;\n const audioId = `audio-${event.participant.sessionId}`;\n // Remove video element\n const videoEl = document.getElementById(videoId);\n if (videoEl) {\n const unbindVideo = this.videoBindings.get(videoId);\n if (unbindVideo) {\n unbindVideo();\n this.videoBindings.delete(videoId);\n }\n const tracks = videoEl.srcObject;\n if (tracks) {\n tracks.getTracks().forEach((track) => {\n track.stop();\n });\n }\n videoEl.srcObject = null;\n videoEl.remove();\n }\n // Remove audio element\n const audioEl = document.getElementById(audioId);\n if (audioEl) {\n const unbindAudio = this.audioBindings.get(audioId);\n if (unbindAudio) {\n unbindAudio();\n this.audioBindings.delete(audioId);\n }\n const tracks = audioEl.srcObject;\n if (tracks) {\n tracks.getTracks().forEach((track) => {\n track.stop();\n });\n }\n audioEl.srcObject = null;\n audioEl.remove();\n }\n }\n // Check if we're the only participant left in the call\n if ((_a = this.currentCall) === null || _a === void 0 ? void 0 : _a.state.session) {\n // Get the remaining participants count (we need to subtract 1 as we haven't been removed from the list yet)\n const remainingParticipants = this.currentCall.state.session.participants.length - 1;\n // If we're the only one left, end the call\n if (remainingParticipants <= 1) {\n console.log(`We are left solo in a call. Ending. cID: ${this.currentCall.cid}`);\n // End the call\n this.currentCall.leave();\n // Clean up resources\n const callCid = this.currentCall.cid;\n // Invalidate and remove timer\n const callState = (_b = this.callStates) === null || _b === void 0 ? void 0 : _b.get(callCid);\n if (callState === null || callState === void 0 ? void 0 : callState.timer) {\n clearInterval(callState.timer);\n }\n // Remove from callStates\n (_c = this.callStates) === null || _c === void 0 ? void 0 : _c.delete(callCid);\n // Reset the current call\n this.currentCall = undefined;\n // this.currentActiveCallId = undefined;\n // Clean up\n this.cleanupCall();\n console.log(`Cleaned up resources for ended call: ${callCid}`);\n // Notify that the call has ended\n this.notifyListeners('callEvent', {\n callId: callCid,\n state: 'left',\n reason: 'participant_left',\n });\n }\n }\n };\n this.currentCall.on('participantJoined', this.participantJoinedListener);\n this.currentCall.on('participantLeft', this.participantLeftListener);\n // Setup initial participants\n const participants = this.currentCall.state.participants;\n if (this.magicDivId) {\n const magicDiv = document.getElementById(this.magicDivId);\n if (magicDiv) {\n participants.forEach((participant) => {\n if (this.currentCall) {\n this.setupParticipantVideo(this.currentCall, participant, magicDiv);\n this.setupParticipantAudio(this.currentCall, participant, magicDiv);\n }\n });\n }\n }\n }\n setupParticipantVideo(call, participant, container) {\n const id = `video-${participant.sessionId}`;\n if (!document.getElementById(id)) {\n const videoEl = document.createElement('video');\n videoEl.id = id;\n videoEl.style.width = '100%';\n videoEl.style.maxWidth = '300px';\n videoEl.style.aspectRatio = '16/9';\n container.appendChild(videoEl);\n const unbind = call.bindVideoElement(videoEl, participant.sessionId, 'videoTrack');\n if (unbind)\n this.videoBindings.set(id, unbind);\n }\n }\n setupParticipantAudio(call, participant, container) {\n if (participant.isLocalParticipant)\n return;\n const id = `audio-${participant.sessionId}`;\n if (!document.getElementById(id)) {\n const audioEl = document.createElement('audio');\n audioEl.id = id;\n container.appendChild(audioEl);\n const unbind = call.bindAudioElement(audioEl, participant.sessionId);\n if (unbind)\n this.audioBindings.set(id, unbind);\n }\n }\n checkCallTimeout(callCid) {\n const callState = this.callStates.get(callCid);\n if (!callState)\n return;\n // Calculate time elapsed since call creation\n const now = new Date();\n const elapsedSeconds = (now.getTime() - callState.createdAt.getTime()) / 1000;\n // Check if 30 seconds have passed\n if (elapsedSeconds >= 30) {\n console.log(`Call ${callCid} has timed out after ${elapsedSeconds} seconds`);\n // Check if anyone has accepted\n const hasAccepted = Array.from(callState.participantResponses.values()).some((response) => response === 'accepted');\n if (!hasAccepted) {\n console.log(`No one accepted call ${callCid}, marking all non-responders as missed`);\n // Mark all members who haven't responded as \"missed\"\n callState.members.forEach((member) => {\n if (!callState.participantResponses.has(member.user_id)) {\n callState.participantResponses.set(member.user_id, 'missed');\n this.participantResponses.set(member.user_id, 'missed');\n this.notifyListeners('callEvent', {\n callId: callCid,\n state: 'missed',\n userId: member.user_id,\n });\n }\n });\n // End the call\n if (this.currentCall && this.currentCall.cid === callCid) {\n this.currentCall.leave();\n }\n // Clear the timeout task\n if (callState.timer) {\n clearInterval(callState.timer);\n callState.timer = undefined;\n }\n // Remove from callStates\n this.callStates.delete(callCid);\n // Clean up\n this.cleanupCall();\n // Notify that the call has ended\n this.notifyListeners('callEvent', {\n callId: callCid,\n state: 'ended',\n reason: 'timeout',\n });\n }\n }\n }\n checkAllParticipantsResponded() {\n if (!this.currentCall)\n return;\n const callCid = this.currentCall.cid;\n const totalParticipants = this.callMembersExpected.get(callCid);\n if (!totalParticipants) {\n console.log(`No expected participant count found for call: ${callCid}`);\n return;\n }\n console.log(`Total expected participants: ${totalParticipants}`);\n // Count rejections and misses\n let rejectedOrMissedCount = 0;\n this.participantResponses.forEach((response) => {\n if (response === 'rejected' || response === 'missed') {\n rejectedOrMissedCount++;\n }\n });\n console.log(`Participants responded: ${this.participantResponses.size}/${totalParticipants}`);\n console.log(`Rejected or missed: ${rejectedOrMissedCount}`);\n const allResponded = this.participantResponses.size >= totalParticipants;\n const allRejectedOrMissed = allResponded &&\n Array.from(this.participantResponses.values()).every((response) => response === 'rejected' || response === 'missed');\n // If all participants have rejected or missed the call\n if (allResponded && allRejectedOrMissed) {\n console.log('All participants have rejected or missed the call');\n // End the call\n this.currentCall.leave();\n // Clean up the timer if exists in callStates\n const callState = this.callStates.get(callCid);\n if (callState === null || callState === void 0 ? void 0 : callState.timer) {\n clearInterval(callState.timer);\n }\n // Remove from callStates\n this.callStates.delete(callCid);\n // Clear the responses\n this.participantResponses.clear();\n // Clean up\n this.cleanupCall();\n // Notify that the call has ended\n this.notifyListeners('callEvent', {\n callId: callCid,\n state: 'ended',\n reason: 'all_rejected_or_missed',\n });\n }\n }\n cleanupCall() {\n var _a;\n // First cleanup the call listeners\n if (this.currentCall) {\n if (this.participantJoinedListener) {\n this.currentCall.off('participantJoined', this.participantJoinedListener);\n this.participantJoinedListener = undefined;\n }\n if (this.participantLeftListener) {\n this.currentCall.off('participantLeft', this.participantLeftListener);\n this.participantLeftListener = undefined;\n }\n (_a = this.callStateSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n }\n if (this.magicDivId) {\n const magicDiv = document.getElementById(this.magicDivId);\n if (magicDiv) {\n // Remove all video elements\n const videoElements = magicDiv.querySelectorAll('video');\n videoElements.forEach((video) => {\n const id = video.id;\n const unbind = this.videoBindings.get(id);\n if (unbind) {\n unbind();\n this.videoBindings.delete(id);\n }\n // Stop all tracks\n const tracks = video.srcObject;\n if (tracks) {\n tracks.getTracks().forEach((track) => {\n track.stop();\n track.enabled = false;\n });\n video.srcObject = null;\n }\n video.remove();\n });\n // Remove all audio elements\n const audioElements = magicDiv.querySelectorAll('audio');\n audioElements.forEach((audio) => {\n const id = audio.id;\n const unbind = this.audioBindings.get(id);\n if (unbind) {\n unbind();\n this.audioBindings.delete(id);\n }\n // Stop all tracks\n const tracks = audio.srcObject;\n if (tracks) {\n tracks.getTracks().forEach((track) => {\n track.stop();\n track.enabled = false;\n });\n audio.srcObject = null;\n }\n audio.remove();\n });\n // Clear the container\n while (magicDiv.firstChild) {\n magicDiv.removeChild(magicDiv.firstChild);\n }\n }\n }\n // Clear all bindings\n this.videoBindings.clear();\n this.audioBindings.clear();\n // Clear call references\n this.currentCall = undefined;\n this.incomingCall = undefined;\n }\n async login(options) {\n this.client = StreamVideoClient.getOrCreateInstance({\n apiKey: options.apiKey,\n user: { id: options.userId, name: options.name, image: options.imageURL },\n token: options.token,\n });\n this.magicDivId = options.magicDivId;\n this.setupCallRingListener();\n return { success: true };\n }\n async logout() {\n var _a;\n if (!this.client) {\n console.log('No client', this.client);\n throw new Error('Client not initialized');\n }\n // Cleanup subscription\n (_a = this.callStateSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this.callStateSubscription = undefined;\n await this.client.disconnectUser();\n this.client = undefined;\n this.currentCall = undefined;\n return { success: true };\n }\n async call(options) {\n if (!this.client) {\n console.log('No client', this.client);\n throw new Error('Client not initialized - Please login first');\n }\n const call = this.client.call(options.type || 'default', crypto.randomUUID());\n const members = options.userIds.map((userId) => ({ user_id: userId }));\n if (this.client.streamClient.userID && !options.userIds.includes(this.client.streamClient.userID)) {\n members.push({ user_id: this.client.streamClient.userID });\n }\n await call.getOrCreate({ data: { members, team: options.team } });\n // Store the expected member count for this call\n // -1, because we don't count the caller themselves\n this.callMembersExpected.set(call.cid, members.length);\n console.log(`Setting expected members for call ${call.cid}: ${members.length}`);\n this.currentCall = call;\n if (options.ring) {\n this.outgoingCall = call.cid;\n await call.ring();\n }\n await call.join();\n return { success: true };\n }\n async endCall() {\n if (!this.currentCall) {\n console.log('No active call', this.currentCall);\n throw new Error('No active call');\n }\n await this.currentCall.leave();\n this.currentCall = undefined;\n this.cleanupCall();\n return { success: true };\n }\n async setMicrophoneEnabled(options) {\n if (!this.currentCall) {\n console.log('No active call', this.currentCall);\n throw new Error('No active call');\n }\n if (options.enabled) {\n await this.currentCall.microphone.enable();\n }\n else {\n await this.currentCall.microphone.disable();\n }\n return { success: true };\n }\n async setCameraEnabled(options) {\n if (!this.currentCall) {\n console.log('No active call', this.currentCall);\n throw new Error('No active call');\n }\n if (options.enabled) {\n await this.currentCall.camera.enable();\n }\n else {\n await this.currentCall.camera.disable();\n }\n return { success: true };\n }\n async acceptCall() {\n if (!this.incomingCall || !this.client) {\n console.log('No incoming call to accept', this.incomingCall, this.client);\n throw new Error('No incoming call to accept');\n }\n console.log('Accepting call', this.incomingCall);\n const call = this.client.call(this.incomingCall.type, this.incomingCall.id);\n this.currentCall = call;\n console.log('Joining call', call);\n await call.accept();\n await call.join();\n console.log('Joined call', call);\n this.notifyListeners('callEvent', { callId: call.id, state: CallingState.JOINED });\n this.setupParticipantListener();\n return { success: true };\n }\n async rejectCall() {\n if (!this.incomingCall || !this.client) {\n console.log('No incoming call to reject', this.incomingCall, this.client);\n throw new Error('No incoming call to reject');\n }\n console.log('Rejecting call', this.incomingCall);\n const call = this.client.call(this.incomingCall.type, this.incomingCall.id);\n console.log('Leaving call', call);\n await call.reject();\n this.incomingCall = undefined;\n console.log('Rejected call', call);\n this.notifyListeners('callEvent', { callId: call.id, state: CallingState.LEFT });\n this.cleanupCall();\n return { success: true };\n }\n async isCameraEnabled() {\n if (!this.currentCall) {\n console.log('No active call', this.currentCall);\n throw new Error('No active call');\n }\n const enabled = await this.currentCall.camera.enabled;\n return { enabled };\n }\n async getCallStatus() {\n if (!this.currentCall) {\n throw new Error('No active call');\n }\n const callingState = this.currentCall.state.callingState;\n let state;\n switch (callingState) {\n case CallingState.IDLE:\n state = 'idle';\n break;\n case CallingState.RINGING:\n state = 'ringing';\n break;\n case CallingState.JOINING:\n state = 'joining';\n break;\n case CallingState.RECONNECTING:\n state = 'reconnecting';\n break;\n case CallingState.JOINED:\n state = 'joined';\n break;\n case CallingState.LEFT:\n state = 'left';\n break;\n default:\n state = 'unknown';\n }\n return {\n callId: this.currentCall.id,\n state,\n };\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin","CallingState","StreamVideoClient"],"mappings":"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"}