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}