PageViewModel.ets 6.3 KB
import { Logger } from 'wdKit';
import { WDHttp } from 'wdNetwork';
import { NavigationBean } from '../bean/NavigationBean';
import { PageRepository } from '../repository/PageRepository';
import http from '@ohos.net.http';
import { BusinessError } from '@ohos.base';
import { NavBody } from '../bean/NavBody';

const TAG = 'PageViewModel';

/**
 * 处理返回后的数据
 */
export class PageViewModel {
  /**
   * get Nav Data from server.
   *
   * Promise方式
   *
   * @return Button[] Nav Data List
   */
  static getNavData(): Promise<NavigationBean> {
    return new Promise<NavigationBean>((success, error) => {
      Logger.info(TAG, `getNavData start`);
      PageRepository.fetchNavigationDataApi().then((navResDTO: WDHttp.ResponseDTO<NavBody>) => {
        if (!navResDTO) {
          Logger.error(TAG, 'getNavData then navResDTO is empty');
          error('navResDTO is empty');
          return
        }
        if (navResDTO.code != http.ResponseCode.OK) {
          Logger.error(TAG, `getNavData then code:${navResDTO.code}, message:${navResDTO.message}`);
          error('navResDTO Response Code is failure');
          return
        }
        if (!navResDTO.body?.list) {
          error('navResDTO list is empty');
          return
        }
        // todo:
        const defaultIndex = 5;
        if (navResDTO.body?.list.length <= defaultIndex) {
          let navigationBean = navResDTO.body.list[0]
          success(navigationBean);
          return
        }
        // let navResStr = JSON.stringify(navResDTO);
        Logger.info(TAG, "getNavData then,navResDTO.timeStamp:" + navResDTO.timeStamp);
        let navigationBean = navResDTO.body.list[defaultIndex]
        if (navigationBean.bottomBar.buttons.length >= 5) {
          // 删除底导中的短视频tab
          // 从数组中的shortVideoIndex位置开始删除1个元素,返回已删除的元素。
          let shortVideoIndex = 3
          navigationBean.bottomBar.buttons.splice(shortVideoIndex, 1);
        }
        success(navigationBean);
      }).catch((err: BusinessError) => {
        Logger.error(TAG, `fetchNavigationDataApi catch, error.code : ${err.code},  error.message:${err.message}`);
        error(err);
      })
    })
  }

  // /**
  //  * get Menu Data from server.
  //  *
  //  * Promise方式
  //  *
  //  * @return resDTO PageDTO
  //  */
  // static getMenuList(pageId: string): Promise<PageDTO> {
  //   return new Promise<PageDTO>((success, error) => {
  //     Logger.info(TAG, `getMenuList pageId:${pageId}`);
  //     PageRepository.fetchMenuList(pageId).then((resDTO: MGHttp.ResponseDTO<PageDTO>) => {
  //       if (!resDTO) {
  //         Logger.error(TAG, 'getMenuList then resDTO is empty');
  //         error("page data is empty");
  //         return
  //       }
  //       if (resDTO.code != http.ResponseCode.OK || !resDTO.body) {
  //         Logger.error(TAG, `getMenuList then code:${resDTO.code}, message:${resDTO.message}`);
  //         error(`get page data error code:${resDTO.code}, message:${resDTO.message}`);
  //         return
  //       }
  //       // let navResStr = JSON.stringify(navResBean);
  //       Logger.info(TAG, "getMenuList then,resDTO.timeStamp:" + resDTO.timeStamp);
  //       success(resDTO.body);
  //     }).catch((err: BusinessError) => {
  //       Logger.error(TAG, `getMenuList catch, error.code : ${err.code},  error.message:${err.message}`);
  //       error(err);
  //     })
  //   })
  // }

  // static getGroupList(pageId: string): Promise<PageDTO> {
  //   return new Promise<PageDTO>((success, error) => {
  //     Logger.info(TAG, `getGroupList pageId:${pageId}`);
  //     PageRepository.fetchGroupList(pageId).then((resDTO: MGHttp.ResponseDTO<PageDTO>) => {
  //       if (!resDTO) {
  //         Logger.error(TAG, 'getGroupList then resDTO is empty');
  //         error("page data is empty");
  //         return
  //       }
  //       if (resDTO.code != http.ResponseCode.OK || !resDTO.body) {
  //         Logger.error(TAG, `getGroupList then code:${resDTO.code}, message:${resDTO.message}`);
  //         error(`get page data error code:${resDTO.code}, message:${resDTO.message}`);
  //         return
  //       }
  //       // let navResStr = JSON.stringify(navResBean);
  //       Logger.info(TAG, "getGroupList then,resDTO.timeStamp:" + resDTO.timeStamp);
  //       success(resDTO.body);
  //     }).catch((err: BusinessError) => {
  //       Logger.error(TAG, `getGroupList catch, error.code : ${err.code},  error.message:${err.message}`);
  //       error(err);
  //     })
  //   })
  // }

  // static getComponentData(pageID: string, groupID: string, compID: string): Promise<BodyComponent> {
  //   return new Promise<BodyComponent>((success, error) => {
  //     Logger.info(TAG, `getComponentData pageId:${pageID}`);
  //     PageRepository.fetchComponentData(pageID, groupID, compID).then((resDTO: MGHttp.ResponseDTO<BodyComponent>) => {
  //       if (!resDTO) {
  //         Logger.error(TAG, 'getComponentData then resDTO is empty');
  //         error("page data is empty");
  //         return
  //       }
  //       if (resDTO.code != http.ResponseCode.OK || !resDTO.body) {
  //         Logger.error(TAG, `getComponentData then code:${resDTO.code}, message:${resDTO.message}`);
  //         error(`get page data error code:${resDTO.code}, message:${resDTO.message}`);
  //         return
  //       }
  //       // let navResStr = JSON.stringify(navResBean);
  //       Logger.info(TAG, "getComponentData then,resDTO.timeStamp:" + resDTO.timeStamp);
  //       success(resDTO.body);
  //     }).catch((err: BusinessError) => {
  //       Logger.error(TAG, `getComponentData catch, error.code : ${err.code},  error.message:${err.message}`);
  //       error(err);
  //     })
  //   })
  // }

  /**
   * Get data of Component.
   *
   * @return {programmeData[]} compRes.body?.data.
   */
  // static async getProgrammeDataList(context: Context): Promise<ProgrammeDTO[]> {
  //   let compRes: MGHttp.ResponseDTO<BodyComponent> = await ResourcesUtils.getResourcesJson<MGHttp.ResponseDTO<BodyComponent>>(context, 'model/componentList.json');
  //   Logger.info(TAG, `programmeDataList getResourcesJson compRes : ${JSON.stringify(compRes)}`);
  //   if (!compRes.body) {
  //     return []
  //   }
  //   return compRes.body?.data;
  // }
}

let pageViewModel = new PageViewModel();

export default pageViewModel as PageViewModel;