GroupRequest.ets 1.84 KB
/**
 * Group数据请求调度
 * 处理MGGroup的数据请求,并同步所有包含的MGComp的请求结果并一同返回给调用者。
 */
import { ItemBean } from '../bean/ItemBean';
import { ItemDTO } from '../bean/ItemDTO';
import { WDComp } from '../layout/WDComp';
import { WDGroup } from '../layout/WDGroup';
import List from '@ohos.util.List';
import { FlowComp } from '../layout/FlowComp';

export class GroupRequest {
  /**
   * 发起Group数据请求
   * @param isRefresh 是否为刷新
   * @param group MGGroup对象
   * @returns 是否发起了请求
   */
  public request(isRefresh: boolean, group: WDGroup): boolean {
    // TODO: 通过MGGroup获取数据,或遍历所包含的MGComp获取数据。
    if (group == null || group.getCompList() == null || group.getCompList().isEmpty()) {
      return false;
    }

    if (group.shouldLoadData()) {
      group.sendRequest(isRefresh);
      return true;
    } else {
      return false;
    }
  }

  /**
   * 如果Group中的Comp可以加载更多数据,则加载更多数据。
   * @param group MGGroup对象
   * @returns 是否加载了更多数据
   */
  public loadMore(group: WDGroup | undefined): boolean {
    // TODO: 如果Group中的Comp可以加载更多数据,通过MGComp#loadMore获取数据。
    if (group != undefined) {
      let compList:List<WDComp<ItemBean, ItemDTO>> = group?.getCompList();
      if (compList) {
        for (let i = 0; i < compList.length; i++) {
          let mgComp = compList.get(i);
          if (mgComp instanceof FlowComp && mgComp.hasMoreData()) {
            if (!mgComp.getIsLoading()) {
              mgComp.loadMore();
            }
            return true;
          }
        }

        // if (group.isHasMoreGroupData()) {
        //   group.requestLongFeed(false);
        //   return true;
        // }
      }
    }
    return false;
  }
}