1df226684Sopenharmony_ci/* 2df226684Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3df226684Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4df226684Sopenharmony_ci * you may not use this file except in compliance with the License. 5df226684Sopenharmony_ci * You may obtain a copy of the License at 6df226684Sopenharmony_ci * 7df226684Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8df226684Sopenharmony_ci * 9df226684Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10df226684Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11df226684Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12df226684Sopenharmony_ci * See the License for the specific language governing permissions and 13df226684Sopenharmony_ci * limitations under the License. 14df226684Sopenharmony_ci */ 15df226684Sopenharmony_ciimport configPolicy from '@ohos.configPolicy'; 16df226684Sopenharmony_ciimport fs from '@ohos.file.fs' 17df226684Sopenharmony_ciimport common from '@ohos.app.ability.common'; 18df226684Sopenharmony_ciimport resourceManager from '@ohos.resourceManager'; 19df226684Sopenharmony_ciimport util from '@ohos.util'; 20df226684Sopenharmony_ciimport osAccount from '@ohos.account.osAccount'; 21df226684Sopenharmony_ciimport { BusinessError } from '@ohos.base'; 22df226684Sopenharmony_ciimport GlobalContext from './GlobalContext'; 23df226684Sopenharmony_ciimport I18n from '@ohos.i18n'; 24df226684Sopenharmony_ciimport { HiLog } from '../common/HiLog'; 25df226684Sopenharmony_ci 26df226684Sopenharmony_ciconst TAG = 'ATC'; 27df226684Sopenharmony_ciconst SYS_LANGUAGE: string = 'zh-Hans'; 28df226684Sopenharmony_ci 29df226684Sopenharmony_ciexport interface AccountTips { 30df226684Sopenharmony_ci key: string; 31df226684Sopenharmony_ci description: string; 32df226684Sopenharmony_ci descriptionEn: string; 33df226684Sopenharmony_ci isShow: boolean; 34df226684Sopenharmony_ci value: string; 35df226684Sopenharmony_ci isTextContent?: boolean; 36df226684Sopenharmony_ci} 37df226684Sopenharmony_ci 38df226684Sopenharmony_ciexport class AccountTipsConfig { 39df226684Sopenharmony_ci public static configTipsArray: AccountTips[] = []; 40df226684Sopenharmony_ci public static showContentKey: string = ''; 41df226684Sopenharmony_ci private static ccmConfigPath: string = 'etc/dlp_manager/account_tips.json'; 42df226684Sopenharmony_ci private static configName: string = 'account_tips.json'; 43df226684Sopenharmony_ci 44df226684Sopenharmony_ci public static getConfigTips(): Promise<Array<AccountTips>> { 45df226684Sopenharmony_ci return new Promise((resolve, reject) => { 46df226684Sopenharmony_ci try { 47df226684Sopenharmony_ci if (AccountTipsConfig.configTipsArray?.length === 0) { 48df226684Sopenharmony_ci AccountTipsConfig.loadCcmConfigs().then((accountTipsArray: Array<AccountTips>) => { 49df226684Sopenharmony_ci AccountTipsConfig.configTipsArray = accountTipsArray; 50df226684Sopenharmony_ci resolve(AccountTipsConfig.configTipsArray); 51df226684Sopenharmony_ci }).catch((err: BusinessError) => { 52df226684Sopenharmony_ci HiLog.error(TAG, `getConfigTips failed, error: ${JSON.stringify(err)}`); 53df226684Sopenharmony_ci reject(err); 54df226684Sopenharmony_ci }); 55df226684Sopenharmony_ci } else { 56df226684Sopenharmony_ci let accountTipsArray: AccountTips[] = JSON.parse(JSON.stringify(AccountTipsConfig.configTipsArray)); 57df226684Sopenharmony_ci resolve(accountTipsArray); 58df226684Sopenharmony_ci } 59df226684Sopenharmony_ci } catch (error) { 60df226684Sopenharmony_ci HiLog.error(TAG, `getConfigTips error: ${JSON.stringify(error)}`); 61df226684Sopenharmony_ci reject(error); 62df226684Sopenharmony_ci } 63df226684Sopenharmony_ci }) 64df226684Sopenharmony_ci } 65df226684Sopenharmony_ci 66df226684Sopenharmony_ci public static isSysLanguage(): boolean { 67df226684Sopenharmony_ci let systemLanguage: string = I18n.System.getSystemLanguage(); 68df226684Sopenharmony_ci return systemLanguage.indexOf(SYS_LANGUAGE) > -1; 69df226684Sopenharmony_ci } 70df226684Sopenharmony_ci 71df226684Sopenharmony_ci public static getAccountInfo(authAccount: string): Promise<osAccount.DomainAccountInfo> { 72df226684Sopenharmony_ci return new Promise(async (resolve, reject) => { 73df226684Sopenharmony_ci try { 74df226684Sopenharmony_ci if (!authAccount) { 75df226684Sopenharmony_ci HiLog.error(TAG, `getAccount failed, authAccount is null.`); 76df226684Sopenharmony_ci reject(); 77df226684Sopenharmony_ci return; 78df226684Sopenharmony_ci } 79df226684Sopenharmony_ci let accountDomain = AppStorage.get('accountDomain') as string; 80df226684Sopenharmony_ci let domainAccountInfo: osAccount.GetDomainAccountInfoOptions = { 81df226684Sopenharmony_ci domain: accountDomain, 82df226684Sopenharmony_ci accountName: authAccount.toLocaleLowerCase().trim() 83df226684Sopenharmony_ci }; 84df226684Sopenharmony_ci let result = await osAccount.DomainAccountManager.getAccountInfo(domainAccountInfo); 85df226684Sopenharmony_ci resolve(result); 86df226684Sopenharmony_ci } catch (error) { 87df226684Sopenharmony_ci HiLog.error(TAG, `getAccountInfo error: ${JSON.stringify(error)}`); 88df226684Sopenharmony_ci reject(error); 89df226684Sopenharmony_ci } 90df226684Sopenharmony_ci }); 91df226684Sopenharmony_ci } 92df226684Sopenharmony_ci 93df226684Sopenharmony_ci private static loadCcmConfigs(): Promise<Array<AccountTips>> { 94df226684Sopenharmony_ci return new Promise((resolve, reject) => { 95df226684Sopenharmony_ci try { 96df226684Sopenharmony_ci let filePath: string = configPolicy.getOneCfgFileSync(AccountTipsConfig.ccmConfigPath); 97df226684Sopenharmony_ci let isExistFile: boolean = fs.accessSync(filePath); 98df226684Sopenharmony_ci let configStr: string = ''; 99df226684Sopenharmony_ci if (isExistFile) { 100df226684Sopenharmony_ci configStr = fs.readTextSync(filePath); 101df226684Sopenharmony_ci } else { 102df226684Sopenharmony_ci let context: common.UIAbilityContext = getContext() as common.UIAbilityContext; 103df226684Sopenharmony_ci let resourceManager: resourceManager.ResourceManager = context?.resourceManager; 104df226684Sopenharmony_ci if (resourceManager === null) { 105df226684Sopenharmony_ci HiLog.error(TAG, `loadCcmConfigs failed. resourceManager is null.`); 106df226684Sopenharmony_ci reject(); 107df226684Sopenharmony_ci return; 108df226684Sopenharmony_ci } 109df226684Sopenharmony_ci let contentArray: Uint8Array = resourceManager.getRawFileContentSync(AccountTipsConfig.configName); 110df226684Sopenharmony_ci let textDecoder: util.TextDecoder = util.TextDecoder.create('utf-8', { ignoreBOM: true }); 111df226684Sopenharmony_ci configStr = textDecoder.decodeWithStream(contentArray, { stream: false }); 112df226684Sopenharmony_ci } 113df226684Sopenharmony_ci 114df226684Sopenharmony_ci let accountTipsArray: AccountTips[] = []; 115df226684Sopenharmony_ci if (configStr) { 116df226684Sopenharmony_ci let jsonArray: Object[] = JSON.parse(configStr); 117df226684Sopenharmony_ci for (let jsonObj of jsonArray) { 118df226684Sopenharmony_ci let accountTips: AccountTips = jsonObj as AccountTips; 119df226684Sopenharmony_ci if (accountTips.isTextContent) { 120df226684Sopenharmony_ci AccountTipsConfig.showContentKey = accountTips.key; 121df226684Sopenharmony_ci } 122df226684Sopenharmony_ci accountTipsArray.push(accountTips); 123df226684Sopenharmony_ci } 124df226684Sopenharmony_ci } 125df226684Sopenharmony_ci resolve(accountTipsArray); 126df226684Sopenharmony_ci } catch (error) { 127df226684Sopenharmony_ci HiLog.error(TAG, `loadCcmConfigs error: ${JSON.stringify(error)}`); 128df226684Sopenharmony_ci reject(error); 129df226684Sopenharmony_ci } 130df226684Sopenharmony_ci }); 131df226684Sopenharmony_ci } 132df226684Sopenharmony_ci}