16e80583aSopenharmony_ci//@ts-nocheck 26e80583aSopenharmony_ci/* 36e80583aSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 46e80583aSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 56e80583aSopenharmony_ci * you may not use this file except in compliance with the License. 66e80583aSopenharmony_ci * You may obtain a copy of the License at 76e80583aSopenharmony_ci * 86e80583aSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 96e80583aSopenharmony_ci * 106e80583aSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 116e80583aSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 126e80583aSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136e80583aSopenharmony_ci * See the License for the specific language governing permissions and 146e80583aSopenharmony_ci * limitations under the License. 156e80583aSopenharmony_ci */ 166e80583aSopenharmony_ci 176e80583aSopenharmony_ciimport { Log } from '../utils/Log'; 186e80583aSopenharmony_ciimport settings from '@ohos.settings'; 196e80583aSopenharmony_ciimport dataShare from '@ohos.data.dataShare'; 206e80583aSopenharmony_ciimport common from '@ohos.app.ability.common'; 216e80583aSopenharmony_ciimport { Context } from '@ohos.abilityAccessCtrl'; 226e80583aSopenharmony_ci 236e80583aSopenharmony_ciconst TAG = 'SettingsDataManager'; 246e80583aSopenharmony_ci/** 256e80583aSopenharmony_ci * Wrapper class for settings interfaces. 266e80583aSopenharmony_ci */ 276e80583aSopenharmony_ciclass SettingsDataManager { 286e80583aSopenharmony_ci private readonly uriShare: string = 'datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true&key='; 296e80583aSopenharmony_ci private dataShareHelper: dataShare.DataShareHelper | null = null; 306e80583aSopenharmony_ci private RETRY_INTERVAL_MS = 2000; 316e80583aSopenharmony_ci private MAX_RETRY_TIME = 10; 326e80583aSopenharmony_ci private constructor() { 336e80583aSopenharmony_ci } 346e80583aSopenharmony_ci 356e80583aSopenharmony_ci /** 366e80583aSopenharmony_ci * settingsData manager instance 376e80583aSopenharmony_ci * 386e80583aSopenharmony_ci * @return settingsDataManager instance 396e80583aSopenharmony_ci */ 406e80583aSopenharmony_ci static getInstance(): SettingsDataManager { 416e80583aSopenharmony_ci if (globalThis.SettingsDataManagerInstance == null) { 426e80583aSopenharmony_ci globalThis.SettingsDataManagerInstance = new SettingsDataManager(); 436e80583aSopenharmony_ci } 446e80583aSopenharmony_ci return globalThis.SettingsDataManagerInstance; 456e80583aSopenharmony_ci } 466e80583aSopenharmony_ci 476e80583aSopenharmony_ci private sleep(time: number) { 486e80583aSopenharmony_ci return new Promise(resolve => { 496e80583aSopenharmony_ci setTimeout(resolve, time); 506e80583aSopenharmony_ci }) 516e80583aSopenharmony_ci } 526e80583aSopenharmony_ci 536e80583aSopenharmony_ci public async createDataShareHelper(retryTimes: number): Promise<void> { 546e80583aSopenharmony_ci Log.showInfo(TAG, 'createDataShareHelper'); 556e80583aSopenharmony_ci if (retryTimes < 1) { 566e80583aSopenharmony_ci Log.showError(TAG, 'createDataShareHelper, retry too many times'); 576e80583aSopenharmony_ci return; 586e80583aSopenharmony_ci } 596e80583aSopenharmony_ci Log.showInfo(TAG, 'createDataShareHelper in, retry times: %{public}d', this.MAX_RETRY_TIME - retryTimes + 1); 606e80583aSopenharmony_ci try { 616e80583aSopenharmony_ci this.dataShareHelper = await dataShare.createDataShareHelper(globalThis.desktopContext, this.uriShare); 626e80583aSopenharmony_ci if (this.dataShareHelper) { 636e80583aSopenharmony_ci Log.showInfo(TAG, 'createDataShareHelper success.'); 646e80583aSopenharmony_ci globalThis.sGestureNavigationManager.getGestureNavigationStatus(); 656e80583aSopenharmony_ci } 666e80583aSopenharmony_ci } catch (err) { 676e80583aSopenharmony_ci Log.showError(TAG, 'createDataShareHelper error, code: ' + err?.code + ', message: ' + err?.message); 686e80583aSopenharmony_ci await this.sleep(this.RETRY_INTERVAL_MS); 696e80583aSopenharmony_ci this.createDataShareHelper(retryTimes - 1); 706e80583aSopenharmony_ci } 716e80583aSopenharmony_ci } 726e80583aSopenharmony_ci 736e80583aSopenharmony_ci /** 746e80583aSopenharmony_ci * Update settingData by settingDataKey. 756e80583aSopenharmony_ci */ 766e80583aSopenharmony_ci setValue(helper: dataShare.DataShareHelper | null, settingDataKey: string, value: string): void { 776e80583aSopenharmony_ci Log.showInfo(TAG, 'setValue:' + value); 786e80583aSopenharmony_ci try { 796e80583aSopenharmony_ci settings.setValueSync(globalThis.desktopContext as Context, settingDataKey, value); 806e80583aSopenharmony_ci } catch (err) { 816e80583aSopenharmony_ci Log.showError(TAG, `Update settingData by settingDataKey err: ${err.message || err?.code}`); 826e80583aSopenharmony_ci } 836e80583aSopenharmony_ci } 846e80583aSopenharmony_ci 856e80583aSopenharmony_ci /** 866e80583aSopenharmony_ci * get settingDataValue by settingDataKey. 876e80583aSopenharmony_ci * 886e80583aSopenharmony_ci * @return settingsDataValue by settingDataKey. 896e80583aSopenharmony_ci */ 906e80583aSopenharmony_ci getValue(helper: dataShare.DataShareHelper | null, settingDataKey: string, defaultValue: string): string { 916e80583aSopenharmony_ci let value: string = '1'; 926e80583aSopenharmony_ci try { 936e80583aSopenharmony_ci value = settings.getValueSync(globalThis.desktopContext as Context, settingDataKey, defaultValue); 946e80583aSopenharmony_ci } catch (err) { 956e80583aSopenharmony_ci Log.showError(TAG, `get settingDataValue by settingDataKey err: ${err.message || err?.code}`); 966e80583aSopenharmony_ci } 976e80583aSopenharmony_ci Log.showInfo(TAG, 'getValue:' + value); 986e80583aSopenharmony_ci return value; 996e80583aSopenharmony_ci } 1006e80583aSopenharmony_ci 1016e80583aSopenharmony_ci /** 1026e80583aSopenharmony_ci * get settingDataUri by settingDataKey. 1036e80583aSopenharmony_ci * 1046e80583aSopenharmony_ci * @return settingDataUri by settingDataKey. 1056e80583aSopenharmony_ci */ 1066e80583aSopenharmony_ci getUri(settingDataKey: string): string { 1076e80583aSopenharmony_ci return this.uriShare + settingDataKey; 1086e80583aSopenharmony_ci } 1096e80583aSopenharmony_ci 1106e80583aSopenharmony_ci /** 1116e80583aSopenharmony_ci * get settingDataHelper by settingDataKey. 1126e80583aSopenharmony_ci * 1136e80583aSopenharmony_ci * @return settingDataHelper by settingDataUri. 1146e80583aSopenharmony_ci */ 1156e80583aSopenharmony_ci getHelper(context: common.Context, uri: string): dataShare.DataShareHelper | null { 1166e80583aSopenharmony_ci return this.dataShareHelper; 1176e80583aSopenharmony_ci } 1186e80583aSopenharmony_ci} 1196e80583aSopenharmony_ci 1206e80583aSopenharmony_ciexport const settingsDataManager = SettingsDataManager.getInstance();