17
17
import com .azure .android .communication .ui .calling .models .CallCompositeAudioVideoMode ;
18
18
import com .azure .android .communication .ui .calling .models .CallCompositeCallHistoryRecord ;
19
19
import com .azure .android .communication .ui .calling .models .CallCompositeDebugInfo ;
20
- import com .azure .android .communication .ui .calling .models .CallCompositeDismissedEvent ;
21
20
import com .azure .android .communication .ui .calling .models .CallCompositeGroupCallLocator ;
22
21
import com .azure .android .communication .ui .calling .models .CallCompositeJoinLocator ;
23
22
import com .azure .android .communication .ui .calling .models .CallCompositeLocalOptions ;
24
23
import com .azure .android .communication .ui .calling .models .CallCompositeLocalizationOptions ;
25
24
import com .azure .android .communication .ui .calling .models .CallCompositeMultitaskingOptions ;
26
25
import com .azure .android .communication .ui .calling .models .CallCompositeParticipantViewData ;
27
26
import com .azure .android .communication .ui .calling .models .CallCompositeSetupScreenViewData ;
28
- import com .azure .android .communication .ui .calling .models .CallCompositeRemoteOptions ;
29
27
import com .azure .android .communication .ui .calling .models .CallCompositeCallScreenControlBarOptions ;
30
28
import com .azure .android .communication .ui .calling .models .CallCompositeCallScreenOptions ;
31
29
import com .azure .android .communication .ui .calling .models .CallCompositeSupportedLocale ;
49
47
import java .util .ArrayList ;
50
48
import java .util .List ;
51
49
import java .util .Locale ;
52
- import java .util .Random ;
53
50
import java .util .UUID ;
54
51
55
52
import okhttp3 .OkHttpClient ;
@@ -177,21 +174,23 @@ public void launchComposite(String displayName, String meetingInput, ReadableMap
177
174
178
175
CallCompositeCallScreenOptions callScreenOptions = new CallCompositeCallScreenOptions ();
179
176
callScreenOptions .setControlBarOptions (callScreenControlBarOptions );
180
-
181
- CallComposite callComposite = new CallCompositeBuilder ()
182
- .localization (new CallCompositeLocalizationOptions (Locale .forLanguageTag (selectedLanguage ), layoutDirection ))
183
- .setupScreenOrientation (getCompositeDefinedOrientation (setupOrientation ))
184
- .callScreenOrientation (getCompositeDefinedOrientation (callOrientation ))
185
- .multitasking (new CallCompositeMultitaskingOptions (true ))
186
- .callScreenOptions (callScreenOptions )
187
- .build ();
188
-
177
+
189
178
try {
190
179
CommunicationTokenRefreshOptions communicationTokenRefreshOptions =
191
180
new CommunicationTokenRefreshOptions (this ::fetchToken , true );
192
181
193
182
CommunicationTokenCredential communicationTokenCredential = new CommunicationTokenCredential (communicationTokenRefreshOptions );
194
183
184
+ CallComposite callComposite = new CallCompositeBuilder ()
185
+ .localization (new CallCompositeLocalizationOptions (Locale .forLanguageTag (selectedLanguage ), layoutDirection ))
186
+ .setupScreenOrientation (getCompositeDefinedOrientation (setupOrientation ))
187
+ .callScreenOrientation (getCompositeDefinedOrientation (callOrientation ))
188
+ .multitasking (new CallCompositeMultitaskingOptions (true ))
189
+ .callScreenOptions (callScreenOptions )
190
+ .applicationContext (context .getApplicationContext ())
191
+ .credential (communicationTokenCredential )
192
+ .displayName (displayName )
193
+ .build ();
195
194
callComposite .addOnErrorEventHandler (eventHandler -> {
196
195
Log .d (TAG , "================= application is logging exception =================" );
197
196
Log .d (TAG , eventHandler .getCause ().toString ());
@@ -237,17 +236,12 @@ public void launchComposite(String displayName, String meetingInput, ReadableMap
237
236
238
237
callComposite .addOnDismissedEventHandler ((dismissedEvent ) -> {
239
238
Log .d (TAG , "================= application is logging call composite dismissed =================" );
239
+ callComposite .dismiss ();
240
240
});
241
241
242
242
if (URLUtil .isValidUrl (meetingInput .trim ())) {
243
243
CallCompositeJoinLocator locator = new CallCompositeTeamsMeetingLinkLocator (meetingInput );
244
244
245
- CallCompositeRemoteOptions remoteOptions = new CallCompositeRemoteOptions (
246
- locator ,
247
- communicationTokenCredential ,
248
- displayName );
249
-
250
-
251
245
CallCompositeLocalOptions localOptions = new CallCompositeLocalOptions ();
252
246
253
247
if (localAvatarImageResource != null ) {
@@ -268,15 +262,17 @@ public void launchComposite(String displayName, String meetingInput, ReadableMap
268
262
}
269
263
localOptions .setAudioVideoMode (CallCompositeAudioVideoMode .AUDIO_ONLY );
270
264
271
- callComposite .launch (context , remoteOptions , localOptions );
265
+ callComposite .launch (context , locator , localOptions );
272
266
273
267
} else {
274
- CallCompositeJoinLocator locator = new CallCompositeGroupCallLocator (UUID .fromString (meetingInput ));
268
+ boolean isUUID = false ;
269
+
270
+ try {
271
+ UUID uuid = UUID .fromString (meetingInput );
272
+ isUUID = true ;
273
+ } catch (Exception ignored ) {
274
+ }
275
275
276
- CallCompositeRemoteOptions remoteOptions = new CallCompositeRemoteOptions (
277
- locator ,
278
- communicationTokenCredential ,
279
- displayName );
280
276
CallCompositeLocalOptions localOptions = new CallCompositeLocalOptions ();
281
277
282
278
if (localAvatarImageResource != null ) {
@@ -290,15 +286,26 @@ public void launchComposite(String displayName, String meetingInput, ReadableMap
290
286
localOptions .setParticipantViewData (participantViewData );
291
287
292
288
}
293
-
294
289
if (title != null ) {
295
290
CallCompositeSetupScreenViewData setupViewData = new CallCompositeSetupScreenViewData ()
296
- .setTitle (title )
297
- .setSubtitle (subtitle );
291
+ .setTitle (title )
292
+ .setSubtitle (subtitle );
298
293
localOptions .setSetupScreenViewData (setupViewData );
299
294
}
300
-
301
- callComposite .launch (context , remoteOptions , localOptions );
295
+ if (isUUID ) {
296
+ CallCompositeJoinLocator locator = new CallCompositeGroupCallLocator (UUID .fromString (meetingInput ));
297
+ callComposite .launch (context , locator , localOptions );
298
+ } else {
299
+ List <CommunicationIdentifier > identifiers = new ArrayList <>();
300
+ String [] rawIdArray = meetingInput .split ("," );
301
+ for (String rawId : rawIdArray ) {
302
+ rawId = rawId .trim ();
303
+ if (!rawId .isEmpty ()) {
304
+ identifiers .add (CommunicationIdentifier .fromRawId (rawId ));
305
+ }
306
+ }
307
+ callComposite .launch (context , identifiers , localOptions );
308
+ }
302
309
}
303
310
304
311
promise .resolve (null );
0 commit comments