MyCollectionViewModel.ets 2.39 KB
import { collcetRecordParams, MyCollectionItem, MyCollectionListModel } from '../model/MyCollectionModel';
import { HttpUrlUtils, ResponseDTO, WDHttp } from 'wdNetwork';
import { Logger } from 'wdKit';
import promptAction from '@ohos.promptAction';

const TAG = "MyCollectionViewModel"

class MyCollectionViewModel {
  private static instance:MyCollectionViewModel
  /**
   * 单例模式
   * @returns
   */
  public static getInstance(): MyCollectionViewModel {
    if (!MyCollectionViewModel.instance) {
      MyCollectionViewModel.instance = new MyCollectionViewModel();
    }
    return MyCollectionViewModel.instance;
  }

  //Type 1 收藏 2 浏览历史
  //tagId 收藏界面 标签筛选
  BaseGetRequest(type:number,tagId:string,pageNum:number){
    let url = HttpUrlUtils.getMyCollectionListDataUrl()+ `?type=${type}&operateTag=${2}&pageSize=${20}&pageNum=${pageNum.toString()}`
    // if (tagId.length > 0) {
    //   url = url + `&tagId=${tagId}`
    // }
    return WDHttp.get<MyCollectionListModel>(url)
  }


  fetchMyCollectList(type:number,tagId:string,pageNum:number,context: Context):Promise<MyCollectionItem>{
    return new Promise((success,error) => {
      this.BaseGetRequest(type,tagId,pageNum).then((navResDTO: MyCollectionListModel) => {
        if (!navResDTO || navResDTO.code != 0) {
          return
        }
        Logger.info(TAG, "fetchMyCollectList then,navResDTO.timeStamp:" + navResDTO.timestamp);
        success(navResDTO.data)
      }).catch((err: Error) => {
        Logger.error(TAG, `fetchMyCollectList catch, error.name : ${err.name},  error.message:${err.message}`);
        error("page data invalid");
      })
    })
  }

  //收藏/取消收藏  status :收藏状态 1添加收藏 0取消收藏
  executeCollcet(params: collcetRecordParams):Promise<ResponseDTO>{
    return new Promise(() => {
      WDHttp.post<ResponseDTO>(HttpUrlUtils.getExecuteCollcetUrl(),params).then((navResDTO: ResponseDTO) => {
        if (navResDTO.code == 0) {
          if(params.status === 1){
            promptAction.showToast({ message: '收藏成功' })
          } else {
            promptAction.showToast({ message: '删除成功' })
          }
        }
      })
        .catch((error: Error) => {
          Logger.info(TAG,'executeCollcet','ResponseDTO')
        })
    })
  }

}

const collectionViewModel = MyCollectionViewModel.getInstance();

export default collectionViewModel as MyCollectionViewModel