199da06d0Sopenharmony_ci/**
299da06d0Sopenharmony_ci * Copyright (c) 2023 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 * Message/AirplaneMode utils
1799da06d0Sopenharmony_ci */
1899da06d0Sopenharmony_ciconst SETTING_AIRPLANE_MODE_URI = 'datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true';
1999da06d0Sopenharmony_ciconst QUERY_AIRPLANE_MODE_KEY = 'airplane_mode';
2099da06d0Sopenharmony_ciconst TAG = 'AirplaneMode';
2199da06d0Sopenharmony_ci
2299da06d0Sopenharmony_ciimport dataShare from '@ohos.data.dataShare';
2399da06d0Sopenharmony_ciimport dataSharePredicates from '@ohos.data.dataSharePredicates';
2499da06d0Sopenharmony_ciimport LogUtils from './LogUtils';
2599da06d0Sopenharmony_ci
2699da06d0Sopenharmony_cilet dataShareHelper;
2799da06d0Sopenharmony_ci
2899da06d0Sopenharmony_ci/**
2999da06d0Sopenharmony_ci * add AirPlaneMode Listener.
3099da06d0Sopenharmony_ci */
3199da06d0Sopenharmony_ciexport function addAirPlaneModeListener(callback) {
3299da06d0Sopenharmony_ci  LogUtils.i(TAG, 'addAirPlaneModeListener');
3399da06d0Sopenharmony_ci  try {
3499da06d0Sopenharmony_ci    dataShare.createDataShareHelper(globalThis.calluiAbilityContext, SETTING_AIRPLANE_MODE_URI, (err, data) => {
3599da06d0Sopenharmony_ci      if (err != undefined) {
3699da06d0Sopenharmony_ci        LogUtils.e(TAG, 'addAirPlaneModeListener error: code: ' + err.code + ', message: ' + err.message);
3799da06d0Sopenharmony_ci        return;
3899da06d0Sopenharmony_ci      }
3999da06d0Sopenharmony_ci      dataShareHelper = data;
4099da06d0Sopenharmony_ci      try {
4199da06d0Sopenharmony_ci        dataShareHelper.on('dataChange', SETTING_AIRPLANE_MODE_URI, () => {
4299da06d0Sopenharmony_ci          LogUtils.i(TAG, 'addAirPlaneModeListener dataChange');
4399da06d0Sopenharmony_ci          queryAirPlaneMode(callback);
4499da06d0Sopenharmony_ci        });
4599da06d0Sopenharmony_ci        queryAirPlaneMode(callback);
4699da06d0Sopenharmony_ci        LogUtils.i(TAG, 'addAirPlaneModeListener success');
4799da06d0Sopenharmony_ci      } catch (err) {
4899da06d0Sopenharmony_ci        LogUtils.e(TAG, 'addAirPlaneModeListener error: code: ' + err.code + ', message: ' + err.message);
4999da06d0Sopenharmony_ci      }
5099da06d0Sopenharmony_ci    });
5199da06d0Sopenharmony_ci  } catch (err) {
5299da06d0Sopenharmony_ci    LogUtils.e(TAG, 'addAirPlaneModeListener error: code: ' + err.code + ', message: ' + err.message);
5399da06d0Sopenharmony_ci  }
5499da06d0Sopenharmony_ci}
5599da06d0Sopenharmony_ci
5699da06d0Sopenharmony_ci/**
5799da06d0Sopenharmony_ci * remove AirPlaneMode Listener.
5899da06d0Sopenharmony_ci */
5999da06d0Sopenharmony_ciexport function removeAirPlaneModeListener() {
6099da06d0Sopenharmony_ci  LogUtils.i(TAG, 'removeAirPlaneModeListener');
6199da06d0Sopenharmony_ci  if (!dataShareHelper) {
6299da06d0Sopenharmony_ci    LogUtils.e(TAG, 'removeAirPlaneModeListener dataShareHelper null');
6399da06d0Sopenharmony_ci    return;
6499da06d0Sopenharmony_ci  }
6599da06d0Sopenharmony_ci  try {
6699da06d0Sopenharmony_ci    dataShareHelper.off('dataChange', SETTING_AIRPLANE_MODE_URI, () => {
6799da06d0Sopenharmony_ci      LogUtils.i(TAG, 'removeAirPlaneModeListener dataChange');
6899da06d0Sopenharmony_ci    });
6999da06d0Sopenharmony_ci  } catch (err) {
7099da06d0Sopenharmony_ci    LogUtils.e(TAG, 'removeAirPlaneModeListener error: code: ' + err.code + ', message: ' + err.message);
7199da06d0Sopenharmony_ci  }
7299da06d0Sopenharmony_ci}
7399da06d0Sopenharmony_ci
7499da06d0Sopenharmony_ci/**
7599da06d0Sopenharmony_ci * turnOn AirPlaneMode.
7699da06d0Sopenharmony_ci */
7799da06d0Sopenharmony_ciexport function turnOnAirPlaneMode() {
7899da06d0Sopenharmony_ci  LogUtils.i(TAG, 'turnOnAirPlaneMode');
7999da06d0Sopenharmony_ci  if (!dataShareHelper) {
8099da06d0Sopenharmony_ci    LogUtils.e(TAG, 'turnOnAirPlaneMode dataShareHelper null');
8199da06d0Sopenharmony_ci    return;
8299da06d0Sopenharmony_ci  }
8399da06d0Sopenharmony_ci  let valueBucket = {
8499da06d0Sopenharmony_ci    'KEYWORD': QUERY_AIRPLANE_MODE_KEY,
8599da06d0Sopenharmony_ci    'VALUE': true
8699da06d0Sopenharmony_ci  };
8799da06d0Sopenharmony_ci  try {
8899da06d0Sopenharmony_ci    let da = new dataSharePredicates.DataSharePredicates();
8999da06d0Sopenharmony_ci    dataShareHelper.update(SETTING_AIRPLANE_MODE_URI, da, valueBucket, (err, data) => {
9099da06d0Sopenharmony_ci      if (err != undefined) {
9199da06d0Sopenharmony_ci        LogUtils.e(TAG, 'turnOnAirPlaneMode update error: err: ' + err);
9299da06d0Sopenharmony_ci        return;
9399da06d0Sopenharmony_ci      }
9499da06d0Sopenharmony_ci      LogUtils.i(TAG, 'turnOnAirPlaneMode update succeed');
9599da06d0Sopenharmony_ci    });
9699da06d0Sopenharmony_ci  } catch (err) {
9799da06d0Sopenharmony_ci    LogUtils.e(TAG, 'turnOnAirPlaneMode error: code: ' + err.code + ', message: ' + err.message);
9899da06d0Sopenharmony_ci  }
9999da06d0Sopenharmony_ci}
10099da06d0Sopenharmony_ci
10199da06d0Sopenharmony_ci/**
10299da06d0Sopenharmony_ci * turnOff AirPlaneMode.
10399da06d0Sopenharmony_ci */
10499da06d0Sopenharmony_ciexport function turnOffAirPlaneMode() {
10599da06d0Sopenharmony_ci  LogUtils.i(TAG, 'turnOffAirPlaneMode');
10699da06d0Sopenharmony_ci  if (!dataShareHelper) {
10799da06d0Sopenharmony_ci    LogUtils.e(TAG, 'turnOffAirPlaneMode dataShareHelper null');
10899da06d0Sopenharmony_ci    return;
10999da06d0Sopenharmony_ci  }
11099da06d0Sopenharmony_ci  let valueBucket = {
11199da06d0Sopenharmony_ci    'KEYWORD': QUERY_AIRPLANE_MODE_KEY,
11299da06d0Sopenharmony_ci    'VALUE': false
11399da06d0Sopenharmony_ci  };
11499da06d0Sopenharmony_ci  try {
11599da06d0Sopenharmony_ci    let da = new dataSharePredicates.DataSharePredicates();
11699da06d0Sopenharmony_ci    dataShareHelper.update(SETTING_AIRPLANE_MODE_URI, da, valueBucket, (err, data) => {
11799da06d0Sopenharmony_ci      if (err != undefined) {
11899da06d0Sopenharmony_ci        LogUtils.e(TAG, 'turnOffAirPlaneMode update error: code: ' + err.code + ', message:' + err.message);
11999da06d0Sopenharmony_ci        return;
12099da06d0Sopenharmony_ci      }
12199da06d0Sopenharmony_ci      LogUtils.i(TAG, 'turnOffAirPlaneMode update succeed');
12299da06d0Sopenharmony_ci    });
12399da06d0Sopenharmony_ci  } catch (err) {
12499da06d0Sopenharmony_ci    LogUtils.e(TAG, 'turnOffAirPlaneMode error: code: ' + err.code + ', message: ' + err.message);
12599da06d0Sopenharmony_ci  }
12699da06d0Sopenharmony_ci}
12799da06d0Sopenharmony_ci
12899da06d0Sopenharmony_ci/**
12999da06d0Sopenharmony_ci * query AirPlaneMode.
13099da06d0Sopenharmony_ci */
13199da06d0Sopenharmony_ciexport function queryAirPlaneMode(callback) {
13299da06d0Sopenharmony_ci  LogUtils.i(TAG, 'queryAirPlaneMode');
13399da06d0Sopenharmony_ci  if (!dataShareHelper) {
13499da06d0Sopenharmony_ci    LogUtils.e(TAG, 'queryAirPlaneMode dataShareHelper null');
13599da06d0Sopenharmony_ci    return;
13699da06d0Sopenharmony_ci  }
13799da06d0Sopenharmony_ci  let condition = new dataSharePredicates.DataSharePredicates();
13899da06d0Sopenharmony_ci  condition.equalTo('KEYWORD', 'airplane_mode');
13999da06d0Sopenharmony_ci  try {
14099da06d0Sopenharmony_ci    // ID, KEYWORD, VALUE
14199da06d0Sopenharmony_ci    dataShareHelper.query(SETTING_AIRPLANE_MODE_URI, condition, null).then((data) => {
14299da06d0Sopenharmony_ci      LogUtils.i(TAG, 'queryAirPlaneMode query succeed');
14399da06d0Sopenharmony_ci      if (data && data.goToFirstRow()) {
14499da06d0Sopenharmony_ci        LogUtils.i(TAG, 'queryAirPlaneMode query succeed return key');
14599da06d0Sopenharmony_ci        callback(data.getLong(data.getColumnIndex('VALUE')));
14699da06d0Sopenharmony_ci        return;
14799da06d0Sopenharmony_ci      }
14899da06d0Sopenharmony_ci      callback(-1);
14999da06d0Sopenharmony_ci    }).catch((err) => {
15099da06d0Sopenharmony_ci      LogUtils.e(TAG, 'queryAirPlaneMode query in error: err: ' + JSON.stringify(err));
15199da06d0Sopenharmony_ci    });
15299da06d0Sopenharmony_ci  } catch (err) {
15399da06d0Sopenharmony_ci    LogUtils.e(TAG, 'queryAirPlaneMode query out error: code: ' + err.code + ', message: ' + err.message);
15499da06d0Sopenharmony_ci  }
15599da06d0Sopenharmony_ci}