package com.yidianling.uikit.api;

import android.content.Context;

import com.netease.nimlib.sdk.msg.attachment.MsgAttachment;
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.netease.nimlib.sdk.team.constant.TeamTypeEnum;
import com.netease.nimlib.sdk.team.model.Team;
import com.yidianling.nimbase.api.BaseNimUIKitImpl;
import com.yidianling.nimbase.api.model.session.SessionCustomization;
import com.yidianling.uikit.business.contact.selector.activity.ContactSelectActivity;
import com.yidianling.uikit.business.session.activity.YDLP2PMessageActivity;
import com.yidianling.uikit.business.session.activity.YDLTeamMessageActivity;
import com.yidianling.uikit.business.session.viewholder.MsgViewHolderBase;
import com.yidianling.uikit.business.session.viewholder.MsgViewHolderFactory;
import com.yidianling.uikit.business.team.activity.AdvancedTeamInfoActivity;
import com.yidianling.uikit.business.team.activity.NormalTeamInfoActivity;
import com.yidianling.uikit.custom.bridge.IP2PCustomActionHandler;

/**
 * UIKit能力实现类。
 */
public final class NimUIKitImpl extends BaseNimUIKitImpl {


    public static void registerMsgItemViewHolder(Class<? extends MsgAttachment> attach, Class<? extends MsgViewHolderBase> viewHolder) {
        MsgViewHolderFactory.register(attach, viewHolder);
    }

    public static void registerTipMsgViewHolder(Class<? extends MsgViewHolderBase> viewHolder) {
        MsgViewHolderFactory.registerTipMsgViewHolder(viewHolder);
    }

    public static void startChatting(Context context, String id, SessionTypeEnum sessionType, SessionCustomization
            customization, IMMessage anchor,IP2PCustomActionHandler l) {
        if (sessionType == SessionTypeEnum.P2P) {
            YDLP2PMessageActivity.start(context, id, customization, anchor,l);
        } else if (sessionType == SessionTypeEnum.Team) {
            YDLTeamMessageActivity.start(context, id, customization, null, anchor,l);
        }
    }

    public static void startContactSelector(Context context, ContactSelectActivity.Option option, int requestCode) {
        ContactSelectActivity.startActivityForResult(context, option, requestCode);
    }

    public static void startTeamInfo(Context context, String teamId) {
        Team team = NimUIKit.getTeamProvider().getTeamById(teamId);
        if (team == null) {
            return;
        }
        if (team.getType() == TeamTypeEnum.Advanced) {
            AdvancedTeamInfoActivity.start(context, teamId); // 启动固定群资料页
        } else if (team.getType() == TeamTypeEnum.Normal) {
            NormalTeamInfoActivity.start(context, teamId); // 启动讨论组资料页
        }
    }


}