MM 新增世界聊天

This commit is contained in:
guozhen
2024-12-27 10:32:26 +08:00
committed by xuhuixiang
parent 6e5816c8b3
commit d084dd22a4
38 changed files with 605 additions and 301 deletions

View File

@@ -8,4 +8,6 @@ public final class ChatUIConstants {
public static final String KEY_MAP_FOR_MESSAGE = "chat_message_map";
public static final String KEY_MAP_FOR_PIN = "chat_pin_map";
public static final String KEY_TEAM_ISGUANFANG="is_guanfang"; //世界聊天 官方
}

View File

@@ -13,6 +13,7 @@ import androidx.fragment.app.FragmentManager;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.netease.nimlib.sdk.team.model.Team;
import com.netease.yunxin.kit.alog.ALog;
import com.netease.yunxin.kit.chatkit.ui.ChatUIConstants;
import com.netease.yunxin.kit.chatkit.ui.R;
import com.netease.yunxin.kit.chatkit.ui.fun.page.fragment.FunChatTeamFragment;
import com.netease.yunxin.kit.chatkit.ui.page.ChatBaseActivity;
@@ -28,6 +29,7 @@ public class FunChatTeamActivity extends ChatBaseActivity {
public void initChat() {
Team teamInfo = (Team) getIntent().getSerializableExtra(RouterConstant.CHAT_KRY);
String teamId = getIntent().getStringExtra(RouterConstant.CHAT_ID_KRY);
boolean isGuanFang = getIntent().getBooleanExtra(ChatUIConstants.KEY_TEAM_ISGUANFANG,false);
if (teamInfo == null && TextUtils.isEmpty(teamId)) {
ALog.e(LIB_TAG, TAG, "team info is null && team id is null" + teamId);
finish();
@@ -38,6 +40,7 @@ public class FunChatTeamActivity extends ChatBaseActivity {
Bundle bundle = new Bundle();
bundle.putSerializable(RouterConstant.CHAT_KRY, teamInfo);
bundle.putSerializable(RouterConstant.CHAT_ID_KRY, teamId);
bundle.putBoolean(ChatUIConstants.KEY_TEAM_ISGUANFANG,isGuanFang);
IMMessage message = (IMMessage) getIntent().getSerializableExtra(RouterConstant.KEY_MESSAGE);
if (message != null) {
bundle.putSerializable(RouterConstant.KEY_MESSAGE, message);

View File

@@ -32,8 +32,11 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.netease.nim.highavailable.LogUtils;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.RequestCallback;
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.netease.nimlib.sdk.team.TeamService;
import com.netease.nimlib.sdk.team.constant.TeamFieldEnum;
import com.netease.nimlib.sdk.team.model.Team;
import com.netease.yunxin.kit.alog.ALog;
@@ -171,6 +174,7 @@ public class FunChatTeamFragment extends FunChatFragment {
}
public TeamExtensionBean extensionBean;
private void refreshView() {
if (teamInfo != null) {
// chatView.getTitleBar().setTitle(teamInfo.getName());
@@ -184,34 +188,7 @@ public class FunChatTeamFragment extends FunChatFragment {
showIsNotMyTeam();
} else {
//展示正常
viewBinding.chattopview.ivChatcall.setVisibility(View.GONE);
viewBinding.chattopview.ivChatsetting.setVisibility(View.VISIBLE);
viewBinding.chattopview.ivChatannouncement.setVisibility(View.VISIBLE);
viewBinding.layoutTeamannouncement.setVisibility(View.GONE);
getMessageBottomLayout().setShowInit();
String teamId = teamInfo.getId();
if (!ChatDataUtils.get(getActivity(), String.format(ChatKitUIConstant.TEAM_ANNOUNCEMENT_CONTENT, IMKitClient.account(), teamId), "").equals(teamInfo.getAnnouncement())) {
ChatDataUtils.set(getActivity(), String.format(ChatKitUIConstant.SHOW_TEAM_ANNOUNCEMENT, IMKitClient.account(), teamId), true);
ChatDataUtils.set(getActivity(), String.format(ChatKitUIConstant.TEAM_ANNOUNCEMENT_CONTENT, IMKitClient.account(), teamId), teamInfo.getAnnouncement());
}
if (!TextUtils.isEmpty(teamInfo.getAnnouncement()) && ChatDataUtils.get(getActivity(), String.format(ChatKitUIConstant.SHOW_TEAM_ANNOUNCEMENT, IMKitClient.account(), teamId), true)) {
viewBinding.layoutTeamannouncement.setVisibility(View.VISIBLE);
viewBinding.tvTeamannouncement.setText(teamInfo.getAnnouncement());
viewBinding.ivTeammannouncementClose.setOnClickListener(view -> {
ChatDataUtils.set(getActivity(), String.format(ChatKitUIConstant.SHOW_TEAM_ANNOUNCEMENT, IMKitClient.account(), teamId), false);
viewBinding.layoutTeamannouncement.setVisibility(View.GONE);
});
viewBinding.layoutTeamannouncement.setOnClickListener(view -> {
//跳到群公告页面
chatView.hideCurrentInput();
XKitRouter.withKey(ChatKitUIConstant.PATH_FUN_TEAM_ANNOUNCEMENT_PAGE)
.withContext(requireContext())
.withParam(KEY_TEAM_ID, teamInfo.getId())
.navigate();
});
}
showChatView();
}
//获取是否允许加好友状态
@@ -247,7 +224,6 @@ public class FunChatTeamFragment extends FunChatFragment {
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
@@ -410,6 +386,28 @@ public class FunChatTeamFragment extends FunChatFragment {
//群被解散或者被踢出
//我不在这个群
// chatView.getTitleBar().setVisibility(View.GONE);
if (isGuanFang) { //如果是官方世界聊天
NIMClient.getService(TeamService.class).applyJoinTeam(teamInfo.getId(), null).setCallback(new RequestCallback<Team>() {
@Override
public void onSuccess(Team team1) {
showChatView();
}
@Override
public void onFailed(int code) {
}
@Override
public void onException(Throwable exception) {
// error
}
});
return;
}
viewBinding.chattopview.ivChatcall.setVisibility(View.GONE);
viewBinding.chattopview.ivChatsetting.setVisibility(View.GONE);
viewBinding.chattopview.ivChatannouncement.setVisibility(View.GONE);
@@ -432,6 +430,35 @@ public class FunChatTeamFragment extends FunChatFragment {
// alertDialog.getWindow().setContentView(dialogView);
}
//展示正常聊天View
public void showChatView() {
viewBinding.chattopview.ivChatcall.setVisibility(View.GONE);
viewBinding.chattopview.ivChatsetting.setVisibility(View.VISIBLE);
viewBinding.chattopview.ivChatannouncement.setVisibility(View.VISIBLE);
viewBinding.layoutTeamannouncement.setVisibility(View.GONE);
getMessageBottomLayout().setShowInit();
String teamId = teamInfo.getId();
if (!ChatDataUtils.get(getActivity(), String.format(ChatKitUIConstant.TEAM_ANNOUNCEMENT_CONTENT, IMKitClient.account(), teamId), "").equals(teamInfo.getAnnouncement())) {
ChatDataUtils.set(getActivity(), String.format(ChatKitUIConstant.SHOW_TEAM_ANNOUNCEMENT, IMKitClient.account(), teamId), true);
ChatDataUtils.set(getActivity(), String.format(ChatKitUIConstant.TEAM_ANNOUNCEMENT_CONTENT, IMKitClient.account(), teamId), teamInfo.getAnnouncement());
}
if (!TextUtils.isEmpty(teamInfo.getAnnouncement()) && ChatDataUtils.get(getActivity(), String.format(ChatKitUIConstant.SHOW_TEAM_ANNOUNCEMENT, IMKitClient.account(), teamId), true)) {
viewBinding.layoutTeamannouncement.setVisibility(View.VISIBLE);
viewBinding.tvTeamannouncement.setText(teamInfo.getAnnouncement());
viewBinding.ivTeammannouncementClose.setOnClickListener(view -> {
ChatDataUtils.set(getActivity(), String.format(ChatKitUIConstant.SHOW_TEAM_ANNOUNCEMENT, IMKitClient.account(), teamId), false);
viewBinding.layoutTeamannouncement.setVisibility(View.GONE);
});
viewBinding.layoutTeamannouncement.setOnClickListener(view -> {
//跳到群公告页面
chatView.hideCurrentInput();
XKitRouter.withKey(ChatKitUIConstant.PATH_FUN_TEAM_ANNOUNCEMENT_PAGE)
.withContext(requireContext())
.withParam(KEY_TEAM_ID, teamInfo.getId())
.navigate();
});
}
}
@Override
public void onNewIntent(Intent intent) {

View File

@@ -73,13 +73,13 @@ public class FunBottomActionFactory {
R.drawable.ic_location1,
R.string.chat_message_location));
actions.add(new ActionItem(ActionConstants.ACTION_TYPE_ALBUMS, R.drawable.ic_action_share_albums, R.string.sharealbums_txt));
//礼品积分红包
actions.add(new ActionItem(ActionConstants.ACTION_TYPE_REP_PACKET, R.drawable.ic_action_red_packet, R.string.hongbao_txt));
if (getConfig(IMKitClient.getApplicationContext(), "redpkg_score", false)) { //积分赠送
//礼品积分红包
actions.add(new ActionItem(ActionConstants.ACTION_TYPE_REP_PACKET, R.drawable.ic_action_red_packet, R.string.hongbao_txt));
}
//赠送功能入口
if (sessionType == SessionTypeEnum.P2P) {
if (getConfig(IMKitClient.getApplicationContext(), "transfer_jifen", false)) { //积分赠送
if (getConfig(IMKitClient.getApplicationContext(), "transfer_score", false)) { //积分赠送
actions.add(new ActionItem(ActionConstants.ACTION_TYPE_TRANSFER, R.drawable.ic_action_tur, R.string.zhuanzhang_txtq));
}
// if (getConfig(IMKitClient.getApplicationContext(), "transfer_cash", false)) { //cash赠送

View File

@@ -54,8 +54,7 @@ public interface ApiService {
/**
* 测试环境
*/
//String URL = "https://api-test.letschat2023.com/";
// String URL = "https://8.217.244.135:8001/";
// String URL = "https://api-test.letschat2023.com/";
String SUBSTATIONID = "1703655363476242434";

View File

@@ -91,6 +91,7 @@ import com.netease.yunxin.kit.chatkit.ui.ChatKitClient;
import com.netease.yunxin.kit.chatkit.ui.ChatKitUIConstant;
import com.netease.yunxin.kit.chatkit.ui.ChatMessageType;
import com.netease.yunxin.kit.chatkit.ui.ChatUIConfig;
import com.netease.yunxin.kit.chatkit.ui.ChatUIConstants;
import com.netease.yunxin.kit.chatkit.ui.R;
import com.netease.yunxin.kit.chatkit.ui.adapter.CommonAdapter;
import com.netease.yunxin.kit.chatkit.ui.adapter.ViewHolder;
@@ -282,6 +283,8 @@ public abstract class ChatBaseFragment extends BaseFragment {
public Team teamInfo;
public int isAllowAd = 0;
public boolean isGuanFang;
@Nullable
@Override
public View onCreateView(
@@ -301,6 +304,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
super.onViewCreated(view, savedInstanceState);
if (getArguments() != null) {
isServices = getArguments().getBoolean("isService", false);
isGuanFang = getArguments().getBoolean(ChatUIConstants.KEY_TEAM_ISGUANFANG, false);
initData(getArguments());
}
mHandler = new Handler();

View File

@@ -114,7 +114,7 @@
<string name="chat_team_notice_update">Modified group announcement</string>
<string name="chat_team_accept_ones_invent">accepted the group invitation from %s</string>
<string name="chat_team_verify_update">permissions updated to</string>
<string name="chat_team_manager_pass_ones_application">Agree the group apply from%s</string>
<string name="chat_team_manager_pass_ones_application">%s has joined the group chat</string>
<string name="chat_team_remove_to_another">Give away the group to</string>
<string name="chat_team_operate_by_manager">Admin by</string>
<string name="chat_team_mute">Mute</string>

View File

@@ -113,7 +113,7 @@
<string name="chat_team_notice_update">グループのお知らせを更新しました</string>
<string name="chat_team_accept_ones_invent">%s のグループ招待を承認しました</string>
<string name="chat_team_verify_update">グループ検証権限を更新する</string>
<string name="chat_team_manager_pass_ones_application">管理者はユーザー %s を通じてグループ メンバーシップを申請します</string>
<string name="chat_team_manager_pass_ones_application">%s がグループチャットに参加しました</string>
<string name="chat_team_remove_to_another">グループを次の場所に移動します</string>
<string name="chat_team_operate_by_manager">管理者</string>
<string name="chat_team_mute">ミュート</string>

View File

@@ -116,7 +116,7 @@
<string name="chat_team_notice_update">更新了群公告</string>
<string name="chat_team_accept_ones_invent">接受了%s的入群邀请</string>
<string name="chat_team_verify_update">更新群身份验证权限为</string>
<string name="chat_team_manager_pass_ones_application">管理员通过用户%s的入群申请</string>
<string name="chat_team_manager_pass_ones_application">%s进入了群聊</string>
<string name="chat_team_remove_to_another">将群转移给</string>
<string name="chat_team_operate_by_manager">被管理员</string>
<string name="chat_team_mute">禁言</string>

View File

@@ -116,7 +116,7 @@
<string name="chat_team_notice_update">更新了群組公告</string>
<string name="chat_team_accept_ones_invent">接受了%s的入群邀請</string>
<string name="chat_team_verify_update">更新群組驗證權限為</string>
<string name="chat_team_manager_pass_ones_application">管理員透過使用者%s的入群申請</string>
<string name="chat_team_manager_pass_ones_application">%s 已加入群聊</string>
<string name="chat_team_remove_to_another">將群組轉移給</string>
<string name="chat_team_operate_by_manager">被管理員</string>
<string name="chat_team_mute">禁言</string>