| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | 
							- import { NativeModules, NativeEventEmitter } from 'react-native';
 - 
 - import { getName } from '../../app';
 - 
 - /**
 -  * Thin wrapper around Apple's CallKit functionality.
 -  *
 -  * In CallKit requests are performed via actions (either user or system started)
 -  * and async events are reported via dedicated methods. This class exposes that
 -  * functionality in the form of methods and events. One important thing to note
 -  * is that even if an action is started by the system (because the user pressed
 -  * the "end call" button in the CallKit view, for example) the event will be
 -  * emitted in the same way as it would if the action originated from calling
 -  * the "endCall" method in this class, for example.
 -  *
 -  * Emitted events:
 -  * - performAnswerCallAction: The user pressed the answer button.
 -  * - performEndCallAction: The call should be ended.
 -  * - performSetMutedCallAction: The call muted state should change. The
 -  *   ancillary `data` object contains a `muted` attribute.
 -  * - providerDidReset: The system has reset, all calls should be terminated.
 -  *   This event gets no associated data.
 -  *
 -  * All events get a `data` object with a `callUUID` property, unless stated
 -  * otherwise.
 -  */
 - let CallKit = NativeModules.RNCallKit;
 - 
 - // XXX Rather than wrapping RNCallKit in a new class and forwarding the many
 - // methods of the latter to the former, add the one additional method that we
 - // need to RNCallKit.
 - if (CallKit) {
 -     const eventEmitter = new NativeEventEmitter(CallKit);
 - 
 -     CallKit = {
 -         ...CallKit,
 -         addListener: eventEmitter.addListener.bind(eventEmitter),
 -         registerSubscriptions(context, delegate) {
 -             CallKit.setProviderConfiguration({
 -                 iconTemplateImageName: 'CallKitIcon',
 -                 localizedName: getName()
 -             });
 - 
 -             return [
 -                 CallKit.addListener(
 -                     'performEndCallAction',
 -                     delegate._onPerformEndCallAction,
 -                     context),
 -                 CallKit.addListener(
 -                     'performSetMutedCallAction',
 -                     delegate._onPerformSetMutedCallAction,
 -                     context),
 - 
 -                 // According to CallKit's documentation, when the system resets
 -                 // we should terminate all calls. Hence, providerDidReset is
 -                 // the same to us as performEndCallAction.
 -                 CallKit.addListener(
 -                     'providerDidReset',
 -                     delegate._onPerformEndCallAction,
 -                     context)
 -             ];
 -         }
 -     };
 - }
 - 
 - export default CallKit;
 
 
  |