PageDataFinishTask.java 2.72 KB
package com.wd.layoutdataimpl.model;

import androidx.annotation.NonNull;

import com.wd.capability.layout.comp.layoutdata.AbsGroup;
import com.wd.foundation.wdkit.mvvm.model.ConditionTask;


/**
 * @Description: 类描述
 * @Author: Li Yubing
 * @Email: liyubing@wondert.com.cn
 * @CreateDate: 2023/8/10 16:56
 * @Version: 1.0
 */
public class PageDataFinishTask extends ConditionTask<String> {

    private PageDataFetcher pageDataFetcher;

    /**
     * 接口业务类型 :1、获取信息流页面数据收集,绘制信息流页面;2、调用多个批查接口,收集数据,完成页面刷新;3、调用多个批查接口,收集数据,无需告知页面刷新
     */
    private int pageType;

    public PageDataFinishTask(int pageType) {

        this.pageType = pageType;
    }

    public void setPageType(int pageType) {
        this.pageType = pageType;
    }

    public void setPageDataFetcher(PageDataFetcher pageDataFetcher) {
        this.pageDataFetcher = pageDataFetcher;
    }

    @Override
    protected String onInstantiateContext() {
        // onExecute不需要参数,这里直接设null
        return null;
    }

    @Override
    protected void onExecute(String contextType) {
        if (pageDataFetcher.isCanceled()) {
            return;
        }
        if (pageDataFetcher.getmListener() != null) {
            if (pageType == 1) {
                pageDataFetcher.resetPage();
                // 第三次遍历页面所有楼层的稿件和组件
                pageDataFetcher.retrieveAllGroupOfComp();
                // 调用批查方法 查询页面相关稿件的动态数据,如 收藏 、点赞、关注等数据
                pageDataFetcher.handlerAllCompDataBetchData();
                // 通知页面刷新
                pageDataFetcher.getmListener().onPageDataSuccess(pageDataFetcher.getmPage(), pageDataFetcher.getPageData());


            } else if (pageType == 2) {
                // 第一批次发送多个批查请求,获取到最终结果,刷新ui,批次批查完毕
                pageDataFetcher.getmListener().onPageDataSetChanged();

                pageDataFetcher.checkBatchTimeAndRequestDyData();

            } else if (pageType == 3) {
                // 其它批次批查,只负责更新数据,批次未查询完毕
                pageDataFetcher.checkBatchTimeAndRequestDyData();
            }
        }
    }

    void onGetPartialDataFinish(@NonNull AbsGroup group) {
        if (group != null) {
            String tag = group.toString();
            matchCondition(tag);
        }
    }

    void registerCondition(@NonNull AbsGroup group) {
        if (group != null) {
            String tag = group.toString();
            registerCondition(tag);
        }

    }

}