Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

发布UIKit 9.2.6版本 #72

Merged
merged 5 commits into from
Jul 26, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat(ui): UI层源码同步
  • Loading branch information
叶树鑫 committed Jul 26, 2022
commit 528d861265ba9afec1e31d13ea7d29c58a9fc4f0
11 changes: 5 additions & 6 deletions chatkit-ui/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ android {
targetSdk = 30
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles("consumer-rules.pro")
buildConfigField("String", "versionName", "\"9.2.2\"")
buildConfigField("String", "versionName", "\"9.2.6-rc01\"")
}

buildTypes {
Expand All @@ -39,15 +39,14 @@ android {

dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
api("com.netease.yunxin.kit.chat:chatkit:9.2.2")
api("com.netease.yunxin.kit.common:common-ui:1.1.2")
api("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10")
implementation("androidx.appcompat:appcompat:1.4.1")
api("com.netease.yunxin.kit.chat:chatkit:9.2.6-rc01")
api("com.netease.yunxin.kit.common:common-ui:1.1.3")
api("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21")
implementation("androidx.appcompat:appcompat:1.4.2")
implementation("com.google.android.material:material:1.5.0")
implementation("androidx.recyclerview:recyclerview:1.2.1")
implementation("com.airbnb.android:lottie:5.0.3")
implementation("com.github.bumptech.glide:glide:4.13.1")
implementation("com.netease.yunxin.kit.common:common:1.1.2")

testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.3")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,4 @@ public static void setChatUIConfig(ChatUIConfig config){
public static ChatUIConfig getChatUIConfig(){
return chatConfig;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,18 @@

public class ChatUIConfig {

//消息点击事件
public IMessageItemClickListener messageItemClickListener;

//消息UI配置
public MessageProperties messageProperties;

public IPermissionListener permissionListener;

public IChatFactory chatFactory;

public IChatViewCustom chatViewCustom;



}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.netease.yunxin.kit.chatkit.ui;

import android.app.Activity;

public interface IPermissionListener {

boolean requestPermissionDenied(Activity activity, String permission);

boolean permissionDeniedForever(Activity activity, String permission);
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,6 @@
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.provider.FriendProvider;
import com.netease.yunxin.kit.corekit.im.provider.TeamProvider;
import com.netease.yunxin.kit.corekit.im.provider.UserInfoProvider;

import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -61,9 +58,9 @@ public static String getTeamDisplayNameWithoutMe(String tid, String account) {


public static String getTeamNick(String tid, String account) {
Team team = TeamProvider.INSTANCE.queryTeamBlock(tid);
Team team = ChatMessageRepo.queryTeam(tid);
if (team != null && team.getType() == TeamTypeEnum.Advanced) {
TeamMember member = TeamProvider.INSTANCE.getTeamMember(tid, account);
TeamMember member = ChatMessageRepo.getTeamMember(tid, account);
if (member != null && !TextUtils.isEmpty(member.getTeamNick())) {
return member.getTeamNick();
}
Expand All @@ -72,22 +69,36 @@ public static String getTeamNick(String tid, String account) {
}

public static String getTeamUserAvatar(String accId) {
UserInfo user = UserInfoProvider.INSTANCE.getUserInfo(accId);
UserInfo user = ChatMessageRepo.getUserInfo(accId);
return user == null ? null : user.getAvatar();
}

public static String getUserNickByAccId(String accId, boolean withYou) {
if (withYou && accId.equals(IMKitClient.account())) {
return IMKitClient.getApplicationContext().getString(R.string.chat_you);
}
FriendInfo friend = FriendProvider.INSTANCE.getFriendInfo(accId);
FriendInfo friend = ChatMessageRepo.getFriendInfo(accId);
if (friend != null && !TextUtils.isEmpty(friend.getAlias())) {
return friend.getAlias();
}
UserInfo user = UserInfoProvider.INSTANCE.getUserInfo(accId);
UserInfo user = ChatMessageRepo.getUserInfo(accId);
return user == null ? null : (TextUtils.isEmpty(user.getName()) ? accId : user.getName());
}

public static String getUserNickByAccId(String accId,UserInfo userInfo, boolean withYou) {
if (withYou && accId.equals(IMKitClient.account())) {
return IMKitClient.getApplicationContext().getString(R.string.chat_you);
}
FriendInfo friend = ChatMessageRepo.getFriendInfo(accId);
if (friend != null && !TextUtils.isEmpty(friend.getAlias())) {
return friend.getAlias();
}
if (userInfo == null) {
userInfo = ChatMessageRepo.getUserInfo(accId);
}
return userInfo == null ? null : (TextUtils.isEmpty(userInfo.getName()) ? accId : userInfo.getName());
}

public static String getChatMessageUserName(IMMessage message) {
String name = null;
//first is friend alias
Expand All @@ -106,7 +117,7 @@ public static String getChatMessageUserName(IMMessage message) {
}
}
//third is user nick
UserInfo user = UserInfoProvider.INSTANCE.getUserInfo(message.getFromAccount());
UserInfo user = ChatMessageRepo.getUserInfo(message.getFromAccount());
if (user != null) {
name = user.getName();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.team.model.Team;
import com.netease.yunxin.kit.chatkit.repo.ChatMessageRepo;
import com.netease.yunxin.kit.chatkit.ui.R;
import com.netease.yunxin.kit.chatkit.ui.databinding.ChatMessageForwardConfirmLayoutBinding;
import com.netease.yunxin.kit.chatkit.ui.databinding.ChatUserSelectedItemLayoutBinding;
Expand Down Expand Up @@ -121,7 +122,7 @@ public void bind(String item) {
String avatar;
String nickname = item;
if (forwardType == SessionTypeEnum.P2P.getValue()) {
UserInfo userInfo = UserInfoProvider.INSTANCE.getUserInfo(item);
UserInfo userInfo = ChatMessageRepo.getUserInfo(item);
avatar = userInfo == null ? null : userInfo.getAvatar();
nickname = userInfo == null ? item : userInfo.getName();
getBinding().avatar.setData(avatar, nickname, AvatarColor.avatarColor(item));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,18 @@

package com.netease.yunxin.kit.chatkit.ui.page;

import android.content.pm.PackageManager;
import android.os.Bundle;
import android.text.TextUtils;

import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentManager;

import com.netease.yunxin.kit.alog.ALog;
import com.netease.yunxin.kit.chatkit.ui.R;
import com.netease.yunxin.kit.chatkit.ui.builder.P2PChatFragmentBuilder;
import com.netease.yunxin.kit.chatkit.ui.page.fragment.ChatP2PFragment;
import com.netease.yunxin.kit.common.ui.utils.ToastX;
import com.netease.yunxin.kit.corekit.im.model.UserInfo;
import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;

Expand All @@ -22,21 +26,24 @@
public class ChatP2PActivity extends ChatBaseActivity {

private static final String LOG_TOG = "ChatP2PActivity";
private ChatP2PFragment chatFragment;

@Override
public void initChat() {
UserInfo userInfo = (UserInfo) getIntent().getSerializableExtra(RouterConstant.CHAT_KRY);
if (userInfo == null) {
ALog.e(LOG_TOG, "user info is null");
String accId = getIntent().getStringExtra(RouterConstant.CHAT_ID_KRY);
if (userInfo == null&& TextUtils.isEmpty(accId)) {
ALog.e(LOG_TOG, "user info is null && accid is null:"+accId);
finish();
return;
}
ALog.i(LOG_TOG, "userInfo account is = " + userInfo.getAccount());
//set fragment
P2PChatFragmentBuilder fragmentBuilder = new P2PChatFragmentBuilder();

ChatP2PFragment chatFragment = fragmentBuilder.build();
chatFragment = fragmentBuilder.build();
Bundle bundle = new Bundle();
bundle.putSerializable(RouterConstant.CHAT_KRY, userInfo);
bundle.putSerializable(RouterConstant.CHAT_ID_KRY, accId);
chatFragment.setArguments(bundle);

FragmentManager fragmentManager = getSupportFragmentManager();
Expand All @@ -45,4 +52,5 @@ public void initChat() {
.add(R.id.container, chatFragment)
.commitAllowingStateLoss();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,23 @@
import android.view.View;

import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;

import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.team.model.Team;
import com.netease.yunxin.kit.alog.ALog;
import com.netease.yunxin.kit.chatkit.ui.databinding.ChatSearchMessageActivityBinding;
import com.netease.yunxin.kit.chatkit.ui.model.ChatSearchBean;
import com.netease.yunxin.kit.chatkit.ui.page.adapter.SearchMessageAdapter;
import com.netease.yunxin.kit.chatkit.ui.page.viewmodel.SearchMessageViewModel;
import com.netease.yunxin.kit.common.ui.activities.BaseActivity;
import com.netease.yunxin.kit.common.ui.viewholder.BaseBean;
import com.netease.yunxin.kit.common.ui.viewholder.ViewHolderClickListener;
import com.netease.yunxin.kit.common.ui.viewmodel.FetchResult;
import com.netease.yunxin.kit.common.ui.viewmodel.LoadStatus;
import com.netease.yunxin.kit.common.utils.KeyboardUtils;
import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;
import com.netease.yunxin.kit.corekit.route.XKitRouter;

import java.util.List;

/**
* History message search page for Team chat
* search history message and jump back to the team chat page
Expand Down Expand Up @@ -61,11 +56,12 @@ private void initView(){
searchAdapter = new SearchMessageAdapter();
searchAdapter.setViewHolderClickListener(new ViewHolderClickListener() {
@Override
public void onClick(BaseBean data, int position) {
public boolean onClick(BaseBean data, int position) {
ALog.i(TAG, "item onClick position:" + position);
KeyboardUtils.hideKeyboard(ChatSearchActivity.this);
XKitRouter.withKey(data.router).withParam(data.paramKey, data.param).withParam(RouterConstant.CHAT_KRY,team)
.withContext(ChatSearchActivity.this).navigate();
return true;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.Nullable;
import androidx.lifecycle.ViewModelProvider;

import com.netease.nimlib.sdk.msg.model.StickTopSessionInfo;
import com.netease.nimlib.sdk.team.model.CreateTeamResult;
Expand All @@ -24,8 +25,10 @@
import com.netease.yunxin.kit.chatkit.ui.R;
import com.netease.yunxin.kit.chatkit.ui.common.ChatCallback;
import com.netease.yunxin.kit.chatkit.ui.databinding.ChatSettingActivityBinding;
import com.netease.yunxin.kit.chatkit.ui.page.viewmodel.ChatSettingViewModel;
import com.netease.yunxin.kit.common.ui.activities.BaseActivity;
import com.netease.yunxin.kit.common.ui.utils.AvatarColor;
import com.netease.yunxin.kit.common.ui.viewmodel.LoadStatus;
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;
Expand All @@ -40,14 +43,18 @@ public class ChatSettingActivity extends BaseActivity {

ChatSettingActivityBinding binding;

ChatSettingViewModel viewModel;

UserInfo userInfo;
String accId;

private ActivityResultLauncher<Intent> launcher;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ChatSettingActivityBinding.inflate(getLayoutInflater());
viewModel = new ViewModelProvider(this).get(ChatSettingViewModel.class);
setContentView(binding.getRoot());
binding.title.setOnBackIconClickListener(v -> onBackPressed())
.setTitle(R.string.chat_setting);
Expand All @@ -57,14 +64,17 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {

private void initView() {
userInfo = (UserInfo) getIntent().getSerializableExtra(RouterConstant.CHAT_KRY);
String name = TextUtils.isEmpty(userInfo.getComment()) ? userInfo.getName() : userInfo.getComment();
if (name == null) {
name = userInfo.getAccount();
accId = (String) getIntent().getSerializableExtra(RouterConstant.CHAT_ID_KRY);
if (userInfo == null && TextUtils.isEmpty(accId)){
finish();
return;
}
if (TextUtils.isEmpty(accId)){
accId = userInfo.getAccount();
}
ALog.i(TAG, "initView name -->> " + name);
binding.avatar.setData(userInfo.getAvatar(), name, AvatarColor.avatarColor(userInfo.getAccount()));
binding.tvName.setText(name);
refreshView();
binding.ivAdd.setOnClickListener(v -> selectUsersCreateGroup());
String finalAccId = accId;
launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
if (result.getResultCode() != RESULT_OK) {
return;
Expand All @@ -74,7 +84,7 @@ private void initView() {
if (data != null) {
ArrayList<String> friends = data.getStringArrayListExtra(REQUEST_CONTACT_SELECTOR_KEY);
if (friends != null && !friends.isEmpty()) {
friends.add(userInfo.getAccount());
friends.add(finalAccId);
XKitRouter.withKey(RouterConstant.PATH_CREATE_NORMAL_TEAM_ACTION)
.withParam(REQUEST_CONTACT_SELECTOR_KEY, friends)
.withParam(KEY_REQUEST_SELECTOR_NAME, data.getStringArrayListExtra(KEY_REQUEST_SELECTOR_NAME))
Expand All @@ -92,31 +102,53 @@ private void initView() {
});
}

private void refreshView(){
if (userInfo == null){
binding.avatar.setData(null, accId, AvatarColor.avatarColor(accId));
binding.tvName.setText(accId);
}else {
String name = TextUtils.isEmpty(userInfo.getComment()) ? userInfo.getName() : userInfo.getComment();
if (name == null) {
name = userInfo.getAccount();
}
ALog.i(TAG, "initView name -->> " + name);
binding.avatar.setData(userInfo.getAvatar(), name, AvatarColor.avatarColor(userInfo.getAccount()));
binding.tvName.setText(name);
}
}

private void initData() {
if (userInfo == null) return;
binding.scSessionTop.setChecked(ChatMessageRepo.isStickTop(userInfo.getAccount()));
if (accId == null) return;
viewModel.getUserInfoLiveData().observe(this,result -> {
if (result.getLoadStatus() == LoadStatus.Success){
userInfo = result.getData();
refreshView();
}
});
viewModel.getUserInfo(accId);
binding.scSessionTop.setChecked(ChatMessageRepo.isStickTop(accId));
binding.rlySessionTop.setOnClickListener(v -> {
if (!binding.scSessionTop.isChecked()) {
ChatMessageRepo.addStickTop(userInfo.getAccount(), new ChatCallback<StickTopSessionInfo>() {
ChatMessageRepo.addStickTop(accId, new ChatCallback<StickTopSessionInfo>() {
@Override
public void onSuccess(@Nullable StickTopSessionInfo param) {
binding.scSessionTop.setChecked(true);
ChatMessageRepo.notifyP2PStickTop(userInfo.getAccount());
ChatMessageRepo.notifyP2PStickTop(accId);
}
});
} else {
ChatMessageRepo.removeStickTop(userInfo.getAccount(), new ChatCallback<Void>() {
ChatMessageRepo.removeStickTop(accId, new ChatCallback<Void>() {
@Override
public void onSuccess(@Nullable Void param) {
binding.scSessionTop.setChecked(false);
ChatMessageRepo.notifyP2PStickTop(userInfo.getAccount());
ChatMessageRepo.notifyP2PStickTop(accId);
}
});
}
});

binding.scMessageNotice.setChecked(ChatMessageRepo.isNeedNotify(userInfo.getAccount()));
binding.rlyMessageNotice.setOnClickListener(v -> ChatMessageRepo.setNotify(userInfo.getAccount(),
binding.scMessageNotice.setChecked(ChatMessageRepo.isNeedNotify(accId));
binding.rlyMessageNotice.setOnClickListener(v -> ChatMessageRepo.setNotify(accId,
!binding.scMessageNotice.isChecked(), new ChatCallback<Void>() {
@Override
public void onSuccess(@Nullable Void param) {
Expand All @@ -128,7 +160,7 @@ public void onSuccess(@Nullable Void param) {

private void selectUsersCreateGroup() {
ArrayList<String> filterList = new ArrayList<>();
filterList.add(userInfo.getAccount());
filterList.add(accId);
XKitRouter.withKey(RouterConstant.PATH_CONTACT_SELECTOR_PAGE)
.withParam(RouterConstant.KEY_CONTACT_SELECTOR_MAX_COUNT, 199)
.withParam(RouterConstant.KEY_REQUEST_SELECTOR_NAME_ENABLE, true)
Expand Down
Loading