1df226684Sopenharmony_ci/* 2df226684Sopenharmony_ci * Copyright (c) 2024 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 { buffer } from '@kit.ArkTS'; 16df226684Sopenharmony_ciimport { HiLog } from './HiLog'; 17df226684Sopenharmony_ci 18df226684Sopenharmony_ciconst TAG = 'CommonUtil'; 19df226684Sopenharmony_ci 20df226684Sopenharmony_ciexport default class CommonUtil { 21df226684Sopenharmony_ci 22df226684Sopenharmony_ci public static readonly DEFAULT_ZERO: number = 0; 23df226684Sopenharmony_ci 24df226684Sopenharmony_ci public static readonly UTF_8: buffer.BufferEncoding = 'utf-8'; 25df226684Sopenharmony_ci public static readonly BASE64: buffer.BufferEncoding = 'base64'; 26df226684Sopenharmony_ci 27df226684Sopenharmony_ci public static isEmptyStr(input: string): boolean { 28df226684Sopenharmony_ci return (input == null || input === undefined || input.trim() === '' || input.length === 0); 29df226684Sopenharmony_ci } 30df226684Sopenharmony_ci 31df226684Sopenharmony_ci public static isEmptyArray<T>(input: Array<T>): boolean { 32df226684Sopenharmony_ci return (input == null || input === undefined || input.length === 0); 33df226684Sopenharmony_ci } 34df226684Sopenharmony_ci 35df226684Sopenharmony_ci public static encodeByBase64(data: string | undefined): string { 36df226684Sopenharmony_ci if (this.isEmptyStr(data)) { 37df226684Sopenharmony_ci return ''; 38df226684Sopenharmony_ci } 39df226684Sopenharmony_ci try { 40df226684Sopenharmony_ci return buffer.from(data, CommonUtil.UTF_8).toString(CommonUtil.BASE64); 41df226684Sopenharmony_ci } catch (error) { 42df226684Sopenharmony_ci HiLog.error(TAG, `encodeByBase64 error: ${error}`); 43df226684Sopenharmony_ci } 44df226684Sopenharmony_ci return ''; 45df226684Sopenharmony_ci } 46df226684Sopenharmony_ci 47df226684Sopenharmony_ci /** 48df226684Sopenharmony_ci * remark: not support concurrent 49df226684Sopenharmony_ci * @param key 50df226684Sopenharmony_ci * @param increaseNum 51df226684Sopenharmony_ci * @returns 52df226684Sopenharmony_ci */ 53df226684Sopenharmony_ci public static increaseByAppStorageKey(key: string, increaseNum: number): number { 54df226684Sopenharmony_ci let oldVal = AppStorage.get(key) as number; 55df226684Sopenharmony_ci if (!oldVal) { 56df226684Sopenharmony_ci oldVal = CommonUtil.DEFAULT_ZERO; 57df226684Sopenharmony_ci } 58df226684Sopenharmony_ci if (!increaseNum || isNaN(increaseNum)) { 59df226684Sopenharmony_ci increaseNum = 1; 60df226684Sopenharmony_ci } 61df226684Sopenharmony_ci let newVal = oldVal + increaseNum; 62df226684Sopenharmony_ci AppStorage.setOrCreate(key, newVal); 63df226684Sopenharmony_ci return newVal; 64df226684Sopenharmony_ci } 65df226684Sopenharmony_ci 66df226684Sopenharmony_ci /** 67df226684Sopenharmony_ci * delay 68df226684Sopenharmony_ci * @param delay unit is mill sec 69df226684Sopenharmony_ci */ 70df226684Sopenharmony_ci public static delay(delay: number): void { 71df226684Sopenharmony_ci let currentTime = new Date().getTime(); 72df226684Sopenharmony_ci while (new Date().getTime() < currentTime + delay) { 73df226684Sopenharmony_ci continue; 74df226684Sopenharmony_ci } 75df226684Sopenharmony_ci } 76df226684Sopenharmony_ci}