199da06d0Sopenharmony_ci/**
299da06d0Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
399da06d0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
499da06d0Sopenharmony_ci * you may not use this file except in compliance with the License.
599da06d0Sopenharmony_ci * You may obtain a copy of the License at
699da06d0Sopenharmony_ci *
799da06d0Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
899da06d0Sopenharmony_ci *
999da06d0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1099da06d0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1199da06d0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1299da06d0Sopenharmony_ci * See the License for the specific language governing permissions and
1399da06d0Sopenharmony_ci * limitations under the License.
1499da06d0Sopenharmony_ci */
1599da06d0Sopenharmony_ci
1699da06d0Sopenharmony_ci/**
1799da06d0Sopenharmony_ci * @file: Voice call API interface call
1899da06d0Sopenharmony_ci */
1999da06d0Sopenharmony_ci
2099da06d0Sopenharmony_ciimport call from '@ohos.telephony.call';
2199da06d0Sopenharmony_ciimport LogUtils from '../common/utils/LogUtils';
2299da06d0Sopenharmony_ci
2399da06d0Sopenharmony_ciconst prefixLog = 'callui service:@ohos.telephony.call:';
2499da06d0Sopenharmony_ciconst TAG = 'TelephonyApi';
2599da06d0Sopenharmony_ci
2699da06d0Sopenharmony_ciexport default class TelephonyApi {
2799da06d0Sopenharmony_ci
2899da06d0Sopenharmony_ci  /**
2999da06d0Sopenharmony_ci   * register call state callback
3099da06d0Sopenharmony_ci   *
3199da06d0Sopenharmony_ci   * @param { Function } callBack - inject an Function
3299da06d0Sopenharmony_ci   */
3399da06d0Sopenharmony_ci  public registerCallStateCallback(callBack) {
3499da06d0Sopenharmony_ci    try {
3599da06d0Sopenharmony_ci      call.on('callDetailsChange', (data) => {
3699da06d0Sopenharmony_ci        if (!data) {
3799da06d0Sopenharmony_ci          LogUtils.i(TAG, prefixLog + 'call.on registerCallStateCallback')
3899da06d0Sopenharmony_ci          return;
3999da06d0Sopenharmony_ci        }
4099da06d0Sopenharmony_ci        LogUtils.i(TAG, prefixLog + 'call.on registerCallStateCallback callState: ' + JSON.stringify(data.callState))
4199da06d0Sopenharmony_ci        callBack(data);
4299da06d0Sopenharmony_ci      });
4399da06d0Sopenharmony_ci    } catch (err) {
4499da06d0Sopenharmony_ci      LogUtils.i(TAG, 'call.on registerCallStateCallback catch:' + JSON.stringify(err));
4599da06d0Sopenharmony_ci    }
4699da06d0Sopenharmony_ci  }
4799da06d0Sopenharmony_ci
4899da06d0Sopenharmony_ci  /**
4999da06d0Sopenharmony_ci   * onRegister call state callback
5099da06d0Sopenharmony_ci   */
5199da06d0Sopenharmony_ci  public unRegisterCallStateCallback() {
5299da06d0Sopenharmony_ci    try {
5399da06d0Sopenharmony_ci      call.off('callDetailsChange', (data) => {
5499da06d0Sopenharmony_ci        if (!data) {
5599da06d0Sopenharmony_ci          LogUtils.i(TAG, prefixLog + 'call.off unRegisterCallStateCallback')
5699da06d0Sopenharmony_ci          return;
5799da06d0Sopenharmony_ci        }
5899da06d0Sopenharmony_ci        LogUtils.i(TAG, prefixLog + 'call.off unRegisterCallStateCallback')
5999da06d0Sopenharmony_ci      });
6099da06d0Sopenharmony_ci    } catch (err) {
6199da06d0Sopenharmony_ci      LogUtils.i(TAG, 'call.off unRegisterCallStateCallback catch:' + JSON.stringify(err));
6299da06d0Sopenharmony_ci    }
6399da06d0Sopenharmony_ci  }
6499da06d0Sopenharmony_ci
6599da06d0Sopenharmony_ci  /**
6699da06d0Sopenharmony_ci   * accept call
6799da06d0Sopenharmony_ci   *
6899da06d0Sopenharmony_ci   * @param { number } callId - call id
6999da06d0Sopenharmony_ci   */
7099da06d0Sopenharmony_ci  public acceptCall = function (callId) {
7199da06d0Sopenharmony_ci    call.answerCall(callId).then((res) => {
7299da06d0Sopenharmony_ci      LogUtils.i(TAG, prefixLog + 'call.answerCall callId: ' + JSON.stringify(callId))
7399da06d0Sopenharmony_ci    }).catch((err) => {
7499da06d0Sopenharmony_ci      LogUtils.i(TAG, prefixLog + 'call.answerCall catch : ' + JSON.stringify(err))
7599da06d0Sopenharmony_ci    })
7699da06d0Sopenharmony_ci  }
7799da06d0Sopenharmony_ci
7899da06d0Sopenharmony_ci  /**
7999da06d0Sopenharmony_ci   * reject call
8099da06d0Sopenharmony_ci   *
8199da06d0Sopenharmony_ci   * @param { number } callId - call id
8299da06d0Sopenharmony_ci   *
8399da06d0Sopenharmony_ci   * @param { boolean } isSendSms - is send sms
8499da06d0Sopenharmony_ci   *
8599da06d0Sopenharmony_ci   * @param { string } msg - message string
8699da06d0Sopenharmony_ci   */
8799da06d0Sopenharmony_ci  public rejectCall = function (callId, isSendSms = false, msg = '') {
8899da06d0Sopenharmony_ci    const rejectCallPromise = isSendSms ? call.rejectCall(callId, {
8999da06d0Sopenharmony_ci      messageContent: msg
9099da06d0Sopenharmony_ci    }) : call.rejectCall(callId);
9199da06d0Sopenharmony_ci    rejectCallPromise.then((res) => {
9299da06d0Sopenharmony_ci      LogUtils.i(TAG, prefixLog + 'then:rejectCall')
9399da06d0Sopenharmony_ci    })
9499da06d0Sopenharmony_ci      .catch((err) => {
9599da06d0Sopenharmony_ci        LogUtils.i(TAG, prefixLog + 'catch:rejectCall : ' + JSON.stringify(err))
9699da06d0Sopenharmony_ci      });
9799da06d0Sopenharmony_ci  };
9899da06d0Sopenharmony_ci
9999da06d0Sopenharmony_ci  /**
10099da06d0Sopenharmony_ci   * hang up Call
10199da06d0Sopenharmony_ci   *
10299da06d0Sopenharmony_ci   * @param { number } callId - call id
10399da06d0Sopenharmony_ci   *
10499da06d0Sopenharmony_ci   * @return { Object } promise object
10599da06d0Sopenharmony_ci   */
10699da06d0Sopenharmony_ci  public hangUpCall = (callId) => new Promise((resolve, reject) => {
10799da06d0Sopenharmony_ci    call.hangUpCall(callId).then((res) => {
10899da06d0Sopenharmony_ci      resolve(res);
10999da06d0Sopenharmony_ci      LogUtils.i(TAG, prefixLog + 'then:hangUpCall : %s' + JSON.stringify(callId))
11099da06d0Sopenharmony_ci    }).catch((err) => {
11199da06d0Sopenharmony_ci      reject(err);
11299da06d0Sopenharmony_ci      LogUtils.i(TAG, prefixLog + 'catch:hangUpCall : %s' + JSON.stringify(err))
11399da06d0Sopenharmony_ci    });
11499da06d0Sopenharmony_ci  });
11599da06d0Sopenharmony_ci}
11699da06d0Sopenharmony_ci
11799da06d0Sopenharmony_ci
118