PageViewModel.ets 4.3 KB
import { Logger, ResourcesUtils } from 'wdKit';
import { ResponseDTO, } from 'wdNetwork';
import { PageRepository } from '../repository/PageRepository';
import http from '@ohos.net.http';
import { NavigationBodyDTO } from '../repository/bean/NavigationBodyDTO';
import { BottomNavDTO } from '../repository/bean/BottomNavDTO';
import { PageDTO } from '../repository/bean/PageDTO';

const TAG = 'PageViewModel';

/**
 * 处理返回后的数据
 */
export class PageViewModel {
  /**
   * get Nav Data from Resource .
   *
   * @return BottomNavBean[] Nav Data List
   */
  static async getBottomNavData(context: Context): Promise<BottomNavDTO[]> {
    Logger.info(TAG, `getBottomNavData start`);
    let compRes: ResponseDTO<NavigationBodyDTO> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<NavigationBodyDTO>>(context, 'bottom_nav.json');
    if (!compRes || !compRes.data || !compRes.data.bottomNavList) {
      Logger.info(TAG, `getBottomNavData compRes bottomNavList is empty`);
      return []
    }
    Logger.info(TAG, `getBottomNavData getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
    return compRes.data.bottomNavList
  }

  static getNavData(url: string): Promise<NavigationBodyDTO> {
    return new Promise<NavigationBodyDTO>((success, error) => {
      Logger.info(TAG, `getNavData start`);
      PageRepository.fetchNavigationDataApi(url).then((navResDTO: ResponseDTO<NavigationBodyDTO>) => {
        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.data?.bottomNavList) {
          error('navResDTO list is empty');
          return
        }
        // let navResStr = JSON.stringify(navResDTO);
        Logger.info(TAG, "getNavData then,navResDTO.timeStamp:" + navResDTO.timestamp);
        let navigationBean = navResDTO.data
        success(navigationBean);
      }).catch((err: Error) => {
        Logger.error(TAG, `fetchNavigationDataApi catch, error.name : ${err.name},  error.message:${err.message}`);
        error(err);
      })
    })
  }

  /**
   * Get PageDTO data.
   *
   * @return {GroupDTO} compRes.data
   */
  static async getPageData1(context: Context): Promise<PageDTO> {
    let compRes: ResponseDTO<PageDTO> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<PageDTO>>(context, 'comp_list0.json');
    if (!compRes || !compRes.data) {
      Logger.info(TAG, `getCompList compRes is empty`);
      return {} as PageDTO
    }
    Logger.info(TAG, `getCompList getResourcesJson compRes : ${JSON.stringify(compRes)}`);
    return compRes.data
  }

  /**
   * Get Group data.
   *
   * @return {GroupDTO} compRes.data
   */
  static async getPageData2(context: Context): Promise<PageDTO> {
    let compRes: ResponseDTO<PageDTO> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<PageDTO>>(context, 'comp_list2.json');
    if (!compRes || !compRes.data) {
      Logger.info(TAG, `getCompList compRes is empty`);
      return {} as PageDTO
    }
    Logger.info(TAG, `getCompList getResourcesJson compRes : ${JSON.stringify(compRes)}`);
    return compRes.data
  }


  static getPageData(url: string): Promise<PageDTO> {
    return new Promise<PageDTO>((success, error) => {
      PageRepository.fetchPageData(url).then((resDTO: ResponseDTO<PageDTO>) => {
        if (!resDTO) {
          Logger.error(TAG, 'getPageData then resDTO is empty');
          error("page data is empty");
          return
        }
        if (resDTO.code != http.ResponseCode.OK || !resDTO.data) {
          Logger.error(TAG, `getPageData then code:${resDTO.code}, message:${resDTO.message}`);
          error(`get page data error code:${resDTO.code}, message:${resDTO.message}`);
          return
        }
        Logger.info(TAG, "getPageData then,resDTO.timeStamp:" + resDTO.timestamp);
        success(resDTO.data);
      }).catch((err: Error) => {
        Logger.error(TAG, `getPageData catch, error.name : ${err.name},  error.message:${err.message}`);
        error(err);
      })
    })
  }
}



let pageViewModel = new PageViewModel();

export default pageViewModel as PageViewModel;