TemplatePageDataViewModel.java 3.54 KB
package com.wd.comment.commonpage;

import android.content.Context;

import androidx.lifecycle.LifecycleOwner;

import com.wd.room.entity.ChannelBean;
import com.wd.foundation.bean.RecListBean;
import com.wd.foundation.bean.custom.MenuBean;
import com.wd.foundation.bean.custom.content.ContentBean;
import com.wd.foundation.wdkit.mvvm.vm.BaseViewModel;

import java.util.List;

/**
 * @Description: 样板页面数据请求类
 * @Author: Li Yubing
 * @Email: liyubing@wondert.com.cn
 * @CreateDate: 2023/8/21 13:51
 * @Version: 1.0
 */
public class TemplatePageDataViewModel extends BaseViewModel {


    private TemplatePageDataListener templatePageDataListener;

    private TemplatePageDataFetcher templatePageFetcher;

    private String channelId;

    private ChannelBean mChannelBean;

    /**
     * 注册vm回调对象
     *
     * @param lifecycleOwner 生命周期对象
     * @param listener       监听对象
     */
    public void observeTemplatePageDataListener(LifecycleOwner lifecycleOwner, TemplatePageDataListener listener) {
        if (templatePageDataListener == null) {
            templatePageDataListener = observe(lifecycleOwner, listener, TemplatePageDataListener.class);
        } else {
            observeRepeat(lifecycleOwner, listener, templatePageDataListener);
        }
    }

    /**
     * 发送页面数据请求
     *
     * @param pageNum
     * @param pageSize
     * @param menuBean
     */
    public void sendPageDataRequest(Context context, int pageNum, int pageSize, int position, MenuBean menuBean, int textLength) {

        if (templatePageFetcher == null) {
            templatePageFetcher = new TemplatePageDataFetcher(templatePageDataListener);
            templatePageFetcher.setChannelBean(mChannelBean);
            templatePageFetcher.setChannelId(channelId);
        } else {
            templatePageFetcher.setChannelBean(mChannelBean);
            templatePageFetcher.setChannelId(channelId);
            templatePageFetcher.setTemplatePageDataListener(templatePageDataListener);
        }
        templatePageFetcher.createCommonPage(context,pageNum, pageSize, position, menuBean,textLength);

    }

    public void sendPageDataRequest(Context context,int pageNum, int pageSize, MenuBean menuBean,
                                    RecListBean recListBean) {

        if (templatePageFetcher == null) {
            templatePageFetcher = new TemplatePageDataFetcher(templatePageDataListener);
            templatePageFetcher.setChannelBean(mChannelBean);
            templatePageFetcher.setChannelId(channelId);
        } else {
            templatePageFetcher.setChannelBean(mChannelBean);
            templatePageFetcher.setChannelId(channelId);
            templatePageFetcher.setTemplatePageDataListener(templatePageDataListener);
        }
        templatePageFetcher.setRecListBean(recListBean);
        templatePageFetcher.createCommonPage(context,pageNum, pageSize, 0, menuBean,0);

    }

    /**
     * 信息流页面绘制后 向指定位置插入新的组件或者稿件
     * @param moreList 需要插入的数据
     * @param position 插入位置
     */
    public void contentDataInsertToPositionPage(List<ContentBean> moreList, int position){

        if(templatePageFetcher != null){
            if(moreList != null){
                templatePageFetcher.contentDataInsertToPositionPage(moreList,position);
            }
        }

    }

    public void setChannelId(String channelId){
        this.channelId = channelId;
    }

    public void setChannelBean(ChannelBean channelBean){
        this.mChannelBean = channelBean;
    }
}