import { BridgePlugin } from '../bridge';

interface IGetGravityInfoResult {
  // 状态 0：不支持 | 1：成功 | 2:失败
  status: '0' | '1' | '2';
  // 重力信息
  gravityInfo: {
    x: string;
    y: string;
    z: string;
  };
}

export class GetGravityInfo<K> extends BridgePlugin<void, K>{
  protected get ntvPluginName() {
    return '_ntv_util_get_gravity_info';
  }

  protected get availableMinVersion() {
    return '1.0.0';
  }

  protected bridgeExecChrome(pluginName: string | undefined): void {
    // 可针对不同运行环境实现特定的调用逻辑来MOCK，弥补平台差异性.
    throw new Error('GetGravityInfo() 未针对当前环境实现');
  }
}

/**
 * 获取重力感应信息
 */
export const getGravityInfo = () => {
  return new GetGravityInfo<IGetGravityInfoResult>().invokeOnce().then(result => {
    return result.cbData;
  });
}