SessionTeamCustomization.java 4.04 KB
Newer Older
konghaorui committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
package com.yidianling.im.session;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.View;

import com.yidianling.uikit.api.NimUIKit;
import com.yidianling.uikit.business.contact.selector.activity.ContactSelectActivity;
import com.yidianling.uikit.business.session.activity.YDLTeamMessageActivity;
import com.yidianling.uikit.business.team.model.TeamExtras;
import com.yidianling.uikit.business.team.model.TeamRequestCode;
import com.yidianling.uikit.custom.bridge.ActionHandlerStorage;
import com.netease.nimlib.sdk.msg.attachment.MsgAttachment;
import com.netease.nimlib.sdk.team.model.Team;
import com.yidianling.im.R;
import com.yidianling.im.session.extension.StickerAttachment;
import com.yidianling.nimbase.api.model.session.SessionCustomization;
import com.yidianling.nimbase.common.ToastHelper;

import java.io.Serializable;
import java.util.ArrayList;

/**
 * 抽象出来的,群组更多定制化选项,普通群和高级群同样功能的抽象
 * Created by winnie on 2018/3/19.
 */

public class SessionTeamCustomization extends SessionCustomization{

    public interface SessionTeamCustomListener extends Serializable {

        void onSelectedAccountsResult(ArrayList<String> selectedAccounts);

        void onSelectedAccountFail();
    }

    private SessionTeamCustomListener sessionTeamCustomListener;

    public SessionTeamCustomization(SessionTeamCustomListener listener) {
        this.sessionTeamCustomListener = listener;
        // 定制ActionBar右边的按钮,可以加多个
        ArrayList<OptionsButton> optionsButtons = new ArrayList<>();
        OptionsButton cloudMsgButton = new OptionsButton() {
            @Override
            public void onClick(Context context, View view, String sessionId) {
                if (ActionHandlerStorage.getL(sessionId)!=null){
                    Team t = NimUIKit.getTeamProvider().getTeamById(sessionId);
                    ActionHandlerStorage.getL(sessionId).h5ActivityStart((YDLTeamMessageActivity)context,"consult/history-ct?tid="+t.getId(),false);
                }
            }
        };
konghaorui committed
53
        cloudMsgButton.iconId = R.mipmap.im_chat_ico_lishi;
konghaorui committed
54 55 56 57 58 59 60 61

        OptionsButton infoButton = new OptionsButton() {
            @Override
            public void onClick(Context context, View view, String sessionId) {
                Team team = NimUIKit.getTeamProvider().getTeamById(sessionId);
                if (team != null && team.isMyTeam()) {
                    NimUIKit.startTeamInfo(context, sessionId);
                } else {
konghaorui committed
62
                    ToastHelper.showToast(context, R.string.im_team_invalid_tip);
konghaorui committed
63 64 65
                }
            }
        };
konghaorui committed
66
        infoButton.iconId = R.mipmap.im_more12x;
konghaorui committed
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
        optionsButtons.add(cloudMsgButton);
        optionsButtons.add(infoButton);

        buttons = optionsButtons;
    }

    @Override
    public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
        if (requestCode == TeamRequestCode.REQUEST_CODE) {
            if (resultCode == Activity.RESULT_OK) {
                String reason = data.getStringExtra(TeamExtras.RESULT_EXTRA_REASON);
                boolean finish = reason != null && (reason.equals(TeamExtras
                        .RESULT_EXTRA_REASON_DISMISS) || reason.equals(TeamExtras.RESULT_EXTRA_REASON_QUIT));
                if (finish) {
                    activity.finish(); // 退出or解散群直接退出多人会话
                }
            }
        } else if (requestCode == TeamRequestCode.REQUEST_TEAM_VIDEO) {
            if (resultCode == Activity.RESULT_OK) {
                ArrayList<String> selectedAccounts = data.getStringArrayListExtra(ContactSelectActivity.RESULT_DATA);
                sessionTeamCustomListener.onSelectedAccountsResult(selectedAccounts);
            } else {
                sessionTeamCustomListener.onSelectedAccountFail();
            }
        }
    }

    @Override
    public MsgAttachment createStickerAttachment(String category, String item) {
        return new StickerAttachment(category, item);
    }
}