NewPullUpLoadMore.ets 1.92 KB
import PageModel from '../viewmodel/PageModel';
import { RefreshConstants as Const } from './RefreshConstants';
import newPageHelper from '../viewmodel/NewPageHelper';
import { Logger } from 'wdKit/Index';

const TAG = 'NewPullUpLoadMore'

export function touchMoveLoadMore(model: PageModel, event: TouchEvent) {
  // list size +1
  if (model.endIndex >= model.compList.totalCount() - 3 && model.endIndex <= model.compList.totalCount()) {
    // model.offsetY = event.touches[0].y - model.downY;
    // if (Math.abs(model.offsetY) > vp2px(model.pullUpLoadHeight) / 2) {
    //   model.isCanLoadMore = true;
    //   model.isVisiblePullUpLoad = true;
    //   model.offsetY = -vp2px(model.pullUpLoadHeight) + model.offsetY * Const.Y_OFF_SET_COEFFICIENT;
    // }

    // 不用分页动画,直接预加载
    model.isCanLoadMore = true;
    model.isVisiblePullUpLoad = true;
    touchUpLoadMore(model);
  }
}

export function touchUpLoadMore(model: PageModel,onRefreshMore: () => void = () => {
}) {
  let self: PageModel = model;
  animateTo({
    duration: Const.ANIMATION_DURATION,
  }, () => {
    self.offsetY = 0;
  })
  if ((self.isCanLoadMore === true) && (self.hasMore === true) && (self.isLoading === false)) {
    self.isLoading = true;
    setTimeout(() => {
      // closeLoadMore(model);
      // newPageHelper.loadMore(self)
      onRefreshMore()
    }, Const.DELAY_TIME);
    setLoadMoreTimeoutTimer(self)
  } else {
    closeLoadMore(self);
  }
}

export function closeLoadMore(model: PageModel) {
  model.isCanLoadMore = false;
  model.isLoading = false;
  model.isVisiblePullUpLoad = false;
}

export function setLoadMoreTimeoutTimer(pageModel: PageModel) {
  let timeoutId = setTimeout(() => {
    closeLoadMore(pageModel);
    Logger.error(TAG, 'closeLoadMore by timeout')
  }, Const.REFRESH_TIMEOUT__TIME);
  // 取消超时关闭定时器
  clearTimeout(pageModel.loadMoreTimeoutTimerId)
  pageModel.loadMoreTimeoutTimerId = timeoutId
}