@azure/communication-react 1.7.0-alpha-202307220013 → 1.7.0-alpha-202307261914
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/communication-react.d.ts +78 -34
- package/dist/dist-cjs/communication-react/index.js +107 -66
- package/dist/dist-cjs/communication-react/index.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/participantListSelector.d.ts +1 -0
- package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js +7 -2
- package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js.map +1 -1
- package/dist/dist-esm/communication-react/src/index.d.ts +1 -0
- package/dist/dist-esm/communication-react/src/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/CaptionsBanner.js +3 -3
- package/dist/dist-esm/react-components/src/components/CaptionsBanner.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ParticipantList.d.ts +15 -0
- package/dist/dist-esm/react-components/src/components/ParticipantList.js +25 -8
- package/dist/dist-esm/react-components/src/components/ParticipantList.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/index.d.ts +1 -0
- package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/Captions.style.d.ts +2 -2
- package/dist/dist-esm/react-components/src/components/styles/Captions.style.js +9 -5
- package/dist/dist-esm/react-components/src/components/styles/Captions.style.js.map +1 -1
- package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +3 -0
- package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/cs-CZ/strings.json +2 -2
- package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +3 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +2 -6
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +30 -30
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +51 -27
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.d.ts +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +2 -6
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +7 -7
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +8 -7
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +2 -5
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +7 -5
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js +14 -1
- package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/cs-CZ/strings.json +2 -2
- package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +1 -1
- package/package.json +8 -8
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LocalizationProvider.js","sourceRoot":"","sources":["../../../../../../react-components/src/localization/LocalizationProvider.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AA+BzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;
|
1
|
+
{"version":3,"file":"LocalizationProvider.js","sourceRoot":"","sources":["../../../../../../react-components/src/localization/LocalizationProvider.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AA+BzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAsInD;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAkB,sBAAsB,CAAC,CAAC;AAcpF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAe,EAAE;IACpF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACnC,OAAO,oBAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,IAAG,QAAQ,CAA0B,CAAC;AACpF,CAAC,CAAC;AAEF,kCAAkC;AAClC,MAAM,CAAC,MAAM,SAAS,GAAG,GAAoB,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport React, { createContext, useContext } from 'react';\nimport {\n CameraButtonStrings,\n EndCallButtonStrings,\n ErrorBarStrings,\n MessageStatusIndicatorStrings,\n MessageThreadStrings,\n MicrophoneButtonStrings,\n DevicesButtonStrings,\n ParticipantsButtonStrings,\n ParticipantItemStrings,\n ScreenShareButtonStrings,\n SendBoxStrings,\n TypingIndicatorStrings,\n VideoGalleryStrings\n} from '../components';\n/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */\nimport { HoldButtonStrings } from '../components';\n/* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\nimport { DialpadStrings } from '../components';\n/* @conditional-compile-remove(call-readiness) */\nimport { SitePermissionsStrings } from '../components/DevicePermissions/SitePermissionsScaffolding';\n/* @conditional-compile-remove(call-readiness) */\nimport { BrowserPermissionDeniedStrings } from '../components/DevicePermissions/BrowserPermissionDenied';\n/* @conditional-compile-remove(call-readiness) */\nimport { BrowserPermissionDeniedIOSStrings } from '../components/DevicePermissions/BrowserPermissionDeniedIOS';\n/* @conditional-compile-remove(call-readiness) */ /* @conditional-compile-remove(unsupported-browser) */\nimport { UnsupportedBrowserStrings } from '../components/UnsupportedBrowser';\n/* @conditional-compile-remove(one-to-n-calling) */\n// @conditional-compile-remove(PSTN-calls)\nimport { VideoTileStrings } from '../components/VideoTile';\nimport { COMPONENT_LOCALE_EN_US } from './locales';\n/* @conditional-compile-remove(unsupported-browser) */\nimport { UnsupportedBrowserVersionStrings } from '../components/UnsupportedBrowserVersion';\n/* @conditional-compile-remove(unsupported-browser) */\nimport { UnsupportedOperatingSystemStrings } from '../components/UnsupportedOperatingSystem';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { VerticalGalleryStrings } from '../components/VerticalGallery';\n/* @conditional-compile-remove(total-participant-count) */\nimport { ParticipantListStrings } from '../components/ParticipantList';\n/* @conditional-compile-remove(mention) */\nimport { MentionPopoverStrings } from '../components/MentionPopover';\n\n/**\n * Locale information for all components exported from this library.\n *\n * @public\n */\nexport interface ComponentLocale {\n /** Strings for components */\n strings: ComponentStrings;\n /* @conditional-compile-remove(date-time-customization) */\n /**\n * Optional function to provide customized date format.\n * @beta\n */\n onDisplayDateTimeString?: (messageDate: Date) => string;\n}\n\n/**\n * Strings used by all components exported from this library.\n *\n * @public\n */\nexport interface ComponentStrings {\n /** Strings for MessageThread */\n messageThread: MessageThreadStrings;\n /** Strings for ParticipantItem */\n participantItem: ParticipantItemStrings;\n /** Strings for CameraButton */\n cameraButton: CameraButtonStrings;\n /** Strings for MicrophoneButton */\n microphoneButton: MicrophoneButtonStrings;\n /** Strings for EndCallButton */\n endCallButton: EndCallButtonStrings;\n /** Strings for DevicesButton */\n devicesButton: DevicesButtonStrings;\n /** Strings for ParticipantsButton */\n participantsButton: ParticipantsButtonStrings;\n /** Strings for ScreenShareButton */\n screenShareButton: ScreenShareButtonStrings;\n /** Strings for TypingIndicator */\n typingIndicator: TypingIndicatorStrings;\n /** Strings for SendBox */\n sendBox: SendBoxStrings;\n /* @conditional-compile-remove(mention) */\n /** Strings for MentionPopover */\n mentionPopover: MentionPopoverStrings;\n /** Strings for MessageStatusIndicator */\n messageStatusIndicator: MessageStatusIndicatorStrings;\n /** Strings for ErroBar */\n errorBar: ErrorBarStrings;\n /** Strings for VideoGallery */\n videoGallery: VideoGalleryStrings;\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n /** Strings for Dialpad */\n dialpad: DialpadStrings;\n /* @conditional-compile-remove(one-to-n-calling) */\n // @conditional-compile-remove(PSTN-calls)\n /** Strings for VideoTile */\n videoTile: VideoTileStrings;\n /* @conditional-compile-remove(one-to-n-calling) @conditional-compile-remove(PSTN-calls) */\n /** Strings for HoldButton */\n holdButton: HoldButtonStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission request prompt */\n CameraAndMicrophoneSitePermissionsRequest: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission request prompt */\n CameraSitePermissionsRequest: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission request prompt */\n MicrophoneSitePermissionsRequest: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission generic checking prompt */\n CameraAndMicrophoneSitePermissionsCheck: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission generic checking prompt */\n CameraSitePermissionsCheck: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission generic checking prompt */\n MicrophoneSitePermissionsCheck: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt */\n CameraAndMicrophoneSitePermissionsDenied: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt for safari browsers*/\n CameraAndMicrophoneSitePermissionsDeniedSafari: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt */\n CameraSitePermissionsDenied: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt */\n MicrophoneSitePermissionsDenied: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt for safari browsers*/\n CameraSitePermissionsDeniedSafari: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt for safari browsers*/\n MicrophoneSitePermissionsDeniedSafari: SitePermissionsStrings;\n /* @conditional-compile-remove(unsupported-browser) */\n /** Strings for unsupported browser UI */\n UnsupportedBrowser: UnsupportedBrowserStrings;\n /* @conditional-compile-remove(unsupported-browser) */\n /** Strings for unsupported browser version UI */\n UnsupportedBrowserVersion: UnsupportedBrowserVersionStrings;\n /* @conditional-compile-remove(unsupported-browser) */\n /** Strings for unsupported browser version UI */\n UnsupportedOperatingSystem: UnsupportedOperatingSystemStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for BrowserPemissionDenied */\n BrowserPermissionDenied: BrowserPermissionDeniedStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for BrowserPemissionDeniedIOS */\n BrowserPermissionDeniedIOS: BrowserPermissionDeniedIOSStrings;\n /* @conditional-compile-remove(vertical-gallery) */\n /**\n * Strings for the VerticalGallery.\n */\n VerticalGallery: VerticalGalleryStrings;\n /* @conditional-compile-remove(total-participant-count) */\n /** Strings for the participant list component */\n ParticipantList: ParticipantListStrings;\n}\n\n/**\n * Context for providing localized strings to components exported from this library.\n *\n * @public\n */\nexport const LocaleContext = createContext<ComponentLocale>(COMPONENT_LOCALE_EN_US);\n\n/**\n * Props for {@link LocalizationProvider}.\n *\n * @public\n */\nexport type LocalizationProviderProps = {\n /** Locale context to provide components */\n locale: ComponentLocale;\n /** Children to provide locale context. */\n children: React.ReactNode;\n};\n\n/**\n * Provider to provide localized strings for this library's react components.\n *\n * @remarks Components will be provided localized strings in English (US) by default if this\n * provider is not used.\n *\n * @public\n */\nexport const LocalizationProvider = (props: LocalizationProviderProps): JSX.Element => {\n const { locale, children } = props;\n return <LocaleContext.Provider value={locale}>{children}</LocaleContext.Provider>;\n};\n\n/** React hook to access locale */\nexport const useLocale = (): ComponentLocale => useContext(LocaleContext);\n"]}
|
@@ -53,8 +53,8 @@
|
|
53
53
|
"cameraMenuTitle": "Kamera",
|
54
54
|
"cameraMenuTooltip": "Zvolit kameru",
|
55
55
|
"cameraButtonSplitRoleDescription": "Tlačítko rozdělení",
|
56
|
-
"onSplitButtonAriaLabel": "Vypnout možnosti kamery
|
57
|
-
"offSplitButtonAriaLabel": "Zapnout možnosti kamery
|
56
|
+
"onSplitButtonAriaLabel": "Vypnout kameru a možnosti kamery",
|
57
|
+
"offSplitButtonAriaLabel": "Zapnout kameru a možnosti kamery",
|
58
58
|
"cameraActionTurnedOnAnnouncement": "Vaše kamera je zapnutá",
|
59
59
|
"cameraActionTurnedOffAnnouncement": "Vaše kamera je vypnutá",
|
60
60
|
"onSplitButtonPrimaryActionCamera": "Vypnout kameru",
|
@@ -9,6 +9,9 @@
|
|
9
9
|
"participantStateRinging": "Calling...",
|
10
10
|
"participantStateHold": "On hold"
|
11
11
|
},
|
12
|
+
"ParticipantList": {
|
13
|
+
"overflowParticipantCount": "+{overflowCount} more"
|
14
|
+
},
|
12
15
|
"typingIndicator": {
|
13
16
|
"singleUser": "{user} is typing ...",
|
14
17
|
"multipleUsers": "{users} are typing ...",
|
@@ -4,7 +4,7 @@ import { StartCaptionsOptions } from '@azure/communication-calling';
|
|
4
4
|
import { TeamsCallAgent } from '@azure/communication-calling';
|
5
5
|
import { RoomCallLocator } from '@azure/communication-calling';
|
6
6
|
import { AddPhoneNumberOptions, DtmfTone } from '@azure/communication-calling';
|
7
|
-
import { CommonCallAdapter, CallEndedListener, CallIdChangedListener, CallAdapterState, DisplayNameChangedListener, IsMutedChangedListener, IsLocalScreenSharingActiveChangedListener, IsSpeakingChangedListener, ParticipantsJoinedListener, ParticipantsLeftListener, DiagnosticChangedEventListner, CallAdapter } from './CallAdapter';
|
7
|
+
import { CommonCallAdapter, CallEndedListener, CallIdChangedListener, CallAdapterState, DisplayNameChangedListener, IsMutedChangedListener, IsLocalScreenSharingActiveChangedListener, IsSpeakingChangedListener, ParticipantsJoinedListener, ParticipantsLeftListener, DiagnosticChangedEventListner, CallAdapter, JoinCallOptions } from './CallAdapter';
|
8
8
|
import { TransferRequestedListener } from './CallAdapter';
|
9
9
|
import { CaptionsReceivedListener, IsCaptionsActiveChangedListener } from './CallAdapter';
|
10
10
|
import { VideoBackgroundImage, VideoBackgroundEffect } from './CallAdapter';
|
@@ -45,11 +45,7 @@ export declare class AzureCommunicationCallAdapter<AgentType extends CallAgent |
|
|
45
45
|
queryMicrophones(): Promise<AudioDeviceInfo[]>;
|
46
46
|
querySpeakers(): Promise<AudioDeviceInfo[]>;
|
47
47
|
askDevicePermission(constrain: PermissionConstraints): Promise<void>;
|
48
|
-
joinCall(
|
49
|
-
joinCallWithOptions(options?: {
|
50
|
-
microphoneOn?: boolean;
|
51
|
-
cameraOn?: boolean;
|
52
|
-
}): CallTypeOf<AgentType> | undefined;
|
48
|
+
joinCall(options?: boolean | JoinCallOptions): CallTypeOf<AgentType> | undefined;
|
53
49
|
private _joinCall;
|
54
50
|
createStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void | CreateVideoStreamViewResult>;
|
55
51
|
disposeStreamView(remoteUserId?: string): Promise<void>;
|
@@ -310,7 +310,6 @@ export class AzureCommunicationCallAdapter {
|
|
310
310
|
this.getState.bind(this);
|
311
311
|
this.dispose.bind(this);
|
312
312
|
this.joinCall.bind(this);
|
313
|
-
this.joinCallWithOptions.bind(this);
|
314
313
|
this.leaveCall.bind(this);
|
315
314
|
this.setCamera.bind(this);
|
316
315
|
this.setMicrophone.bind(this);
|
@@ -407,41 +406,42 @@ export class AzureCommunicationCallAdapter {
|
|
407
406
|
}));
|
408
407
|
});
|
409
408
|
}
|
410
|
-
joinCall(
|
409
|
+
joinCall(options) {
|
411
410
|
var _a, _b;
|
412
411
|
if (_isInCall((_b = (_a = this.getState().call) === null || _a === void 0 ? void 0 : _a.state) !== null && _b !== void 0 ? _b : 'None')) {
|
413
412
|
throw new Error('You are already in the call!');
|
414
413
|
}
|
415
414
|
return this.teeErrorToEventEmitter(() => {
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
415
|
+
var _a, _b;
|
416
|
+
let audioOptions;
|
417
|
+
let videoOptions;
|
418
|
+
// if using the deprecated joinCall API
|
419
|
+
if (typeof options !== 'object') {
|
420
|
+
const microphoneOn = options;
|
421
|
+
audioOptions = { muted: !(microphoneOn !== null && microphoneOn !== void 0 ? microphoneOn : this.getState().isLocalPreviewMicrophoneEnabled) };
|
422
|
+
// TODO: find a way to expose stream to here
|
423
|
+
videoOptions = { localVideoStreams: this.localStream ? [this.localStream] : undefined };
|
424
|
+
}
|
425
|
+
else {
|
426
|
+
// if using the options bag
|
427
|
+
// undefined = keep = use precall state
|
428
|
+
// true = turn on
|
429
|
+
// false = turn off
|
430
|
+
const microphoneState = (_a = options.microphoneOn) !== null && _a !== void 0 ? _a : 'keep';
|
431
|
+
const cameraState = (_b = options.cameraOn) !== null && _b !== void 0 ? _b : 'keep';
|
432
|
+
audioOptions = {
|
433
|
+
muted: !(microphoneState === 'keep' ? this.getState().isLocalPreviewMicrophoneEnabled : microphoneState)
|
434
|
+
};
|
435
|
+
const selectedCamera = getSelectedCameraFromAdapterState(this.getState());
|
436
|
+
const localStream = selectedCamera ? new SDKLocalVideoStream(selectedCamera) : undefined;
|
437
|
+
const precallVideoOptions = { localVideoStreams: this.localStream ? [this.localStream] : undefined };
|
438
|
+
videoOptions =
|
439
|
+
cameraState === 'keep'
|
440
|
+
? precallVideoOptions
|
441
|
+
: localStream && (options === null || options === void 0 ? void 0 : options.cameraOn)
|
442
|
+
? { localVideoStreams: [localStream] }
|
443
|
+
: {};
|
428
444
|
}
|
429
|
-
const call = this._joinCall(audioOptions, videoOptions);
|
430
|
-
this.processNewCall(call);
|
431
|
-
return call;
|
432
|
-
});
|
433
|
-
}
|
434
|
-
joinCallWithOptions(options) {
|
435
|
-
var _a, _b;
|
436
|
-
if (_isInCall((_b = (_a = this.getState().call) === null || _a === void 0 ? void 0 : _a.state) !== null && _b !== void 0 ? _b : 'None')) {
|
437
|
-
throw new Error('You are already in the call!');
|
438
|
-
}
|
439
|
-
const { microphoneOn, cameraOn } = options !== null && options !== void 0 ? options : {};
|
440
|
-
return this.teeErrorToEventEmitter(() => {
|
441
|
-
const audioOptions = { muted: !(microphoneOn !== null && microphoneOn !== void 0 ? microphoneOn : this.getState().isLocalPreviewMicrophoneEnabled) };
|
442
|
-
const selectedCamera = getSelectedCameraFromAdapterState(this.getState());
|
443
|
-
const localStream = selectedCamera ? new SDKLocalVideoStream(selectedCamera) : undefined;
|
444
|
-
const videoOptions = localStream && cameraOn ? { localVideoStreams: [localStream] } : {};
|
445
445
|
/* @conditional-compile-remove(teams-adhoc-call) */
|
446
446
|
/* @conditional-compile-remove(PSTN-calls) */
|
447
447
|
if (isOutboundCall(this.locator)) {
|