/*
 * Copyright (c) 2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the 'License');
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an 'AS IS' BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import deviceInfo from '@ohos.deviceInfo';

export enum PlatformTypeEnum {
  HARMONYOS = 'HarmonyOS Platform',
  ANDROID = 'Android Platform',
  IOS = 'iOS Platform',
  UNKNOWN = 'Unknown Platform'
}

/*
 * 获取当前设备的平台信息,并提供相关判断功能。
 *
 * 功能简介:
 * 1. `getPlatform()` 方法通过解析设备的操作系统全名,判断当前设备运行的操作系统类型。
 *    - 支持的平台类型包括:HarmonyOS、Android、iOS,以及其他未知平台(UNKNOWN)。
 * 2. `isArkUIX()` 方法用于判断当前平台是否支持 ArkUIX 框架。
 *    - 如果设备运行的是 Android 或 iOS 平台,则返回 `true`,否则返回 `false`。
 */
export class PlatformInfo {
  static getPlatform(): PlatformTypeEnum {
    let osFullNameInfo: string = deviceInfo.osFullName;
    let platformName: string = osFullNameInfo.split(' ')[0];
    if (platformName.includes("OpenHarmony")) {
      return PlatformTypeEnum.HARMONYOS;
    } else if (platformName.includes("Android")) {
      return PlatformTypeEnum.ANDROID;
    } else if (platformName.includes('iOS')) {
      return PlatformTypeEnum.IOS;
    } else {
      return PlatformTypeEnum.UNKNOWN;
    }
  }

  static isArkUIX(): boolean {
    if (PlatformInfo.getPlatform() === PlatformTypeEnum.ANDROID ||
      PlatformInfo.getPlatform() === PlatformTypeEnum.IOS) {
      return true;
    } else {
      return false;
    }
  }
}