diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 372a423..faacb2b 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -47,12 +47,12 @@ android {
applicationId = "com.dskj.rbchat"
minSdk = 24
targetSdk = 34
- versionCode = 193
- versionName = "1.9.3"
+ versionCode = 192
+ versionName = "1.9.2"
multiDexEnabled = true
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
- //manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" //正式
- //manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a" //测试
+ manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" //正式
+ // manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a" //测试
manifestPlaceholders["JPUSH_PKGNAME"] = "com.dskj.rbchat"
manifestPlaceholders["JPUSH_APPKEY"] = "9041bc22de91e3d9af3cfd23"
@@ -62,25 +62,10 @@ android {
abiFilters += listOf("armeabi-v7a", "arm64-v8a")
}
}
-// flavorDimensions += "version"
-// productFlavors {
-//
-// create("timeGo") {
-// applicationId = "";
-// versionNameSuffix = ""
-// }
-//
-// create("mm") {
-// applicationId = "";
-// versionNameSuffix = "-mm"
-// }
-//
-//
-// }
buildTypes {
getByName("release") {
- isMinifyEnabled = true
+ isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
@@ -88,7 +73,6 @@ android {
signingConfig = signingConfigs.getByName("release")
isDebuggable = false;
-
// buildConfigField(
// "String",
// "HTTPS_BASE_URL",
@@ -277,6 +261,4 @@ dependencies {
// implementation("com.esotericsoftware.spine:spine-libgdx:4.1.00")
// implementation("com.esotericsoftware:spine-runtimes:+")
- implementation("com.airbnb.android:lottie:6.0.0") // lottie json动画
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 69c3559..e5ba5bf 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -20,9 +20,9 @@
-
-
-
+
+
+
@@ -484,6 +484,14 @@
android:screenOrientation="portrait"
android:theme="@style/TransTheme"
android:windowSoftInputMode="adjustResize" />
+
+
listkey;
protected ArrayList listname;
protected ArrayList listavat;
@@ -142,6 +143,10 @@ public class ContactGroupSettingActivity extends FunBaseSelectorDataActivity imp
binding.rbSelector.setChecked(isChecked);
}
);
+ binding.swichAllow.setOnClickListener(v -> {
+ isAllow = !isAllow;
+ binding.swichAllow.setChecked(isAllow);
+ });
LinearLayoutManager layoutManager =
new LinearLayoutManager(this, RecyclerView.HORIZONTAL, false);
binding.rvMembers.setLayoutManager(layoutManager);
@@ -288,6 +293,7 @@ public class ContactGroupSettingActivity extends FunBaseSelectorDataActivity imp
result.putExtra(KEY_TEAM_NAME, TextUtils.isEmpty(groupname) ? binding.editGroupname.getHint().toString() : groupname);
result.putExtra(KEY_TEAM_ICON, groupHeadUrl);
result.putExtra(ContactConstant.REQUEST_FUN_CREATE_GROUP_AUTO, isChecked);
+ result.putExtra(ContactConstant.REQUEST_FUN_CREATE_GROUP_ALLOW_ADDFRIENDS, isAllow);
setResult(RESULT_OK, result);
finish();
}).setActionTextColor(getResources().getColor(R.color.color_6877fe));
diff --git a/app/src/main/java/com/dskj/rbchat/contact/UserInfoActivity.java b/app/src/main/java/com/dskj/rbchat/contact/UserInfoActivity.java
index 3c8900c..b976321 100644
--- a/app/src/main/java/com/dskj/rbchat/contact/UserInfoActivity.java
+++ b/app/src/main/java/com/dskj/rbchat/contact/UserInfoActivity.java
@@ -3,7 +3,6 @@ package com.dskj.rbchat.contact;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
-import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
@@ -36,11 +35,8 @@ import com.dskj.rbchat.adapter.CommonAdapter;
import com.dskj.rbchat.adapter.ViewHolder;
import com.dskj.rbchat.databinding.ActivityUserInfoBinding;
import com.dskj.rbchat.dialog.ActionConfirmDialog;
-import com.dskj.rbchat.main.MainActivity;
import com.dskj.rbchat.main.mine.EditFriendUserInfoActivity;
import com.dskj.rbchat.main.mine.EditUserInfoActivity;
-import com.dskj.rbchat.main.mine.photo.AddPhotoActivity;
-import com.dskj.rbchat.main.mine.photo.UserPhotoDetailsActivity;
import com.dskj.rbchat.main.mine.photo.UserPhotoListActivity;
import com.dskj.rbchat.model.AlbumBean;
import com.dskj.rbchat.model.ListBeanResult;
@@ -62,7 +58,6 @@ import com.netease.yunxin.kit.chatkit.ui.common.ChatUtils;
import com.netease.yunxin.kit.chatkit.ui.common.RxBus;
import com.netease.yunxin.kit.chatkit.ui.model.ChatBlackEvent;
import com.netease.yunxin.kit.chatkit.ui.model.ChatDeleteEvent;
-import com.netease.yunxin.kit.chatkit.ui.model.CleanHistoryEvent;
import com.netease.yunxin.kit.common.ui.activities.BaseActivity;
import com.netease.yunxin.kit.common.ui.utils.ToastX;
import com.netease.yunxin.kit.common.ui.viewmodel.LoadStatus;
@@ -80,9 +75,9 @@ import com.netease.yunxin.kit.corekit.im.provider.FetchCallback;
import com.netease.yunxin.kit.corekit.im.repo.CommonRepo;
import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;
import com.netease.yunxin.kit.corekit.route.XKitRouter;
+import com.netease.yunxin.kit.teamkit.ui.utils.viewmodel.TeamSettingViewModel;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -93,12 +88,16 @@ import io.reactivex.schedulers.Schedulers;
public class UserInfoActivity extends BaseActivity {
private ActivityUserInfoBinding viewBinding;
protected UserInfoViewModel viewModel;
+ protected TeamSettingViewModel teammodel;
protected ContactUserInfoBean userInfoData;
protected String accId;
private ActivityResultLauncher launcher;
protected BlackListViewModel blackListViewModel;
private String alias = "";
+ private String teamId = "";
+ private int isAllowAdd = 1;
+
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -588,7 +587,10 @@ public class UserInfoActivity extends BaseActivity {
viewBinding.moreIv.setVisibility(View.GONE);
viewBinding.starIv.setVisibility(View.GONE);
viewBinding.friendLy.setVisibility(View.GONE);
- viewBinding.addFriendsTv.setVisibility(View.VISIBLE);
+ if (isAllowAdd == 1) {
+ viewBinding.addFriendsTv.setVisibility(View.VISIBLE);
+ }
+
finish();
RxBus.getInstance().post(IMUIKitConfig.CHANGE_FOLLOW_USER);
@@ -599,7 +601,9 @@ public class UserInfoActivity extends BaseActivity {
viewBinding.moreIv.setVisibility(View.GONE);
viewBinding.starIv.setVisibility(View.GONE);
viewBinding.friendLy.setVisibility(View.GONE);
- viewBinding.addFriendsTv.setVisibility(View.VISIBLE);
+ if (isAllowAdd == 1) {
+ viewBinding.addFriendsTv.setVisibility(View.VISIBLE);
+ }
finish();
RxBus.getInstance().post(IMUIKitConfig.CHANGE_FOLLOW_USER);
@@ -665,6 +669,30 @@ public class UserInfoActivity extends BaseActivity {
finish();
}
}
+ //群设置了不允许互加好友
+// teamId = getIntent().getStringExtra("teamId");
+// if (!TextUtils.isEmpty(teamId)) {
+// teammodel = new TeamSettingViewModel();
+// teammodel.getTeamWithMemberData().observe(this, teamResultInfo -> {
+// if (teamResultInfo.getValue() == null || !teamResultInfo.getSuccess()) {
+// return;
+// }
+// Team teaminfo = teamResultInfo.getValue().getTeam();
+// String extension = teaminfo.getExtension();
+// if (!TextUtils.isEmpty(extension)) {
+// TeamExtensionBean extensionBean = GsonUtils.getObjFromJSON(extension, TeamExtensionBean.class);
+// if (extensionBean != null) {
+// isAllowAdd = extensionBean.getAllowAddFriends();
+// }
+// if (isAllowAdd == 0) {
+// viewBinding.addFriendsTv.setVisibility(View.GONE);
+// }
+//
+// }
+// });
+// teammodel.requestTeamData(teamId);
+// }
+
IMApplication.schemeUserId = null;
if (accId.equals(IMKitClient.account()) || ContactRepo.isFriend(accId)) { //是好友或者是自己 可以修改备注
@@ -845,7 +873,7 @@ public class UserInfoActivity extends BaseActivity {
viewBinding.moreIv.setVisibility(View.VISIBLE);
viewBinding.starIv.setVisibility(View.VISIBLE);
} else {
- if (!userInfoData.isBlack) {
+ if (!userInfoData.isBlack && isAllowAdd == 1) {
viewBinding.addFriendsTv.setVisibility(View.VISIBLE);
}
}
diff --git a/app/src/main/java/com/dskj/rbchat/imkit/selector/FunContactSelectorActivity.java b/app/src/main/java/com/dskj/rbchat/imkit/selector/FunContactSelectorActivity.java
index d1ade28..305e814 100644
--- a/app/src/main/java/com/dskj/rbchat/imkit/selector/FunContactSelectorActivity.java
+++ b/app/src/main/java/com/dskj/rbchat/imkit/selector/FunContactSelectorActivity.java
@@ -106,25 +106,20 @@ public class FunContactSelectorActivity extends BaseContactSelectorActivity {
super.updateView();
if (type == 1) { //转发 这ui 修改的....
rvSelected.setVisibility(View.GONE);
- contactListView.showSelector(false);
- lastContactView.showSelector(false);
- loveContactView.showSelector(false);
- searchContactView.showSelector(false);
- LinearLayout.LayoutParams params1 = (LinearLayout.LayoutParams) contactListView.getLayoutParams();
- LinearLayout.LayoutParams params2 = (LinearLayout.LayoutParams) lastContactView.getLayoutParams();
- LinearLayout.LayoutParams params3 = (LinearLayout.LayoutParams) loveContactView.getLayoutParams();
- LinearLayout.LayoutParams params4 = (LinearLayout.LayoutParams) searchContactView.getLayoutParams();
- params1.setMarginStart(SizeUtils.dp2px(15));
- params2.setMarginStart(SizeUtils.dp2px(15));
- params3.setMarginStart(SizeUtils.dp2px(15));
- params4.setMarginStart(SizeUtils.dp2px(15));
- contactListView.setLayoutParams(params1);
- lastContactView.setLayoutParams(params2);
- loveContactView.setLayoutParams(params3);
- searchContactView.setLayoutParams(params4);
+ updateListView(contactListView);
+ updateListView(lastContactView);
+ updateListView(loveContactView);
+ updateListView(searchContactView);
}
}
+ public void updateListView(ContactListView contactListView) {
+ contactListView.showSelector(false);
+ LinearLayout.LayoutParams params1 = (LinearLayout.LayoutParams) contactListView.getLayoutParams();
+ params1.setMarginStart(SizeUtils.dp2px(15));
+ contactListView.setLayoutParams(params1);
+ }
+
public void setViewHolderFactory(ContactListView contactView) {
contactView
.getDecoration()
@@ -169,6 +164,7 @@ public class FunContactSelectorActivity extends BaseContactSelectorActivity {
.withParam(KEY_TEAM_NAME, data.getStringExtra(KEY_TEAM_NAME))
.withParam(KEY_TEAM_ICON, data.getStringExtra(KEY_TEAM_ICON))
.withParam(ContactConstant.REQUEST_FUN_CREATE_GROUP_AUTO, data.getBooleanExtra(ContactConstant.REQUEST_FUN_CREATE_GROUP_AUTO, true))
+ .withParam(ContactConstant.REQUEST_FUN_CREATE_GROUP_ALLOW_ADDFRIENDS, data.getBooleanExtra(ContactConstant.REQUEST_FUN_CREATE_GROUP_ALLOW_ADDFRIENDS, true))
.navigate(
res -> {
if (res.getSuccess() && res.getValue() instanceof CreateTeamResult) {
diff --git a/app/src/main/java/com/dskj/rbchat/imkit/team/BaseTeamQrSettingActivity.java b/app/src/main/java/com/dskj/rbchat/imkit/team/BaseTeamQrSettingActivity.java
index c752072..b08c7f9 100644
--- a/app/src/main/java/com/dskj/rbchat/imkit/team/BaseTeamQrSettingActivity.java
+++ b/app/src/main/java/com/dskj/rbchat/imkit/team/BaseTeamQrSettingActivity.java
@@ -418,6 +418,7 @@ public abstract class BaseTeamQrSettingActivity extends BaseActivity implements
.withParam(KEY_TEAM_NAME, data.getStringExtra(KEY_TEAM_NAME))
.withParam(KEY_TEAM_ICON, data.getStringExtra(KEY_TEAM_ICON))
.withParam(ContactConstant.REQUEST_FUN_CREATE_GROUP_AUTO, data.getBooleanExtra(ContactConstant.REQUEST_FUN_CREATE_GROUP_AUTO, true))
+ .withParam(ContactConstant.REQUEST_FUN_CREATE_GROUP_ALLOW_ADDFRIENDS, data.getBooleanExtra(ContactConstant.REQUEST_FUN_CREATE_GROUP_ALLOW_ADDFRIENDS, true))
.navigate(
res -> {
if (res.getSuccess() && res.getValue() instanceof CreateTeamResult) {
diff --git a/app/src/main/java/com/dskj/rbchat/imkit/team/TeamAddManagerActivity.java b/app/src/main/java/com/dskj/rbchat/imkit/team/TeamAddManagerActivity.java
new file mode 100644
index 0000000..0b6e91e
--- /dev/null
+++ b/app/src/main/java/com/dskj/rbchat/imkit/team/TeamAddManagerActivity.java
@@ -0,0 +1,394 @@
+package com.dskj.rbchat.imkit.team;
+
+import static com.netease.yunxin.kit.corekit.im.utils.RouterConstant.KEY_TEAM_ID;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.util.TypedValue;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.inputmethod.EditorInfo;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatRadioButton;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.dskj.rbchat.R;
+import com.dskj.rbchat.adapter.CommonAdapter;
+import com.dskj.rbchat.adapter.ViewHolder;
+import com.dskj.rbchat.base.LllChatBaseActivity;
+import com.dskj.rbchat.databinding.ActivityTeamaddmanagerBinding;
+
+import com.netease.nimlib.sdk.NIMClient;
+import com.netease.nimlib.sdk.RequestCallback;
+import com.netease.nimlib.sdk.team.TeamService;
+import com.netease.nimlib.sdk.team.model.TeamMember;
+import com.netease.yunxin.kit.chatkit.repo.ContactRepo;
+import com.netease.yunxin.kit.common.ui.utils.ToastX;
+import com.netease.yunxin.kit.common.ui.widgets.ContactAvatarView;
+import com.netease.yunxin.kit.common.utils.NetworkUtils;
+import com.netease.yunxin.kit.contactkit.ui.databinding.FunContactSelectorActivityLayoutBinding;
+import com.netease.yunxin.kit.contactkit.ui.fun.contact.FunContactDefaultFactory;
+import com.netease.yunxin.kit.contactkit.ui.view.ContactListView;
+import com.netease.yunxin.kit.corekit.im.IMKitClient;
+import com.netease.yunxin.kit.corekit.im.model.UserInfo;
+import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;
+import com.netease.yunxin.kit.corekit.route.XKitRouter;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 添加管理員
+ */
+public class TeamAddManagerActivity extends LllChatBaseActivity {
+
+
+ @Override
+ public int initNavigationBarColor() {
+ return getColor(R.color.color_fffafa);
+ }
+
+ @Override
+ public int initStatusBarColor() {
+ return getColor(R.color.color_titlebar);
+ }
+
+ protected ActivityTeamaddmanagerBinding binding;
+ protected RecyclerView searchContactView; //搜索
+ protected RecyclerView allTeamContactView; //群好友
+ protected RecyclerView rvSelected; //已選擇
+
+ protected CommonAdapter selectedAdapter;
+ protected CommonAdapter searchAdapter;
+ protected CommonAdapter allMemberAdapter;
+
+ private List listMembers = new ArrayList<>();
+ private List listSearch = new ArrayList<>();
+ public static final String LISTMEMBERS = "listTeamMembers";
+ public static final String HASSELECTOR = "hasSelector"; //只能添加个数
+ public static final String BUNDLE = "bundle";
+ private List userInfos;
+
+ private List selectorPosition = new ArrayList<>();
+
+
+ private String teamId = "";
+ private int hasAdd;
+
+
+ public static void launch(Context context, String teamId, List userInfos, int hasSelector, @NonNull ActivityResultLauncher launcher) {
+ Intent intent = new Intent(context, TeamAddManagerActivity.class);
+ Bundle bundle = new Bundle();
+ bundle.putString(KEY_TEAM_ID, teamId);
+ bundle.putInt(HASSELECTOR, hasSelector);
+ bundle.putSerializable(LISTMEMBERS, (Serializable) userInfos);
+ intent.putExtra(BUNDLE, bundle);
+ launcher.launch(intent);
+ }
+
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ binding = ActivityTeamaddmanagerBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+ Bundle args = getIntent().getBundleExtra(BUNDLE);
+ if (args == null) {
+ finish();
+ return;
+ }
+ userInfos = (List) args.getSerializable(LISTMEMBERS);
+ teamId = args.getString(KEY_TEAM_ID);
+ hasAdd = args.getInt(HASSELECTOR);
+ listMembers.addAll(userInfos);
+ searchContactView = binding.recyclerSearchlistView;
+ rvSelected = binding.rvSelected;
+ allTeamContactView = binding.recyclerMember;
+ binding.title
+ .setOnBackIconClickListener(v -> onBackPressed())
+ .setTitle(R.string.str_teammanager_add_title)
+ .setActionText(String.format(getString(R.string.str_teammanager_title_right), selectorPosition.size()))
+ .setActionTextColor(getResources().getColor(com.netease.yunxin.kit.contactkit.ui.R.color.color_6877fe))
+ .setActionListener(
+ v -> {
+ if (!NetworkUtils.isConnected()) {
+ Toast.makeText(this, com.netease.yunxin.kit.contactkit.ui.R.string.contact_network_error_tip, Toast.LENGTH_SHORT).show();
+ return;
+ }
+ if (selectorPosition.size() > 0) {
+ List accountId = new ArrayList<>();
+ for (UserInfo userInfo : selectorPosition) {
+ accountId.add(userInfo.getAccount());
+ }
+ addManager(accountId);
+ }else{
+ ToastX.showShortToast(R.string.str_teammanager_add_not_toast);
+ }
+
+
+ });
+ binding.title.getTitleTextView().setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
+ binding.editSelectorFriends.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+ @Override
+ public boolean onEditorAction(TextView textView, int actionId, KeyEvent event) {
+ if (actionId == EditorInfo.IME_ACTION_SEARCH) {
+ String search = textView.getEditableText().toString();
+ //搜索好友
+ List listSearchResult = searchName(search);
+ listSearch.clear();
+ listSearch.addAll(listSearchResult);
+ binding.layoutSearchlist.setVisibility(View.VISIBLE);
+ binding.layoutTeammemberlist.setVisibility(View.GONE);
+ searchAdapter.notifyDataSetChanged();
+ }
+ return false;
+ }
+ });
+ binding.editSelectorFriends.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+ }
+
+ @Override
+ public void afterTextChanged(Editable editable) {
+ if (TextUtils.isEmpty(editable.toString())) {
+ binding.icCleanEdit.setVisibility(View.GONE);
+ binding.layoutSearchlist.setVisibility(View.GONE);
+ binding.layoutTeammemberlist.setVisibility(View.VISIBLE);
+ listSearch.clear();
+ searchAdapter.notifyDataSetChanged();
+ } else {
+ binding.icCleanEdit.setVisibility(View.VISIBLE);
+ }
+ }
+ });
+ binding.icCleanEdit.setOnClickListener(view -> binding.editSelectorFriends.setText(""));
+
+ initRecyclerView();
+
+
+ }
+
+ public List searchName(String key) {
+ List listSearch = new ArrayList<>();
+ List result = new ArrayList<>();
+ result.addAll(listMembers);
+ for (UserInfo userInfo : result) {
+ String name = getAlias(userInfo);
+ if (name.contains(key)) {
+ listSearch.add(userInfo);
+ }
+ }
+ return listSearch;
+ }
+
+
+ public String getAlias(UserInfo userInfo) {
+ String name = userInfo.getName();
+ if (ContactRepo.isFriend(userInfo.getAccount())) {
+ String alias = ContactRepo.getFriend(userInfo.getAccount()).getAlias();
+ return TextUtils.isEmpty(alias) ? name : alias;
+ }
+ return name;
+ }
+
+
+ public void addManager(List accountList) {
+ NIMClient.getService(TeamService.class).addManagers(teamId, accountList).setCallback(new RequestCallback>() {
+ @Override
+ public void onSuccess(List members) {
+ // 撤销群管理员成功
+ ToastX.showShortToast(getString(R.string.str_teammanager_add_succ_toast));
+ Intent intent = new Intent();
+ intent.putExtra("managerlist", (Serializable) selectorPosition);
+ setResult(RESULT_OK, intent);
+ finish();
+
+ }
+
+ @Override
+ public void onFailed(int code) {
+ // 撤销群管理员失败
+ ToastX.showShortToast(getString(R.string.str_teammanager_delete_error));
+
+ }
+
+ @Override
+ public void onException(Throwable exception) {
+ // 错误
+ ToastX.showShortToast(getString(R.string.str_teammanager_delete_error));
+ }
+ });
+ }
+
+ public void initRecyclerView() {
+ LinearLayoutManager layoutManager =
+ new LinearLayoutManager(this, RecyclerView.HORIZONTAL, false);
+ rvSelected.setLayoutManager(layoutManager);
+ selectedAdapter = new CommonAdapter<>(this, com.netease.yunxin.kit.contactkit.ui.R.layout.fun_friend_selected_view_holder, selectorPosition) {
+
+ @Override
+ public void convert(ViewHolder holder, UserInfo user, int index) {
+ ContactAvatarView contactAvatarView = holder.getView(com.netease.yunxin.kit.contactkit.ui.R.id.avatar_view);
+ TextView tvName = holder.getView(com.netease.yunxin.kit.contactkit.ui.R.id.tv_name);
+ String name = user.getName();
+ if (ContactRepo.isFriend(user.getAccount())) {
+ String alias = ContactRepo.getFriend(user.getAccount()).getAlias();
+ if (!TextUtils.isEmpty(alias)) {
+ name = alias;
+ }
+ }
+ tvName.setText(name);
+ if (TextUtils.isEmpty(user.getAvatar())) {
+ contactAvatarView.setData(R.mipmap.default_head_img, user.getName(), 0);
+ } else {
+ contactAvatarView.setData(user.getAvatar(), user.getName());
+ }
+ holder.getView(com.netease.yunxin.kit.contactkit.ui.R.id.root_view).setOnClickListener(v -> {
+ selectorPosition.remove(selectorPosition.indexOf(user));
+ notifyDataSetChanged();
+ allMemberAdapter.notifyDataSetChanged();
+ searchAdapter.notifyDataSetChanged();
+ updateTitleView();
+ });
+ }
+ };
+ rvSelected.setAdapter(selectedAdapter);
+
+
+ allTeamContactView.setLayoutManager(new LinearLayoutManager(this));
+ allMemberAdapter = new CommonAdapter<>(this, R.layout.item_team_members_selector, listMembers) {
+
+ @Override
+ public void convert(ViewHolder holder, UserInfo user, int index) {
+ ContactAvatarView contactAvatarView = holder.getView(R.id.avatar_view);
+ TextView tvName = holder.getView(R.id.tv_name);
+ AppCompatRadioButton radioButton = holder.getView(R.id.rb_selector);
+ String name = user.getName();
+ if (ContactRepo.isFriend(user.getAccount())) {
+ String alias = ContactRepo.getFriend(user.getAccount()).getAlias();
+ if (!TextUtils.isEmpty(alias)) {
+ name = alias;
+ }
+ }
+
+ tvName.setText(name);
+ if (TextUtils.isEmpty(user.getAvatar())) {
+ contactAvatarView.setData(R.mipmap.default_head_img, user.getName(), 0);
+ } else {
+ contactAvatarView.setData(user.getAvatar(), user.getName());
+ }
+ contactAvatarView.setOnClickListener(v -> {
+ startUserInfoActivity(user);
+ });
+ radioButton.setChecked(isSelector(user));
+ holder.getView(R.id.root_view).setOnClickListener(v -> {
+ if (!radioButton.isChecked() && selectorPosition.size() == hasAdd) {
+ ToastX.showShortToast(getResources().getString(R.string.str_teammanager_add_faile_toast));
+ return;
+ }
+ radioButton.setChecked(!radioButton.isChecked());
+ if (radioButton.isChecked()) {
+ selectorPosition.add(user);
+ } else {
+ selectorPosition.remove(selectorPosition.indexOf(user));
+ }
+ selectedAdapter.notifyDataSetChanged();
+ updateTitleView();
+ });
+ }
+ };
+ allTeamContactView.setAdapter(allMemberAdapter);
+
+
+ searchContactView.setLayoutManager(new LinearLayoutManager(this));
+ searchAdapter = new CommonAdapter<>(this, R.layout.item_team_members_selector, listSearch) {
+
+ @Override
+ public void convert(ViewHolder holder, UserInfo user, int index) {
+ ContactAvatarView contactAvatarView = holder.getView(R.id.avatar_view);
+ TextView tvName = holder.getView(R.id.tv_name);
+ AppCompatRadioButton radioButton = holder.getView(R.id.rb_selector);
+ String name = user.getName();
+ if (ContactRepo.isFriend(user.getAccount())) {
+ String alias = ContactRepo.getFriend(user.getAccount()).getAlias();
+ if (!TextUtils.isEmpty(alias)) {
+ name = alias;
+ }
+ }
+
+ tvName.setText(name);
+ if (TextUtils.isEmpty(user.getAvatar())) {
+ contactAvatarView.setData(R.mipmap.default_head_img, user.getName(), 0);
+ } else {
+ contactAvatarView.setData(user.getAvatar(), user.getName());
+ }
+ contactAvatarView.setOnClickListener(v -> {
+ startUserInfoActivity(user);
+ });
+ radioButton.setChecked(isSelector(user));
+ holder.getView(R.id.root_view).setOnClickListener(v -> {
+ if (!radioButton.isChecked() && selectorPosition.size() == hasAdd) {
+ ToastX.showShortToast(getResources().getString(R.string.str_teammanager_add_faile_toast));
+ return;
+ }
+ radioButton.setChecked(!radioButton.isChecked());
+ if (radioButton.isChecked()) {
+ selectorPosition.add(user);
+ } else {
+ selectorPosition.remove(selectorPosition.indexOf(user));
+ }
+ searchAdapter.notifyDataSetChanged();
+ selectedAdapter.notifyDataSetChanged();
+ allMemberAdapter.notifyDataSetChanged();
+ updateTitleView();
+ });
+ }
+ };
+ searchContactView.setAdapter(searchAdapter);
+
+
+ }
+
+ private void startUserInfoActivity(UserInfo user) {
+ XKitRouter.withKey(RouterConstant.PATH_USER_INFO_PAGE)
+ .withContext(TeamAddManagerActivity.this)
+ .withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, IMKitClient.account())
+ .withParam("userId", user.getAccount())
+ .withParam("isGroup", true)
+ .navigate();
+ }
+
+ protected void updateTitleView() {
+ binding.title.setActionText(String.format(getString(R.string.str_teammanager_title_right), selectorPosition.size()));
+ }
+
+ protected boolean isSelector(UserInfo index) {
+ for (UserInfo userInfo : selectorPosition) {
+ if (index == userInfo) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/app/src/main/java/com/dskj/rbchat/imkit/team/TeamManagerActivity.java b/app/src/main/java/com/dskj/rbchat/imkit/team/TeamManagerActivity.java
new file mode 100644
index 0000000..d15b32d
--- /dev/null
+++ b/app/src/main/java/com/dskj/rbchat/imkit/team/TeamManagerActivity.java
@@ -0,0 +1,291 @@
+// Copyright (c) 2022 NetEase, Inc. All rights reserved.
+// Use of this source code is governed by a MIT license that can be
+// found in the LICENSE file.
+
+package com.dskj.rbchat.imkit.team;
+
+import static com.netease.yunxin.kit.corekit.im.utils.RouterConstant.KEY_TEAM_ID;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Typeface;
+import android.os.Bundle;
+import android.os.Handler;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.util.TypedValue;
+import android.view.View;
+import android.view.WindowManager;
+import android.view.inputmethod.EditorInfo;
+import android.widget.TextView;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.dskj.rbchat.R;
+import com.dskj.rbchat.adapter.CommonAdapter;
+import com.dskj.rbchat.adapter.ViewHolder;
+import com.dskj.rbchat.base.LllChatBaseActivity;
+import com.dskj.rbchat.databinding.ActivityTeamManagerBinding;
+import com.dskj.rbchat.databinding.ActivityTeamMembersBinding;
+import com.dskj.rbchat.dialog.ActionConfirmDialog;
+import com.dskj.rbchat.imkit.team.adapter.TeamMembersAdapter;
+import com.dskj.rbchat.network.Api;
+import com.dskj.rbchat.network.BaseObserver;
+import com.dskj.rbchat.network.Result;
+import com.dskj.rbchat.utils.LogUtils;
+import com.netease.nimlib.sdk.NIMClient;
+import com.netease.nimlib.sdk.RequestCallback;
+import com.netease.nimlib.sdk.team.TeamService;
+import com.netease.nimlib.sdk.team.constant.TeamMemberType;
+import com.netease.nimlib.sdk.team.model.TeamMember;
+import com.netease.yunxin.kit.chatkit.model.UserInfoWithTeam;
+import com.netease.yunxin.kit.chatkit.repo.ContactRepo;
+import com.netease.yunxin.kit.common.ui.activities.BaseActivity;
+import com.netease.yunxin.kit.common.ui.utils.ToastX;
+import com.netease.yunxin.kit.common.ui.widgets.ContactAvatarView;
+import com.netease.yunxin.kit.common.utils.NetworkUtils;
+import com.netease.yunxin.kit.contactkit.ui.model.ContactFriendBean;
+import com.netease.yunxin.kit.corekit.im.IMKitClient;
+import com.netease.yunxin.kit.corekit.im.model.UserInfo;
+import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;
+import com.netease.yunxin.kit.corekit.route.XKitRouter;
+import com.netease.yunxin.kit.teamkit.ui.utils.viewmodel.TeamSettingViewModel;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * 群管理员 (获取群成员,找出管理员)
+ */
+public class TeamManagerActivity extends LllChatBaseActivity {
+
+ public final TeamSettingViewModel teammodel = new TeamSettingViewModel();
+ private String teamId;
+ private String avaterurl;
+
+// public static void launch(Context context, String teamId, @NonNull ActivityResultLauncher launcher) {
+// Intent intent = new Intent(context, TeamManagerActivity.class);
+// intent.putExtra(KEY_TEAM_ID, teamId);
+// launcher.launch(intent);
+// }
+
+
+ ActivityTeamManagerBinding binding;
+ private List listManager = new ArrayList<>();
+ private List listTeamMembers = new ArrayList<>();
+ private CommonAdapter managerAdapter;
+ private ActivityResultLauncher launcher;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ binding = ActivityTeamManagerBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+ teamId = getIntent().getStringExtra(KEY_TEAM_ID);
+ launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
+ if (result.getResultCode() == Activity.RESULT_OK) {
+ List managers = (List) result.getData().getSerializableExtra("managerlist"); //选了管理员,更新普通用户列表 更新当前管理员列表
+ listManager.addAll(managers);
+ updateManagerTextView();
+ binding.title.getRightTextView().setText(String.format(getString(R.string.str_teammanager_title_right), listManager.size()));
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ for (UserInfo userInfoWithTeam : listManager) {
+ for (int i = 0; i < listTeamMembers.size(); i++) {
+ if (userInfoWithTeam.getAccount().equals(listTeamMembers.get(i).getAccount())) {
+ listTeamMembers.remove(i);
+ }
+ }
+ }
+ }
+ }).start();
+ }
+ });
+ if (NetworkUtils.isConnected()) {
+ showLoading();
+ //重新获取群成员
+ teammodel.getUserInfoData().observe(this, listResultInfo -> {
+ if (listResultInfo.getSuccess()) {
+ listManager.clear();
+ listTeamMembers.clear();
+ List listmember = listResultInfo.getValue();
+ setDataView(listmember);
+ dismissLoading();
+ }
+ });
+ teammodel.requestTeamMembers(teamId);
+ }
+ UserInfo userInfo = IMKitClient.getUserInfo();
+ avaterurl = userInfo.getAvatar();
+ if (TextUtils.isEmpty(avaterurl)) {
+ binding.avatarView.setData(R.mipmap.default_head_img, userInfo.getName(), 0);
+ } else {
+ binding.avatarView.setData(avaterurl, userInfo.getName());
+ }
+ binding.avatarView.setOnClickListener(v -> {
+ startUserInfoActivity(userInfo.getAccount());
+ });
+ binding.tvName.setText(userInfo.getName() + "");
+ binding.title.setOnBackIconClickListener(view -> finish());
+ binding.title.getTitleTextView().setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
+ binding.title.setActionTextColor(getResources().getColor(com.netease.yunxin.kit.contactkit.ui.R.color.color_6877fe));
+ binding.title.setActionListener(v -> {
+ if (listManager.size() < 5) {
+ //添加管理員
+ TeamAddManagerActivity.launch(this, teamId, listTeamMembers, 5 - listManager.size(), launcher);
+ } else {
+ ToastX.showShortToast(R.string.str_teammanager_add_faile_toast);
+ }
+
+
+ });
+
+ binding.recyclerviewManager.setLayoutManager(new LinearLayoutManager(this));
+ managerAdapter = new CommonAdapter<>(this, R.layout.item_team_manager, listManager) {
+
+ @Override
+ public void convert(ViewHolder holder, UserInfo user, int index) {
+ ContactAvatarView contactAvatarView = holder.getView(R.id.item_avatar);
+ TextView tvName = holder.getView(R.id.item_username);
+ View line = holder.getView(R.id.item_line);
+ String name = user.getName();
+ if (ContactRepo.isFriend(user.getAccount())) {
+ String alias = ContactRepo.getFriend(user.getAccount()).getAlias();
+ if (!TextUtils.isEmpty(alias)) {
+ name = alias;
+ }
+ }
+ tvName.setText(name);
+ if (TextUtils.isEmpty(user.getAvatar())) {
+ contactAvatarView.setData(R.mipmap.default_head_img, user.getName(), 0);
+ } else {
+ contactAvatarView.setData(user.getAvatar(), user.getName());
+ }
+ contactAvatarView.setOnClickListener(v -> {
+ startUserInfoActivity(user.getAccount());
+ });
+ line.setVisibility(View.VISIBLE);
+ if (index == listManager.size() - 1) {
+ line.setVisibility(View.GONE);
+ }
+ holder.getView(R.id.iv_delete).setOnClickListener(v -> {
+ showDeleteDialog(index, user.getName(), user.getAccount());
+ });
+ }
+ };
+ binding.recyclerviewManager.setAdapter(managerAdapter);
+
+ }
+
+ public void showDeleteDialog(int position, String name, String account) {
+ ActionConfirmDialog actionConfirmDialog = new ActionConfirmDialog(this, String.format(getString(R.string.str_teammanager_dialog_title), name),
+ getString(R.string.str_teammanager_dialog_cancel),
+ getString(com.netease.yunxin.kit.chatkit.ui.R.string.chat_dialog_sure));
+ actionConfirmDialog.setOnToActionListener(new ActionConfirmDialog.OnToActionListener() {
+ @Override
+ public void toSumbit() {
+ List listaccount = new ArrayList<>();
+ listaccount.add(account);
+ removeManager(position, listaccount);
+ }
+
+ @Override
+ public void toCancel() {
+ }
+ });
+ actionConfirmDialog.show();
+ }
+
+
+ public void removeManager(int position, List accountList) {
+ NIMClient.getService(TeamService.class).removeManagers(teamId, accountList).setCallback(new RequestCallback>() {
+ @Override
+ public void onSuccess(List members) {
+ // 撤销群管理员成功
+ ToastX.showShortToast(getString(R.string.str_teammanager_delete_succ));
+ listTeamMembers.add(0, listManager.get(position));
+ listManager.remove(position);
+ updateManagerTextView();
+
+ }
+
+ @Override
+ public void onFailed(int code) {
+ // 撤销群管理员失败
+ ToastX.showShortToast(getString(R.string.str_teammanager_delete_error));
+
+ }
+
+ @Override
+ public void onException(Throwable exception) {
+ // 错误
+ ToastX.showShortToast(getString(R.string.str_teammanager_delete_error));
+ }
+ });
+ }
+
+ //设置展示View
+ public void setDataView(List listmember) {
+ for (UserInfoWithTeam userInfoWithTeam :
+ listmember) {
+ TeamMemberType type = userInfoWithTeam.getTeamInfo().getType();
+ if (type == TeamMemberType.Manager) {
+ listManager.add(userInfoWithTeam.getUserInfo());
+ } else if (type == TeamMemberType.Normal) {
+ listTeamMembers.add(userInfoWithTeam.getUserInfo());
+ }
+
+ }
+ updateManagerTextView();
+ }
+
+ public void updateManagerTextView() {
+ if (listManager.size() > 0) {
+ binding.layoutManagerempty.setVisibility(View.GONE);
+ binding.recyclerviewManager.setVisibility(View.VISIBLE);
+ binding.tvTitlemanager.setText(getString(R.string.teamsetting_other_teammanager) + " (" + listManager.size() + "/5" + ")");
+ } else {
+ binding.tvTitlemanager.setText(getString(R.string.teamsetting_other_teammanager));
+ binding.layoutManagerempty.setVisibility(View.VISIBLE);
+ binding.recyclerviewManager.setVisibility(View.GONE);
+ }
+ binding.title.getRightTextView().setText(String.format(getString(R.string.str_teammanager_title_right), listManager.size()));
+ managerAdapter.setDates(listManager);
+ }
+
+ @Override
+ public int initNavigationBarColor() {
+ return getColor(R.color.color_fffafa);
+ }
+
+ @Override
+ public int initStatusBarColor() {
+ return getColor(R.color.color_titlebar);
+ }
+
+
+ public void startUserInfoActivity(String userid) {
+ XKitRouter.withKey(RouterConstant.PATH_USER_INFO_PAGE)
+ .withContext(TeamManagerActivity.this)
+ .withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, IMKitClient.account())
+ .withParam("userId", userid)
+ .withParam("isGroup", true)
+ .navigate();
+ }
+
+
+}
diff --git a/app/src/main/java/com/dskj/rbchat/imkit/team/TeamMembersListActivity.java b/app/src/main/java/com/dskj/rbchat/imkit/team/TeamMembersListActivity.java
index 207875f..cda58f8 100644
--- a/app/src/main/java/com/dskj/rbchat/imkit/team/TeamMembersListActivity.java
+++ b/app/src/main/java/com/dskj/rbchat/imkit/team/TeamMembersListActivity.java
@@ -4,10 +4,7 @@
package com.dskj.rbchat.imkit.team;
-import static com.dskj.rbchat.utils.GsonUtils.gson;
import static com.netease.yunxin.kit.corekit.im.utils.RouterConstant.KEY_TEAM_ID;
-import static com.netease.yunxin.kit.corekit.im.utils.RouterConstant.KEY_TEAM_NAME;
-import static com.netease.yunxin.kit.teamkit.ui.utils.NetworkUtilsWrapper.handleNetworkBrokenResult;
import android.content.Context;
import android.content.Intent;
@@ -24,68 +21,32 @@ import android.view.inputmethod.EditorInfo;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.dskj.rbchat.R;
-import com.dskj.rbchat.base.LllChatBaseActivity;
import com.dskj.rbchat.databinding.ActivityTeamMembersBinding;
import com.dskj.rbchat.dialog.ActionConfirmDialog;
import com.dskj.rbchat.imkit.team.adapter.TeamMembersAdapter;
-import com.dskj.rbchat.model.AdBean;
-import com.dskj.rbchat.model.UsersExistBean;
import com.dskj.rbchat.network.Api;
import com.dskj.rbchat.network.BaseObserver;
import com.dskj.rbchat.network.Result;
import com.dskj.rbchat.utils.GsonUtils;
import com.dskj.rbchat.utils.LogUtils;
-import com.dskj.rbchat.utils.ShareDateUtils;
-import com.google.gson.Gson;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-import com.google.gson.reflect.TypeToken;
-import com.netease.nimlib.sdk.msg.model.IMMessage;
-import com.netease.nimlib.sdk.team.constant.TeamMemberType;
-import com.netease.nimlib.sdk.team.constant.TeamMessageNotifyTypeEnum;
import com.netease.nimlib.sdk.team.model.Team;
-import com.netease.nimlib.sdk.team.model.TeamMember;
-import com.netease.yunxin.kit.alog.ALog;
-import com.netease.yunxin.kit.chatkit.model.ConversationInfo;
-import com.netease.yunxin.kit.chatkit.model.TeamWithCurrentMember;
import com.netease.yunxin.kit.chatkit.model.UserInfoWithTeam;
import com.netease.yunxin.kit.chatkit.repo.ContactRepo;
-import com.netease.yunxin.kit.chatkit.ui.page.LocationPageActivity;
-import com.netease.yunxin.kit.chatkit.ui.page.viewmodel.ChatBaseViewModel;
-import com.netease.yunxin.kit.chatkit.ui.page.viewmodel.ChatTeamViewModel;
+import com.netease.yunxin.kit.chatkit.ui.model.TeamExtensionBean;
import com.netease.yunxin.kit.common.ui.utils.ToastX;
-import com.netease.yunxin.kit.common.ui.viewmodel.LoadStatus;
import com.netease.yunxin.kit.common.utils.NetworkUtils;
-import com.netease.yunxin.kit.contactkit.ui.contact.ContactViewModel;
-import com.netease.yunxin.kit.contactkit.ui.fun.selector.FunContactMembersAdapter;
-import com.netease.yunxin.kit.contactkit.ui.fun.selector.FunContactSelectorDialog;
import com.netease.yunxin.kit.contactkit.ui.model.ContactFriendBean;
-import com.netease.yunxin.kit.contactkit.ui.search.SearchViewModel;
-import com.netease.yunxin.kit.conversationkit.ui.model.ConversationBean;
-import com.netease.yunxin.kit.conversationkit.ui.page.viewmodel.ConversationViewModel;
import com.netease.yunxin.kit.corekit.im.IMKitClient;
-import com.netease.yunxin.kit.corekit.im.model.FriendInfo;
import com.netease.yunxin.kit.corekit.im.model.UserInfo;
import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;
-import com.netease.yunxin.kit.corekit.model.ResultInfo;
import com.netease.yunxin.kit.corekit.route.XKitRouter;
-import com.netease.yunxin.kit.teamkit.ui.normal.adapter.TeamMemberListAdapter;
-import com.netease.yunxin.kit.teamkit.ui.utils.viewmodel.TeamSettingViewModel;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
import java.io.Serializable;
import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -100,6 +61,7 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
public static final String ISMANAGER = "isManager";
public static final String LISTUSERINFOS = "listUserInfos";
+ public static final String TEAMINFO = "teamInfo";
public static final String TYPE = "type";
public static final String QUITE = "quite";
public static final String TEAMQR = "teamQr";
@@ -108,14 +70,16 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
public boolean isRefresh = false; //是否刷新设置页
public boolean teamQr = true;
public List listSearch = new ArrayList<>();
+ public int isAllowAdd = 1;
- public static void launch(Context context, boolean isManager, boolean isShowTeamQR, String teamId, List userInfos, @NonNull ActivityResultLauncher launcher) {
+ public static void launch(Context context, int isManager, boolean isShowTeamQR, String teamId, List userInfos, Team team, @NonNull ActivityResultLauncher launcher) {
Intent intent = new Intent(context, TeamMembersListActivity.class);
intent.putExtra(ISMANAGER, isManager);
intent.putExtra(TYPE, 0);
intent.putExtra(TEAMQR, isShowTeamQR);
intent.putExtra(KEY_TEAM_ID, teamId);
intent.putExtra(LISTUSERINFOS, (Serializable) userInfos);
+ intent.putExtra(TEAMINFO, (Serializable) team);
launcher.launch(intent);
}
@@ -130,21 +94,37 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
ActivityTeamMembersBinding binding;
- private boolean isManager;
+ private int isManager = 0; // 1 群主 2 管理员
+ private Team teamInfo;
+ private String teamOwnerId; //群主id;
private TeamMembersAdapter membersAdapter;
+ private TeamExtensionBean extensionBean;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().setNavigationBarColor(getResources().getColor(com.netease.yunxin.kit.chatkit.ui.R.color.color_white));
- isManager = getIntent().getBooleanExtra(ISMANAGER, false);
+ isManager = getIntent().getIntExtra(ISMANAGER, 0);
+ teamInfo = (Team) getIntent().getSerializableExtra(TEAMINFO);
type = getIntent().getIntExtra(TYPE, 0);
quite = getIntent().getIntExtra(QUITE, 0);
List list = (List) getIntent().getSerializableExtra(LISTUSERINFOS);
teamQr = getIntent().getBooleanExtra(TEAMQR, true);
+ if (teamInfo != null) {
+ teamOwnerId = teamInfo.getCreator();
+ if (!TextUtils.isEmpty(teamInfo.getExtension())) {
+ extensionBean = GsonUtils.getObjFromJSON(teamInfo.getExtension(), TeamExtensionBean.class);
+ if (extensionBean == null) {
+ extensionBean = new TeamExtensionBean(Integer.parseInt(teamInfo.getExtension()), 1);
+ }
+ } else {
+ extensionBean = new TeamExtensionBean(1, 1);
+ }
+ isAllowAdd = extensionBean.getAllowAddFriends();
+ }
if (list != null && list.size() > 0) {
listmemebers.clear();
listmemebers.addAll(list);
@@ -173,6 +153,22 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
}
initView();
initData();
+
+// teammodel.getTeamWithMemberData().observe(this, teamResultInfo -> {
+// if (teamResultInfo.getValue() == null || !teamResultInfo.getSuccess()) {
+// return;
+// }
+// Team teaminfo = teamResultInfo.getValue().getTeam();
+// String extension = teaminfo.getExtension();
+// if (!TextUtils.isEmpty(extension)) {
+// TeamExtensionBean extensionBean = GsonUtils.getObjFromJSON(extension, TeamExtensionBean.class);
+// if (extensionBean != null) {
+// isAllowAdd = extensionBean.getAllowAddFriends();
+// }
+//
+// }
+// });
+// teammodel.requestTeamData(teamId);
}
@@ -186,7 +182,7 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
Map memberMap;
public void getTeamActiveTime() {
- if (isManager && type == 0) {
+ if (isManager != 0 && type == 0) {
Api.getInstance().teamMemberActiveTime(teamId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@@ -198,7 +194,7 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
listmemebers.remove(0);
listmemebers = sortListByActivieTime(listmemebers);
listmemebers.add(0, IMKitClient.getUserInfo());
- membersAdapter.setData(listmemebers, true, memberMap);
+ membersAdapter.setData(listmemebers, true, memberMap, teamId);
}
@@ -240,7 +236,7 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
public void setData() {
if (type == 0) {
listmemebers.add(0, IMKitClient.getUserInfo());
- membersAdapter.setData(listmemebers, true, memberMap);
+ membersAdapter.setData(listmemebers, true, memberMap, teamId);
binding.tvteammembers.setText(getString(com.netease.yunxin.kit.contactkit.ui.R.string.fun_creategroup_members, listmemebers.size() - 1));
} else { //不能编辑 转让
// UserInfo info = IMKitClient.getUserInfo();
@@ -256,7 +252,7 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
binding.tvteammembers.setText(getString(com.netease.yunxin.kit.contactkit.ui.R.string.fun_creategroup_members, listmemebers.size()));
membersAdapter.setEdit(false);
- membersAdapter.setData(listmemebers, false, memberMap);
+ membersAdapter.setData(listmemebers, false, memberMap, teamId);
}
binding.rvMembers.setAdapter(membersAdapter);
}
@@ -273,7 +269,7 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
@Override
public void onItemClick(UserInfo item, int position) {
//查看成员详情 普通用户点击头像
- startUserInfoActivity(item.getAccount());
+ startUserInfoActivity(item.getAccount(), teamId);
// deletePosition = position;
// if (!item.getAccount().equals(IMKitClient.account()) && membersAdapter.isEdit()) {
// if (type == 0) {
@@ -339,11 +335,18 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
binding.icCleanEdit.setOnClickListener(view -> binding.editSelectorFriends.setText(""));
}
- public void startUserInfoActivity(String userid) {
+ public void startUserInfoActivity(String userid, String teamId) {
+ //如果群不允许群内添加好友 当前登录用户不是群主,以及userid 也不是群主 直接跳过
+ if (isAllowAdd == 0 && isManager != 1 && !userid.equals(teamOwnerId)) {
+ return;
+ }
+
XKitRouter.withKey(RouterConstant.PATH_USER_INFO_PAGE)
.withContext(TeamMembersListActivity.this)
.withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, IMKitClient.account())
.withParam("userId", userid)
+ .withParam("teamId", teamId)
+ .withParam("isGroup", true)
.navigate();
}
@@ -419,7 +422,7 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
selectorlist.add(userinfo.getUserInfo().getAccount());
listmemebers.add(userinfo.getUserInfo());
}
- membersAdapter.setData(listmemebers, true, memberMap);
+ membersAdapter.setData(listmemebers, true, memberMap, teamId);
isRefresh = true;
binding.tvteammembers.setText(getString(com.netease.yunxin.kit.contactkit.ui.R.string.fun_creategroup_members, listmemebers.size() - 1));
}
@@ -448,7 +451,7 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
private void initTitleView() {
if (type == 0) { //右上角编辑,删除
binding.title.setTitle(R.string.teamsetting_members);
- if (isManager) {
+ if (isManager != 0) {
setTitleAction(R.string.teammember_edit, new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -538,7 +541,7 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
binding.title.setActionText(actionText);
membersAdapter.setEdit(!isEdit);
membersAdapter.getSelectedInt().clear();
- membersAdapter.setData(listmember, isEdit, memberMap);
+ membersAdapter.setData(listmember, isEdit, memberMap, teamId);
}
public void showConfirmDialog(boolean isDelete, String title, List account) {
diff --git a/app/src/main/java/com/dskj/rbchat/imkit/team/TeamOtherSettingActivity.java b/app/src/main/java/com/dskj/rbchat/imkit/team/TeamOtherSettingActivity.java
index 35516af..f38bcb3 100644
--- a/app/src/main/java/com/dskj/rbchat/imkit/team/TeamOtherSettingActivity.java
+++ b/app/src/main/java/com/dskj/rbchat/imkit/team/TeamOtherSettingActivity.java
@@ -26,6 +26,7 @@ import com.dskj.rbchat.R;
import com.dskj.rbchat.dialog.ActionConfirmDialog;
import com.dskj.rbchat.imkit.base.BaseSettingOtherActivity;
import com.dskj.rbchat.model.TeamUpdateEvent;
+import com.dskj.rbchat.utils.GsonUtils;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.msg.MsgService;
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
@@ -33,8 +34,10 @@ import com.netease.nimlib.sdk.team.constant.TeamBeInviteModeEnum;
import com.netease.nimlib.sdk.team.constant.TeamFieldEnum;
import com.netease.nimlib.sdk.team.model.Team;
import com.netease.yunxin.kit.chatkit.model.UserInfoWithTeam;
+import com.netease.yunxin.kit.chatkit.ui.model.TeamExtensionBean;
import com.netease.yunxin.kit.corekit.event.EventCenter;
import com.netease.yunxin.kit.corekit.im.model.UserInfo;
+import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;
import com.netease.yunxin.kit.teamkit.ui.utils.viewmodel.TeamSettingViewModel;
import java.io.Serializable;
@@ -57,6 +60,7 @@ public class TeamOtherSettingActivity extends BaseSettingOtherActivity {
private ActivityResultLauncher launcher;
public List listmemebers = new ArrayList<>();
private boolean updateIcon = false;
+ private TeamExtensionBean extensionBean;
public static void launch(Context context, Team teaminfo, @NonNull ActivityResultLauncher launcher) {
Intent intent = new Intent(context, TeamOtherSettingActivity.class);
@@ -165,16 +169,24 @@ public class TeamOtherSettingActivity extends BaseSettingOtherActivity {
team, launcher
);
});
- String extension = team.getExtension();
+ String extension = team.getExtension(); //扩展字段
if (!TextUtils.isEmpty(extension)) {
- binding.swichTeamqr.setChecked(team.getExtension().equals("1"));
+ extensionBean = GsonUtils.getObjFromJSON(extension, TeamExtensionBean.class);
+ if (extensionBean == null) {
+ extensionBean = new TeamExtensionBean(Integer.parseInt(extension), 1);
+ }
+ binding.swichTeamqr.setChecked(extensionBean.getShowQrCode() == 1);
+ } else {
+ extensionBean = new TeamExtensionBean(1, 1);
}
- int value = team.getVerifyType().getValue();
binding.swichAddtype.setChecked(team.getTeamBeInviteMode().getValue() == 1);
+ binding.tvTeamallowaddfriends.setText(extensionBean.getAllowAddFriends() == 1 ? getString(R.string.teamsetting_other_teamallow) : getString(R.string.teamsetting_other_teamallow_not));
Map map = new HashMap<>();
binding.swichTeamqr.setOnClickListener(view -> {
//onclick check 变更
- map.put(TeamFieldEnum.Extension, binding.swichTeamqr.isChecked() ? "1" : "0");
+// map.put(TeamFieldEnum.Extension, binding.swichTeamqr.isChecked() ? "1" : "0");
+ extensionBean.setShowQrCode(binding.swichTeamqr.isChecked() ? 1 : 0);
+ map.put(TeamFieldEnum.Extension, GsonUtils.beanToJSONString(extensionBean));
teammodel.UpdateTeamFilesExtension(team.getId(), map);
});
@@ -182,6 +194,11 @@ public class TeamOtherSettingActivity extends BaseSettingOtherActivity {
map.put(TeamFieldEnum.BeInviteMode, binding.swichAddtype.isChecked() ? TeamBeInviteModeEnum.NoAuth : TeamBeInviteModeEnum.NeedAuth);
teammodel.UpdateTeamFilesExtension(team.getId(), map);
});
+ binding.flteammanager.setOnClickListener(v -> {
+ Intent intent = new Intent(this, TeamManagerActivity.class);
+ intent.putExtra(RouterConstant.KEY_TEAM_ID, team.getId());
+ startActivity(intent);
+ });
}
diff --git a/app/src/main/java/com/dskj/rbchat/imkit/team/TeamSettingActivity.java b/app/src/main/java/com/dskj/rbchat/imkit/team/TeamSettingActivity.java
index 3e28b4d..3d4671a 100644
--- a/app/src/main/java/com/dskj/rbchat/imkit/team/TeamSettingActivity.java
+++ b/app/src/main/java/com/dskj/rbchat/imkit/team/TeamSettingActivity.java
@@ -44,16 +44,13 @@ import com.netease.nimlib.sdk.team.model.TeamMember;
import com.netease.yunxin.kit.chatkit.model.IMMessageInfo;
import com.netease.yunxin.kit.chatkit.model.UserInfoWithTeam;
import com.netease.yunxin.kit.chatkit.ui.ChatKitUIConstant;
-import com.netease.yunxin.kit.chatkit.ui.common.ChatUtils;
import com.netease.yunxin.kit.chatkit.ui.model.CleanHistoryEvent;
+import com.netease.yunxin.kit.chatkit.ui.model.TeamExtensionBean;
import com.netease.yunxin.kit.corekit.event.EventCenter;
-import com.netease.yunxin.kit.corekit.im.model.UserInfo;
import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;
import com.netease.yunxin.kit.corekit.route.XKitRouter;
import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
import java.util.List;
/**
@@ -126,7 +123,14 @@ public class TeamSettingActivity extends BaseTeamQrSettingActivity {
}
);
binding.tvmember.setOnClickListener(view -> {
- TeamMembersListActivity.launch(this, teamMember.getType() == TeamMemberType.Owner, isTeamShow, teamId, listmemebers, launcher);
+ int manager = 0;
+ if (teamMember.getType() == TeamMemberType.Owner) {
+ manager = 1;
+ }
+ if (teamMember.getType() == TeamMemberType.Manager) {
+ manager = 2;
+ }
+ TeamMembersListActivity.launch(this, manager, isTeamShow, teamId, listmemebers, teamInfo, launcher);
});
binding.tvinvited.setOnClickListener(view -> showAddFriendsDialog(isTeamShow));
binding.tvexit.setOnClickListener(view -> setQuitTeam());
@@ -292,7 +296,6 @@ public class TeamSettingActivity extends BaseTeamQrSettingActivity {
});
-
teammodel.getQuitTeamData().observe(this, voidResultInfo -> {
if (voidResultInfo.getSuccess()) {
finish();
@@ -331,8 +334,7 @@ public class TeamSettingActivity extends BaseTeamQrSettingActivity {
}
-
-
+ TeamExtensionBean extensionBean;
protected void refreshUI(Team team) {
teamName = team.getName();
@@ -340,11 +342,21 @@ public class TeamSettingActivity extends BaseTeamQrSettingActivity {
binding.tvTitle.setText(String.format("%s(%d)", teamName, teamNumber));
setNotifyUI(teamInfo.getMessageNotifyType() == TeamMessageNotifyTypeEnum.All);
setSettingUI(teamMember.getType() == TeamMemberType.Owner);
- if (!TextUtils.isEmpty(teamInfo.getExtension()) && teamInfo.getExtension().equals("0")) {
- isTeamShow = false;
+ //为了兼容老版本
+ if (!TextUtils.isEmpty(teamInfo.getExtension())) {
+ extensionBean = GsonUtils.getObjFromJSON(teamInfo.getExtension(), TeamExtensionBean.class);
+ if (extensionBean == null) {
+ extensionBean = new TeamExtensionBean(Integer.parseInt(teamInfo.getExtension()), 1);
+ }
} else {
- isTeamShow = true;
+ extensionBean = new TeamExtensionBean(1, 1);
}
+ isTeamShow = (extensionBean.getShowQrCode() == 1);
+// if (!TextUtils.isEmpty(teamInfo.getExtension()) && teamInfo.getExtension().equals("0")) {
+// isTeamShow = false;
+// } else {
+// isTeamShow = true;
+// }
}
// public void setExtension() {
diff --git a/app/src/main/java/com/dskj/rbchat/imkit/team/adapter/TeamMembersAdapter.java b/app/src/main/java/com/dskj/rbchat/imkit/team/adapter/TeamMembersAdapter.java
index f823ccb..a28f44f 100644
--- a/app/src/main/java/com/dskj/rbchat/imkit/team/adapter/TeamMembersAdapter.java
+++ b/app/src/main/java/com/dskj/rbchat/imkit/team/adapter/TeamMembersAdapter.java
@@ -19,6 +19,10 @@ import androidx.viewbinding.ViewBinding;
import com.dskj.rbchat.R;
import com.dskj.rbchat.databinding.TeamMembersViewHolderBinding;
+import com.netease.nimlib.sdk.NIMClient;
+import com.netease.nimlib.sdk.team.TeamService;
+import com.netease.nimlib.sdk.team.constant.TeamMemberType;
+import com.netease.nimlib.sdk.team.model.TeamMember;
import com.netease.yunxin.kit.chatkit.repo.ContactRepo;
import com.netease.yunxin.kit.chatkit.ui.normal.factory.ChatVieHolderFactory;
import com.netease.yunxin.kit.common.ui.utils.AvatarColor;
@@ -47,6 +51,7 @@ public class TeamMembersAdapter extends RecyclerView.Adapter mapTime;
private List selectedInt = new ArrayList<>(); //多选position
+ private String teamId;
public TeamMembersAdapter(Context context, int type) {
members = new ArrayList<>();
@@ -60,12 +65,13 @@ public class TeamMembersAdapter extends RecyclerView.Adapter list, boolean isShow, Map mapActiveTime) {
+ public void setData(List list, boolean isShow, Map mapActiveTime, String teamId) {
members.clear();
members.addAll(list);
selectedInt.clear();
isShowInvited = isShow;
mapTime = mapActiveTime;
+ this.teamId = teamId;
notifyDataSetChanged();
}
@@ -125,14 +131,19 @@ public class TeamMembersAdapter extends RecyclerView.Adapter= 0) {
holder.binding.icDelete.setBackgroundResource(R.mipmap.dialog_gou_t);
} else {
holder.binding.icDelete.setBackgroundResource(R.mipmap.dialog_gou_ff);
}
- holder.binding.icDelete.setVisibility(userInfo.getAccount().equals(IMKitClient.account()) ? View.GONE : View.VISIBLE);
+// holder.binding.icDelete.setVisibility(userInfo.getAccount().equals(IMKitClient.account()) ? View.GONE : View.VISIBLE);
} else if (mType == 1) {
if (selectpostion >= 0 && position == selectpostion) {
@@ -182,7 +193,7 @@ public class TeamMembersAdapter extends RecyclerView.Adapter= 0) {
diff --git a/app/src/main/res/layout/activity_team_manager.xml b/app/src/main/res/layout/activity_team_manager.xml
new file mode 100644
index 0000000..aea7cad
--- /dev/null
+++ b/app/src/main/res/layout/activity_team_manager.xml
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_teamaddmanager.xml b/app/src/main/res/layout/activity_teamaddmanager.xml
new file mode 100644
index 0000000..2908de4
--- /dev/null
+++ b/app/src/main/res/layout/activity_teamaddmanager.xml
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_teamothersetting.xml b/app/src/main/res/layout/activity_teamothersetting.xml
index 52c7cc8..3ecd700 100644
--- a/app/src/main/res/layout/activity_teamothersetting.xml
+++ b/app/src/main/res/layout/activity_teamothersetting.xml
@@ -238,6 +238,40 @@
android:background="@color/color_f4f4f4" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_team_members_selector.xml b/app/src/main/res/layout/item_team_members_selector.xml
new file mode 100644
index 0000000..e13a692
--- /dev/null
+++ b/app/src/main/res/layout/item_team_members_selector.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/team_members_view_holder.xml b/app/src/main/res/layout/team_members_view_holder.xml
index 510533d..6633422 100644
--- a/app/src/main/res/layout/team_members_view_holder.xml
+++ b/app/src/main/res/layout/team_members_view_holder.xml
@@ -39,7 +39,6 @@
android:layout_marginEnd="@dimen/dp_15"
android:ellipsize="end"
android:maxLines="1"
- android:text="dfff"
android:textColor="@color/color_333333"
android:textSize="@dimen/text_size_16"
android:textStyle="bold"
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_teammanager_delete.png b/app/src/main/res/mipmap-xxxhdpi/ic_teammanager_delete.png
new file mode 100644
index 0000000..8ad3b3a
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_teammanager_delete.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_teammanager_empty.png b/app/src/main/res/mipmap-xxxhdpi/ic_teammanager_empty.png
new file mode 100644
index 0000000..4673823
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_teammanager_empty.png differ
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index b3a017f..77801a0 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -7,7 +7,7 @@
AIzaSyAAXviskUffLY3KfnrKVPlwcj5Ks5ces_8
- MM
+ 淘夢購
Netease CommsEase
Stable instant messaging service
@@ -44,7 +44,7 @@
[Video Call]
Favorites
- About MM
+ About 淘夢購
Settings
Version
introduce
@@ -322,7 +322,7 @@
Unsupported 2D code content!
Authorized login
淘樂町 store device login
- Apply to log in with your MM account
+ Apply to log in with your 淘夢購 account
Your avatar and nickname will be authorized for use
Allow
Reject
@@ -332,7 +332,7 @@
Clear
Are you sure you want to clear the Q&A history?
Smart Dream answer is being generated, please wait...
- 您好,我是MM團隊研發的智能認知模型,我的名字叫小夢,我可以和人類進行自然交流,解答問題,高效完成各領域的認知智能需求
+ 您好,我是淘夢購團隊研發的智能認知模型,我的名字叫小夢,我可以和人類進行自然交流,解答問題,高效完成各領域的認知智能需求
Hello, I am an intelligent cognitive model developed by TimeGo team. My name is Xiaomeng.
I can naturally communicate with humans, answer questions, and efficiently complete the cognitive intelligence needs in various fields
Hey there! I am your new friend Xiao Meng
@@ -347,7 +347,6 @@
You guys haven’t talked yet~
There is no chat record yet~
Gold coin balance has been deposited, click to view>
- Gift points balance has been credited, click to view>
Gold coins
Silver coins
Gift money
@@ -361,7 +360,6 @@
pc
Congratulations on getting rich and good luck
Put Cash into the red envelope
- Stuff gift points into the red envelope
Put gold coins into the red envelope
If not collected within 24 hours, the red envelope quantity will be returned
Click to select give away object
@@ -588,7 +586,11 @@
Automatically add members
Members are added to the group immediately after receiving the invitation. You can turn off this setting to allow only invited members to join the group.
Use the group link QR code to allow users to join this group
+ Allow adding friends within the group
+ Allow
+ Not Allow
Set avatar
+ Group Administrator
Clear chat history
Group Announcement
Enter group announcement content
@@ -827,7 +829,7 @@
Overtime unpaid
Payment timeout
residue %s
- WebMM
+ Web淘梦购
Gift cabinet redemption
Gift cabinet redemption-
Today Active
@@ -884,7 +886,7 @@
Move to Another Album
This album is set to only be viewable by friends. Please send a friend request to view.
Please select the question you want to inquire about:
- Questions about MM
+ Questions about Taomenggou
Questions about Taoleting
Questions about the Points Mall
Questions about Cooperative Merchants
@@ -904,5 +906,16 @@
%d Issue
Including service fee NT$ %d
Please select the number of installments
- Global Chat
+
+ Not set yet, go add it~
+ Only the group owner can set administrators;\nA maximum of 5 administrators can be set;\nGroup administrators can assist the group owner in managing the group chat, with functions such as removing group members and deleting chat messages.
+ I\'ll think about it
+ Are you sure to remove %s\'s group administrator role?
+ Removal failed
+ Removal successful
+ Add (%d)
+ Add Administrator
+ A maximum of 5 administrators can be set
+ Added successfully
+ Please select an administrator
\ No newline at end of file
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index f730500..3a2d631 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -7,7 +7,7 @@
AIzaSyAAXviskUffLY3KfnrKVPlwcj5Ks5ces_8
- MM
+ 淘夢購
網易雲信
真正穩定的IM 雲端服務
@@ -328,7 +328,7 @@
クリア
Q&A履歴をクリアしてもよろしいですか?
スマート ドリームの回答を生成中です。お待ちください...
- 您好,我是MM團隊研發的智能認知模型,我的名字叫小夢,我可以和人類進行自然交流,解答問題,高效完成各領域的認知智能需求
+ 您好,我是淘夢購團隊研發的智能認知模型,我的名字叫小夢,我可以和人類進行自然交流,解答問題,高效完成各領域的認知智能需求
Hello, I am an intelligent cognitive model developed by TimeGo team. My name is Xiaomeng.
I can naturally communicate with humans, answer questions, and efficiently complete the cognitive intelligence needs in various fields
ちょっと、そこ!私はあなたの新しい友達シャオ・メンです
@@ -344,7 +344,6 @@
まだ話していませんね~
まだチャット記録がありません~
金貨残高が入金されているので、をクリックして確認してください>
- ギフトポイント残高が入金されました。クリックして確認>
金貨
銀貨
贈り物のお金
@@ -358,7 +357,6 @@
パソコン
お金持ちになり、幸運を祈ります
赤い封筒に金貨を入れます
- ギフトポイントを赤い封筒に詰める
赤い封筒に金貨を詰める
未受領のお年玉は、24時間以内に返却されます
クリックして転送オブジェクトを選択します
@@ -587,7 +585,11 @@
メンバーに自動的に参加する
メンバーは、招待を受信するとすぐにグループに追加されます。 この設定をオフにして、招待されたメンバーのみがグループに参加できるようにすることができます。
グループ リンク QR コードを使用して、ユーザーがこのグループに参加できるようにします
+ グループ内で友達追加を許可しますか
+ 許可
+ 許可しない
アバターを設定する
+ グループ管理者
チャット履歴をクリア
グループのお知らせ
グループのお知らせ内容を入力してください
@@ -825,7 +827,7 @@
タイムアウト未払い
支払タイムアウト
余剰 %s
- ホームページ版MM
+ ホームページ版淘夢購
ギフトボックスの交換
ギフトボックスの交換-
今日アクティブ
@@ -882,7 +884,7 @@
他のアルバムに移動
このアルバムは友達のみ閲覧可能に設定されています。閲覧するには友達リクエストを送信してください。
お問い合わせの内容を選択してください:
- MMに関する質問
+ 淘夢購に関する質問
淘樂町に関する質問
ポイントモールに関する質問
協力業者に関する質問
@@ -902,5 +904,17 @@
%d期
サービス料込み NT$ %d
分割回数を選択してください
- 世界チャット
+
+ まだ設定されていません。追加してください~
+ グループオーナーのみが管理者を設定できます;\n最大で5人の管理者を設定できます;\nグループ管理者は、グループオーナーを補助してグループチャットを管理し、メンバーの削除やチャットメッセージの削除などの機能を持っています。
+ もう少し考えます
+ %s のグループ管理者権限を解除してもよろしいですか?
+ 削除に失敗しました
+ 削除が成功しました
+ 追加(%d)
+ 管理者を追加
+ 管理者は最大5人まで設定できます
+ 追加に成功しました
+ 管理者を選択してください
+
\ No newline at end of file
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index 3dfee5c..8a14db8 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -579,7 +579,11 @@
自动添加成员
成员在收到邀请后立即被添加至群。您可以关闭此设置仅仅允许接收邀请的成员加入群。
使用群链接 行动码让用户加入此群
+ 是否允许群内添加好友
+ 允许
+ 不允许
设置头像
+ 群管理员
清除聊天记录
群公告
输入群公告内容
@@ -893,4 +897,16 @@
%d期
含服务费NT$ %d
请选择分期数
+
+ 暂未设定,去添加~
+ 只有群主可设置管理员;\n最多可设置5个管理员;\n群管理员可协助群主管理群聊,拥有移除群成员和删除群聊消息等功能。
+ 我再想想
+ 确定移除 %s 群管理员身份?
+ 移除失敗
+ 移除成功
+ 添加(%d)
+ 添加管理员
+ 管理员最多可设置5个
+ 添加成功
+ 请选择管理员
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 2378d29..e2ab5a3 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -97,6 +97,8 @@
#6877FE
#FF4040
#FFECEC
+ #B8B5BE
+ #EBE8F1
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5e71279..0f7b119 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -580,7 +580,12 @@
自動加入成員
成員在收到邀請後立即被加入至群組。 您可以關閉此設定僅允許接收邀請的成員加入群組。
使用群組連結 行動碼讓使用者加入此群
+ 是否允許群內新增好友
+ 允許
+ 不允許
+
設定頭像
+ 群管理員
清除聊天記錄
群公告
輸入群公告內容
@@ -902,4 +907,16 @@
含服務費NT$ %d
請選擇分期數
+ 尚未設定,去新增~
+ 僅有群主可以設定管理員;\n最多可以設定 5 個管理員;\n群管理員可以協助群主管理群聊,擁有移除群成員和刪除群聊訊息等功能。
+ 我再想想
+ 確定移除 %s 群管理員身份?
+ 移除失敗
+ 移除成功
+ 新增(%d)
+ 新增管理員
+ 管理員最多可設置5個
+ 添加成功
+ 請選擇管理員
+
\ No newline at end of file
diff --git a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/custom/ChatBusinessViewHolder.java b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/custom/ChatBusinessViewHolder.java
index cb917f2..cefa0ee 100644
--- a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/custom/ChatBusinessViewHolder.java
+++ b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/custom/ChatBusinessViewHolder.java
@@ -16,7 +16,11 @@ import androidx.annotation.NonNull;
import com.bumptech.glide.Glide;
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.team.TeamService;
+import com.netease.nimlib.sdk.team.model.Team;
import com.netease.yunxin.kit.chatkit.ui.R;
import com.netease.yunxin.kit.chatkit.ui.common.GsonUtils;
import com.netease.yunxin.kit.chatkit.ui.common.MessageHelper;
@@ -26,6 +30,7 @@ import com.netease.yunxin.kit.chatkit.ui.fun.view.message.viewholder.FunChatBase
import com.netease.yunxin.kit.chatkit.ui.model.BusinessCardBean;
import com.netease.yunxin.kit.chatkit.ui.model.BusinessShareBean;
import com.netease.yunxin.kit.chatkit.ui.model.ChatMessageBean;
+import com.netease.yunxin.kit.chatkit.ui.model.TeamExtensionBean;
import com.netease.yunxin.kit.chatkit.ui.view.message.viewholder.ChatBaseMessageViewHolder;
import com.netease.yunxin.kit.common.ui.utils.ToastX;
import com.netease.yunxin.kit.corekit.im.IMKitClient;
@@ -48,6 +53,11 @@ public class ChatBusinessViewHolder extends FunChatBaseMessageViewHolder {
LayoutInflater.from(parent.getContext()), getMessageContainer());
}
+ private String teamId = "";
+ private int isAllowAdd = 0;
+ private String teamOwnerId; //群主id;
+ private TeamExtensionBean extensionBean;
+
@SuppressLint("ResourceAsColor")
@Override
public void bindData(ChatMessageBean message, ChatMessageBean lastMessage) {
@@ -57,7 +67,36 @@ public class ChatBusinessViewHolder extends FunChatBaseMessageViewHolder {
BusinessShareBean circleShareBean = GsonUtils.getObjFromJSON(name, BusinessShareBean.class);
Log.i("名片", "名片获取到的数据0:" + GsonUtils.beanToJSONString(circleShareBean));
// Log.i("名片","名片获取到的数据2:"+message.getMessageData().getMessage().getSessionId());
-
+// if (currentMessage.getMessageData().getMessage().getSessionType() == SessionTypeEnum.Team) {
+// teamId = currentMessage.getMessageData().getMessage().getSessionId();
+// NIMClient.getService(TeamService.class).searchTeam(teamId).setCallback(new RequestCallback() {
+// @Override
+// public void onSuccess(Team result) {
+// teamOwnerId = teamInfo.getCreator();
+// if (!TextUtils.isEmpty(teamInfo.getExtension())) {
+// extensionBean = GsonUtils.getObjFromJSON(teamInfo.getExtension(), TeamExtensionBean.class);
+// if (extensionBean == null) {
+// extensionBean = new TeamExtensionBean(Integer.parseInt(teamInfo.getExtension()), 1);
+// }
+// } else {
+// extensionBean = new TeamExtensionBean(1, 1);
+// }
+// isAllowAdd = extensionBean.getAllowAddFriends();
+// }
+//
+// @Override
+// public void onFailed(int code) {
+//
+// }
+//
+// @Override
+// public void onException(Throwable exception) {
+//
+// }
+// });
+// } else {
+// teamId = "";
+// }
if (message.getMessageData().getMessage().getFromAccount().equals(IMKitClient.account())) {
binding.bigLy.setBackgroundResource(R.drawable.fun_message_send_bg);
binding.userNameTv.setTextColor(binding.bigLy.getResources().getColor(R.color.color_white));
@@ -77,12 +116,23 @@ public class ChatBusinessViewHolder extends FunChatBaseMessageViewHolder {
binding.cavIcon.setData(circleShareBean.data.getAvatar(), circleShareBean.data.getName());
}
binding.userNameTv.setText(circleShareBean.data.getName());
- binding.bigLy.setOnClickListener(v -> XKitRouter.withKey(RouterConstant.PATH_USER_INFO_PAGE)
- .withContext(binding.bigLy.getContext())
- .withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, circleShareBean.data.getAccout())
- .withParam("isGroup", currentMessage.getMessageData().getMessage().getSessionType().getValue() != SessionTypeEnum.P2P.getValue())
- .withParam("userId", circleShareBean.data.getAccout())
- .navigate());
+// binding.bigLy.setOnClickListener(v -> {
+// //如果是群,且群不允许群内添加好友 当前登录用户不是群主,以及userid 也不是群主 直接跳过
+// if (!TextUtils.isEmpty(teamId) && isAllowAdd == 0 &&
+// !IMKitClient.getUserInfo().getAccount().equals(teamOwnerId) &&
+// !circleShareBean.data.getAccout().equals(teamOwnerId)) {
+// return;
+// }
+// XKitRouter.withKey(RouterConstant.PATH_USER_INFO_PAGE)
+// .withContext(binding.bigLy.getContext())
+// .withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, circleShareBean.data.getAccout())
+// .withParam("isGroup", currentMessage.getMessageData().getMessage().getSessionType().getValue() != SessionTypeEnum.P2P.getValue())
+// .withParam("userId", circleShareBean.data.getAccout())
+// .withParam("teamId", teamId)
+// .navigate();
+// });
+
+
} catch (Exception e) {
e.printStackTrace();
}
diff --git a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/factory/ChatPopActionFactory.java b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/factory/ChatPopActionFactory.java
index abaac89..6018e51 100644
--- a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/factory/ChatPopActionFactory.java
+++ b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/factory/ChatPopActionFactory.java
@@ -7,9 +7,16 @@ package com.netease.yunxin.kit.chatkit.ui.factory;
import android.text.TextUtils;
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.MsgDirectionEnum;
import com.netease.nimlib.sdk.msg.constant.MsgStatusEnum;
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
+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.TeamMemberType;
+import com.netease.nimlib.sdk.team.model.TeamMember;
import com.netease.yunxin.kit.chatkit.ui.ChatMessageType;
import com.netease.yunxin.kit.chatkit.ui.R;
import com.netease.yunxin.kit.chatkit.ui.common.GsonUtils;
@@ -20,6 +27,7 @@ import com.netease.yunxin.kit.chatkit.ui.view.popmenu.IChatPopMenu;
import com.netease.yunxin.kit.chatkit.ui.view.popmenu.IChatPopMenuClickListener;
import com.netease.yunxin.kit.common.ui.utils.ToastX;
import com.netease.yunxin.kit.common.utils.NetworkUtils;
+import com.netease.yunxin.kit.corekit.im.IMKitClient;
import com.netease.yunxin.kit.corekit.im.custom.CustomAttachment;
import java.lang.ref.WeakReference;
@@ -56,11 +64,21 @@ public class ChatPopActionFactory {
this.customPopMenu = new WeakReference<>(popMenu);
}
+ boolean isManager = false;
+
public List getNormalActions(ChatMessageBean message) {
List actions = new ArrayList<>();
if (message.getMessageData() == null) {
return actions;
}
+ isManager = false;
+ IMMessage imMessage = message.getMessageData().getMessage();
+ if ((imMessage.getSessionType() == SessionTypeEnum.Team || imMessage.getSessionType() == SessionTypeEnum.SUPER_TEAM)) {
+ TeamMember teamMember = NIMClient.getService(TeamService.class).queryTeamMemberBlock(imMessage.getSessionId(), IMKitClient.account());
+ if (teamMember != null && (teamMember.getType() == TeamMemberType.Manager || teamMember.getType() == TeamMemberType.Owner)) {
+ isManager = true;
+ }
+ }
if (customPopMenu == null
|| customPopMenu.get() == null
|| customPopMenu.get().showDefaultPopMenu()) {
@@ -93,11 +111,13 @@ public class ChatPopActionFactory {
actions.add(getMultiSelectAction(message));
// actions.add(getCollectionAction(message));
// actions.add(getDeleteAction(message));
- if (message.getMessageData().getMessage().getDirect() == MsgDirectionEnum.Out) {
+
+
+ if (imMessage.getDirect() == MsgDirectionEnum.Out || isManager) {
boolean isShowChehui = true;
if (message.getViewType() == MsgTypeEnum.custom.getValue()) {
CustomAttachment attachment =
- (CustomAttachment) message.getMessageData().getMessage().getAttachment();
+ (CustomAttachment) imMessage.getAttachment();
LogUtils.i("自定义消息的类型", "自定义消息的类型:" + GsonUtils.beanToJSONString(attachment));
if (attachment != null) {
diff --git a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/page/fragment/FunChatTeamFragment.java b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/page/fragment/FunChatTeamFragment.java
index 19baec6..99b2754 100644
--- a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/page/fragment/FunChatTeamFragment.java
+++ b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/page/fragment/FunChatTeamFragment.java
@@ -44,12 +44,14 @@ import com.netease.yunxin.kit.chatkit.ui.ChatKitUIConstant;
import com.netease.yunxin.kit.chatkit.ui.R;
import com.netease.yunxin.kit.chatkit.ui.common.ChatDataUtils;
import com.netease.yunxin.kit.chatkit.ui.common.ChatUtils;
+import com.netease.yunxin.kit.chatkit.ui.common.GsonUtils;
import com.netease.yunxin.kit.chatkit.ui.data.entity.ChatDraftData;
import com.netease.yunxin.kit.chatkit.ui.databinding.FunChatSearchViewHolderBinding;
import com.netease.yunxin.kit.chatkit.ui.fun.view.MessageBottomLayout;
import com.netease.yunxin.kit.chatkit.ui.fun.viewholder.FunSearchMessageViewHolder;
import com.netease.yunxin.kit.chatkit.ui.model.ChatMessageBean;
import com.netease.yunxin.kit.chatkit.ui.model.CleanHistoryEvent;
+import com.netease.yunxin.kit.chatkit.ui.model.TeamExtensionBean;
import com.netease.yunxin.kit.chatkit.ui.model.UpdateTeamEvent;
import com.netease.yunxin.kit.chatkit.ui.model.ait.AitBlock;
import com.netease.yunxin.kit.chatkit.ui.page.adapter.SearchMessageAdapter;
@@ -82,7 +84,6 @@ import java.util.Map;
public class FunChatTeamFragment extends FunChatFragment {
private static final String TAG = "ChatTeamFragment";
- Team teamInfo;
IMMessage anchorMessage;
private boolean showDeleteDialog = false;
Observer>> teamReceiptObserver;
@@ -169,7 +170,7 @@ public class FunChatTeamFragment extends FunChatFragment {
super.initData(bundle);
}
-
+ public TeamExtensionBean extensionBean;
private void refreshView() {
if (teamInfo != null) {
// chatView.getTitleBar().setTitle(teamInfo.getName());
@@ -212,6 +213,17 @@ public class FunChatTeamFragment extends FunChatFragment {
}
+
+ //获取是否允许加好友状态
+ if (!TextUtils.isEmpty(teamInfo.getExtension())) {
+ extensionBean = GsonUtils.getObjFromJSON(teamInfo.getExtension(), TeamExtensionBean.class);
+ if (extensionBean == null) {
+ extensionBean = new TeamExtensionBean(Integer.parseInt(teamInfo.getExtension()), 1);
+ }
+ } else {
+ extensionBean = new TeamExtensionBean(1, 1);
+ }
+ isAllowAd = extensionBean.getAllowAddFriends();
}
}
diff --git a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/model/TeamExtensionBean.java b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/model/TeamExtensionBean.java
new file mode 100644
index 0000000..f9b2a70
--- /dev/null
+++ b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/model/TeamExtensionBean.java
@@ -0,0 +1,32 @@
+package com.netease.yunxin.kit.chatkit.ui.model;
+
+/**
+ * 群聊扩展字段对象
+ */
+public class TeamExtensionBean {
+
+
+ public TeamExtensionBean(int showQrCode, int allowAddFriends) {
+ this.showQrCode = showQrCode;
+ this.allowAddFriends = allowAddFriends;
+ }
+
+ private int showQrCode = 1;
+ private int allowAddFriends = 1;
+
+ public int getShowQrCode() {
+ return showQrCode;
+ }
+
+ public void setShowQrCode(int showQrCode) {
+ this.showQrCode = showQrCode;
+ }
+
+ public int getAllowAddFriends() {
+ return allowAddFriends;
+ }
+
+ public void setAllowAddFriends(int allowAddFriends) {
+ this.allowAddFriends = allowAddFriends;
+ }
+}
diff --git a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/network/ApiService.java b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/network/ApiService.java
index b3e5cd9..09280c2 100644
--- a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/network/ApiService.java
+++ b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/network/ApiService.java
@@ -49,12 +49,13 @@ public interface ApiService {
/**
* 正式环境
*/
- String URL = "https://api.letschat2023.com/";
+ String URL = "https://api.letschat2023.com/";
/**
* 测试环境
*/
//String URL = "https://api-test.letschat2023.com/";
+ // String URL = "https://8.217.244.135:8001/";
String SUBSTATIONID = "1703655363476242434";
diff --git a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/page/fragment/ChatBaseFragment.java b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/page/fragment/ChatBaseFragment.java
index 75b8db4..f2d2d64 100644
--- a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/page/fragment/ChatBaseFragment.java
+++ b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/page/fragment/ChatBaseFragment.java
@@ -79,6 +79,7 @@ import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.netease.nimlib.sdk.msg.model.MsgPinOption;
import com.netease.nimlib.sdk.msg.model.QueryDirectionEnum;
import com.netease.nimlib.sdk.msg.model.RecentContact;
+import com.netease.nimlib.sdk.team.model.Team;
import com.netease.nimlib.sdk.uinfo.UserService;
import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
import com.netease.yunxin.kit.alog.ALog;
@@ -278,6 +279,9 @@ public abstract class ChatBaseFragment extends BaseFragment {
public String forwardAction;
+ public Team teamInfo;
+ public int isAllowAd = 0;
+
@Nullable
@Override
public View onCreateView(
@@ -1633,6 +1637,13 @@ public abstract class ChatBaseFragment extends BaseFragment {
|| !delegateListener.onUserIconClick(view, position, messageBean)) {
// Log.i("点击了去用户详情页", "点击了去用户详情页:" + messageBean.getMessageData().getMessage().getFromAccount());
if (!isServices) {
+ //如果是群,且群不允许群内添加好友 当前登录用户不是群主,以及userid 也不是群主 直接跳过
+ if ((sessionType == SessionTypeEnum.SUPER_TEAM || sessionType == SessionTypeEnum.Team)
+ && isAllowAd == 0
+ && teamInfo != null && !teamInfo.getCreator().equals(IMKitClient.account())
+ && !teamInfo.getCreator().equals(messageBean.getMessageData().getMessage().getFromAccount())) {
+ return false;
+ }
XKitRouter.withKey(getUserInfoRoutePath())
.withContext(view.getContext())
.withParam(
@@ -1640,6 +1651,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
messageBean.getMessageData().getMessage().getFromAccount())
.withParam("userId", messageBean.getMessageData().getMessage().getFromAccount())
.withParam("isGroup", (sessionType == SessionTypeEnum.Team || sessionType == SessionTypeEnum.SUPER_TEAM))
+ .withParam("teamId", (sessionType == SessionTypeEnum.Team || sessionType == SessionTypeEnum.SUPER_TEAM) ? messageBean.getMessageData().getMessage().getSessionId() : "")
.navigate();
}
}
@@ -1944,11 +1956,24 @@ public abstract class ChatBaseFragment extends BaseFragment {
case ChatMessageType.CUSTOM_STICKER_BUSINESS_CARD:
BusinessShareBean businessShareBean = GsonUtils.getObjFromJSON(name, BusinessShareBean.class);
if (businessShareBean != null) {
+ //如果是群,且群不允许群内添加好友 当前登录用户不是群主,以及userid 也不是群主 直接跳过
+ if ((sessionType == SessionTypeEnum.SUPER_TEAM || sessionType == SessionTypeEnum.Team)
+ && isAllowAd == 0
+ && teamInfo != null && !teamInfo.getCreator().equals(IMKitClient.account())
+ && !teamInfo.getCreator().equals(businessShareBean.data.getAccout())) {
+ return;
+ }
XKitRouter.withKey(RouterConstant.PATH_USER_INFO_PAGE)
.withContext(getActivity())
.withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, businessShareBean.data.getAccout())
+ .withParam("isGroup", sessionType != SessionTypeEnum.P2P)
.withParam("userId", businessShareBean.data.getAccout())
.navigate();
+// XKitRouter.withKey(RouterConstant.PATH_USER_INFO_PAGE)
+// .withContext(getActivity())
+// .withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, businessShareBean.data.getAccout())
+// .withParam("userId", businessShareBean.data.getAccout())
+// .navigate();
}
break;
case ChatMessageType.CUSTOM_STICKER_TRANSFER_ACCOUNTS:
diff --git a/citypickerview/src/main/java/com/lljjcoder/citywheel/CustomConfig.java b/citypickerview/src/main/java/com/lljjcoder/citywheel/CustomConfig.java
index 138ed5e..7ef64e8 100644
--- a/citypickerview/src/main/java/com/lljjcoder/citywheel/CustomConfig.java
+++ b/citypickerview/src/main/java/com/lljjcoder/citywheel/CustomConfig.java
@@ -58,7 +58,7 @@ public class CustomConfig {
/**
* Color.BLUE
*/
- private String confirmText = "确定";
+ private String confirmText = "quantity";
/**
* Color.BLUE
diff --git a/contactkit-ui/src/main/java/com/netease/yunxin/kit/contactkit/ui/ContactConstant.java b/contactkit-ui/src/main/java/com/netease/yunxin/kit/contactkit/ui/ContactConstant.java
index 4266e02..dc5b586 100644
--- a/contactkit-ui/src/main/java/com/netease/yunxin/kit/contactkit/ui/ContactConstant.java
+++ b/contactkit-ui/src/main/java/com/netease/yunxin/kit/contactkit/ui/ContactConstant.java
@@ -13,6 +13,7 @@ public class ContactConstant {
public static final String REQUEST_CONTACT_ALL_FRIENDSBEAN = "allfiends";
public static final String PATH_FUN_CREATE_GROUP_PAGE = "creategroup";
public static final String REQUEST_FUN_CREATE_GROUP_AUTO = "autoinvited";
+ public static final String REQUEST_FUN_CREATE_GROUP_ALLOW_ADDFRIENDS = "allowaddfriends";
public static class SearchViewType {
public static final int USER = 1;
diff --git a/contactkit-ui/src/main/res-fun/layout/fun_contact_selector_setting_activity.xml b/contactkit-ui/src/main/res-fun/layout/fun_contact_selector_setting_activity.xml
index a54dfef..9427c24 100644
--- a/contactkit-ui/src/main/res-fun/layout/fun_contact_selector_setting_activity.xml
+++ b/contactkit-ui/src/main/res-fun/layout/fun_contact_selector_setting_activity.xml
@@ -1,6 +1,7 @@
@@ -9,6 +10,8 @@
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:rightTitleText="@string/fun_creategroup_sure"
app:titleText="@string/fun_creategroup_title" />
@@ -27,10 +30,10 @@
android:id="@+id/ic_groupheadtop"
android:layout_width="@dimen/dimen_88_dp"
android:layout_height="@dimen/dimen_88_dp"
- app:srcCompat="@mipmap/ic_grouphead_setting"
app:layout_constraintBottom_toBottomOf="@+id/ic_grouphead"
app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent" />
+ app:layout_constraintStart_toStartOf="parent"
+ app:srcCompat="@mipmap/ic_grouphead_setting" />
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/tvgroup_addFriends" />
Upload avatar
Users will join the group after receiving the invitation. After turning off this setting, requiring members to join the group requires manual acceptance of the invitation.
User automatically joins
+ Allow adding friends within the group
Group name
Set group file
Create
diff --git a/contactkit-ui/src/main/res/values-ja/strings.xml b/contactkit-ui/src/main/res/values-ja/strings.xml
index f4286bf..e2b14e5 100644
--- a/contactkit-ui/src/main/res/values-ja/strings.xml
+++ b/contactkit-ui/src/main/res/values-ja/strings.xml
@@ -128,6 +128,7 @@
アバターをアップロード
ユーザーは、招待を受信した後にグループに参加します。この設定をオフにした後、メンバーにグループへの参加を要求するには、招待を手動で承諾する必要があります。
ユーザーは自動的に参加します
+ グループ内で友達追加を許可しますか
グループ名
グループ ファイルを設定する
作成
diff --git a/contactkit-ui/src/main/res/values-zh/strings.xml b/contactkit-ui/src/main/res/values-zh/strings.xml
index f05acc7..77a769a 100644
--- a/contactkit-ui/src/main/res/values-zh/strings.xml
+++ b/contactkit-ui/src/main/res/values-zh/strings.xml
@@ -128,6 +128,7 @@
上传头像
用户在收到邀请后就会加入群组,关闭此设定后要求成员加入群组需手动接受邀请。
用户自动加入
+ 是否允许群内添加好友
群组名称
设定群组档案
建立
diff --git a/contactkit-ui/src/main/res/values/strings.xml b/contactkit-ui/src/main/res/values/strings.xml
index 334d00c..992de6b 100644
--- a/contactkit-ui/src/main/res/values/strings.xml
+++ b/contactkit-ui/src/main/res/values/strings.xml
@@ -128,6 +128,7 @@
上傳頭像
使用者收到邀請後就會加入群組,關閉此設定後要求成員加入群組需手動接受邀請。
使用者自動加入
+ 是否允許群內新增好友
群組名稱
設定群組檔案
建立
diff --git a/teamkit-ui/src/main/java/com/netease/yunxin/kit/teamkit/ui/TeamUIService.java b/teamkit-ui/src/main/java/com/netease/yunxin/kit/teamkit/ui/TeamUIService.java
index 9ded241..c4c8df1 100644
--- a/teamkit-ui/src/main/java/com/netease/yunxin/kit/teamkit/ui/TeamUIService.java
+++ b/teamkit-ui/src/main/java/com/netease/yunxin/kit/teamkit/ui/TeamUIService.java
@@ -21,6 +21,7 @@ import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import com.netease.nim.highavailable.LogUtils;
import com.netease.nimlib.sdk.team.constant.TeamBeInviteModeEnum;
import com.netease.nimlib.sdk.team.constant.TeamExtensionUpdateModeEnum;
import com.netease.nimlib.sdk.team.constant.TeamFieldEnum;
@@ -38,9 +39,12 @@ import com.netease.yunxin.kit.corekit.model.ErrorMsg;
import com.netease.yunxin.kit.corekit.model.ResultInfo;
import com.netease.yunxin.kit.corekit.route.XKitRouter;
import com.netease.yunxin.kit.corekit.startup.Initializer;
+import com.netease.yunxin.kit.teamkit.ui.custom.TeamConfigManager;
import com.netease.yunxin.kit.teamkit.ui.utils.TeamIconUtils;
import com.netease.yunxin.kit.teamkit.ui.utils.TeamUtils;
+import org.json.JSONObject;
+
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
@@ -255,10 +259,24 @@ public class TeamUIService extends ChatService {
fieldMap.put(TeamFieldEnum.BeInviteMode, TeamBeInviteModeEnum.NoAuth); //被邀请人不需要验证
fieldMap.put(TeamFieldEnum.VerifyType, VerifyTypeEnum.Free);//
fieldMap.put(TeamFieldEnum.InviteMode, TeamInviteModeEnum.All); //每个人都可以邀请入群
- fieldMap.put(TeamFieldEnum.Extension, "1"); //控制是否展示行动码与链接
+// fieldMap.put(TeamFieldEnum.Extension, "1"); //控制是否展示行动码与链接
+ boolean isAllow = true;
+ if (customParam.containsKey("allowaddfriends")) {
+ isAllow = (boolean) customParam.get("allowaddfriends");
+ }
+ try {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put(TeamConfigManager.CREATE_TEAM_PARAMS_SHOWQRCODE, 1);
+ jsonObject.put(TeamConfigManager.CREATE_TEAM_PARAMS_ALLOWADDFRIENDS, isAllow ? 1 : 0);
+ String jsonstr = jsonObject.toString();
+ LogUtils.d("json==","jsonstr=="+jsonstr);
+ fieldMap.put(TeamFieldEnum.Extension, jsonObject.toString()); //控制是否展示行动码与链接 以及 是否允许添加好友
+ } catch (Exception e) {
+ fieldMap.put(TeamFieldEnum.Extension, "1"); //控制是否展示行动码与链接
+ }
if (customParam.get("autoinvited") != null) {
boolean verifyType = (boolean) customParam.get("autoinvited");
- fieldMap.put(TeamFieldEnum.BeInviteMode, verifyType ? TeamBeInviteModeEnum.NoAuth :TeamBeInviteModeEnum.NeedAuth);
+ fieldMap.put(TeamFieldEnum.BeInviteMode, verifyType ? TeamBeInviteModeEnum.NoAuth : TeamBeInviteModeEnum.NeedAuth);
}
fieldMap.put(TeamFieldEnum.TeamExtensionUpdateMode, TeamExtensionUpdateModeEnum.Manager);
diff --git a/teamkit-ui/src/main/java/com/netease/yunxin/kit/teamkit/ui/custom/TeamConfigManager.java b/teamkit-ui/src/main/java/com/netease/yunxin/kit/teamkit/ui/custom/TeamConfigManager.java
index 6d86552..84c51e3 100644
--- a/teamkit-ui/src/main/java/com/netease/yunxin/kit/teamkit/ui/custom/TeamConfigManager.java
+++ b/teamkit-ui/src/main/java/com/netease/yunxin/kit/teamkit/ui/custom/TeamConfigManager.java
@@ -5,6 +5,10 @@
package com.netease.yunxin.kit.teamkit.ui.custom;
public class TeamConfigManager {
- /** 从其他页面返回群设置页面时,页面中的成员列表是否刷新,默认不刷新 */
- public static boolean REFRESH_MEMBER_DATA_REAL_TIME_FOR_BACK = false;
+ /**
+ * 从其他页面返回群设置页面时,页面中的成员列表是否刷新,默认不刷新
+ */
+ public static boolean REFRESH_MEMBER_DATA_REAL_TIME_FOR_BACK = false;
+ public static final String CREATE_TEAM_PARAMS_SHOWQRCODE = "showQrCode";
+ public static final String CREATE_TEAM_PARAMS_ALLOWADDFRIENDS = "allowAddFriends";
}