Skip to content

Commit cbde766

Browse files
committed
添加好友发送提示消息
添加好友发送提示消息,fix:不在群不保存撤回消息,该群不显示在最近会话列表
1 parent 0aa12aa commit cbde766

File tree

5 files changed

+62
-36
lines changed

5 files changed

+62
-36
lines changed

android/src/main/java/com/netease/im/RNNeteaseImModule.java

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949
import com.netease.im.uikit.permission.annotation.OnMPermissionNeverAskAgain;
5050
import com.netease.im.uikit.session.helper.MessageHelper;
5151
import com.netease.nimlib.sdk.NIMClient;
52-
import com.netease.nimlib.sdk.Observer;
5352
import com.netease.nimlib.sdk.RequestCallback;
5453
import com.netease.nimlib.sdk.RequestCallbackWrapper;
5554
import com.netease.nimlib.sdk.ResponseCode;
@@ -61,7 +60,6 @@
6160
import com.netease.nimlib.sdk.friend.model.AddFriendData;
6261
import com.netease.nimlib.sdk.msg.MessageBuilder;
6362
import com.netease.nimlib.sdk.msg.MsgService;
64-
import com.netease.nimlib.sdk.msg.SystemMessageObserver;
6563
import com.netease.nimlib.sdk.msg.SystemMessageService;
6664
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
6765
import com.netease.nimlib.sdk.msg.model.IMMessage;
@@ -1658,7 +1656,7 @@ public void playLocal(String resourceFile, String type, Promise promise) {
16581656
Uri uri = Uri.parse(resourceFile);
16591657
LogUtil.i(TAG, "scheme:" + uri.getScheme());
16601658
String filePath = uri.getPath();
1661-
if(filePath.startsWith("/")){
1659+
if (filePath.startsWith("/")) {
16621660
filePath = filePath.substring(1);
16631661
if (filePath.indexOf(".") == -1) {
16641662
filePath = filePath + "." + type;
@@ -1714,27 +1712,9 @@ public void stopSystemMsg(Promise promise) {
17141712
*/
17151713
@ReactMethod
17161714
public void startSystemMsgUnreadCount(Promise promise) {
1717-
registerSystemMsgUnreadCount(true);
1718-
int unread = NIMClient.getService(SystemMessageService.class).querySystemMessageUnreadCountBlock();
1719-
ReactCache.emit(ReactCache.observeUnreadCountChange, Integer.toString(unread));
1715+
LoginService.getInstance().startSystemMsgUnreadCount();
17201716
}
17211717

1722-
boolean hasRegisterSystemMsgUnreadCount;
1723-
private Observer<Integer> sysMsgUnreadCountChangedObserver = new Observer<Integer>() {
1724-
@Override
1725-
public void onEvent(Integer unreadCount) {
1726-
int unread = unreadCount == null ? 0 : unreadCount;
1727-
ReactCache.emit(ReactCache.observeUnreadCountChange, Integer.toString(unread));
1728-
}
1729-
};
1730-
1731-
void registerSystemMsgUnreadCount(boolean register) {
1732-
if (hasRegisterSystemMsgUnreadCount && register) {
1733-
return;
1734-
}
1735-
hasRegisterSystemMsgUnreadCount = register;
1736-
NIMClient.getService(SystemMessageObserver.class).observeUnreadCountChange(sysMsgUnreadCountChangedObserver, register);
1737-
}
17381718

17391719
/**
17401720
* 停止系统通知计数监听
@@ -1743,7 +1723,7 @@ void registerSystemMsgUnreadCount(boolean register) {
17431723
*/
17441724
@ReactMethod
17451725
public void stopSystemMsgUnreadCount(Promise promise) {
1746-
registerSystemMsgUnreadCount(false);
1726+
LoginService.getInstance().registerSystemMsgUnreadCount(false);
17471727
}
17481728

17491729
/**
@@ -1839,19 +1819,24 @@ public void onResult(int code, Void aVoid, Throwable throwable) {
18391819
* @param promise
18401820
*/
18411821
@ReactMethod
1842-
public void ackAddFriendRequest(String messageId, String contactId, String pass, String timestamp, final Promise promise) {
1822+
public void ackAddFriendRequest(String messageId, final String contactId, String pass, String timestamp, final Promise promise) {
18431823
LogUtil.i(TAG, "ackAddFriendRequest" + contactId);
18441824
long messageIdLong = 0L;
18451825
try {
18461826
messageIdLong = Long.parseLong(messageId);
18471827
} catch (NumberFormatException e) {
18481828
e.printStackTrace();
18491829
}
1830+
final boolean toPass = string2Boolean(pass);
18501831
if (sysMessageObserver != null)
18511832
sysMessageObserver.ackAddFriendRequest(messageIdLong, contactId, string2Boolean(pass), timestamp, new RequestCallbackWrapper<Void>() {
18521833
@Override
18531834
public void onResult(int code, Void aVoid, Throwable throwable) {
18541835
if (code == ResponseCode.RES_SUCCESS) {
1836+
if (toPass) {
1837+
IMMessage message = MessageBuilder.createTextMessage(contactId, SessionTypeEnum.P2P, "我们已经是好友啦,一起来聊天吧!");
1838+
NIMClient.getService(MsgService.class).sendMessage(message, false);
1839+
}
18551840
promise.resolve("" + code);
18561841
} else {
18571842
promise.reject("" + code, "");
@@ -1916,6 +1901,7 @@ public void onCleanCache(boolean succeeded) {
19161901
}
19171902
});
19181903
}
1904+
19191905
void showTip(final String tip) {
19201906
handler.post(new Runnable() {
19211907
@Override

android/src/main/java/com/netease/im/login/LoginService.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.content.Context;
55

66
import com.netease.im.IMApplication;
7+
import com.netease.im.ReactCache;
78
import com.netease.im.session.SessionUtil;
89
import com.netease.im.team.TeamListService;
910
import com.netease.im.uikit.LoginSyncDataStatusObserver;
@@ -16,6 +17,8 @@
1617
import com.netease.nimlib.sdk.auth.LoginInfo;
1718
import com.netease.nimlib.sdk.friend.model.AddFriendNotify;
1819
import com.netease.nimlib.sdk.msg.MsgServiceObserve;
20+
import com.netease.nimlib.sdk.msg.SystemMessageObserver;
21+
import com.netease.nimlib.sdk.msg.SystemMessageService;
1922
import com.netease.nimlib.sdk.msg.constant.SystemMessageType;
2023
import com.netease.nimlib.sdk.msg.model.CustomNotification;
2124
import com.netease.nimlib.sdk.msg.model.SystemMessage;
@@ -77,6 +80,7 @@ public void onSuccess(LoginInfo loginInfo) {
7780

7881
registerObserver(true);
7982
queryRecentContacts();
83+
startSystemMsgUnreadCount();
8084
loginInfoFuture = null;
8185
}
8286

@@ -164,5 +168,26 @@ public void logout() {
164168
LoginSyncDataStatusObserver.getInstance().reset();
165169
}
166170

171+
public void startSystemMsgUnreadCount(){
172+
registerSystemMsgUnreadCount(true);
173+
int unread = NIMClient.getService(SystemMessageService.class).querySystemMessageUnreadCountBlock();
174+
ReactCache.emit(ReactCache.observeUnreadCountChange, Integer.toString(unread));
175+
}
176+
boolean hasRegisterSystemMsgUnreadCount;
177+
private Observer<Integer> sysMsgUnreadCountChangedObserver = new Observer<Integer>() {
178+
@Override
179+
public void onEvent(Integer unreadCount) {
180+
int unread = unreadCount == null ? 0 : unreadCount;
181+
ReactCache.emit(ReactCache.observeUnreadCountChange, Integer.toString(unread));
182+
}
183+
};
184+
185+
public void registerSystemMsgUnreadCount(boolean register) {
186+
if (hasRegisterSystemMsgUnreadCount && register) {
187+
return;
188+
}
189+
hasRegisterSystemMsgUnreadCount = register;
190+
NIMClient.getService(SystemMessageObserver.class).observeUnreadCountChange(sysMsgUnreadCountChangedObserver, register);
191+
}
167192

168193
}

android/src/main/java/com/netease/im/login/RecentContactObserver.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import com.netease.im.ReactCache;
88
import com.netease.im.uikit.cache.SimpleCallback;
99
import com.netease.im.uikit.cache.TeamDataCache;
10-
import com.netease.im.uikit.common.util.log.LogUtil;
1110
import com.netease.nimlib.sdk.NIMClient;
1211
import com.netease.nimlib.sdk.Observer;
1312
import com.netease.nimlib.sdk.RequestCallbackWrapper;
@@ -85,8 +84,8 @@ private void deleteRecentContactCallback(RecentContact recent, boolean callback)
8584

8685
String contactId = recent.getContactId();
8786
SessionTypeEnum sessionTypeEnum = recent.getSessionType();
88-
LogUtil.i("deleteRecentContactCallback-","---"+contactId);
89-
LogUtil.i("deleteRecentContactCallback-","---"+recent.getContent());
87+
// LogUtil.i("deleteRecentContactCallback-", "---" + contactId);
88+
// LogUtil.i("deleteRecentContactCallback-", "---" + recent.getContent());
9089
if (callback) {
9190
NIMClient.getService(MsgService.class).deleteRecentContact2(contactId, sessionTypeEnum);
9291
} else {
@@ -149,16 +148,22 @@ void doAddDeleteQuitTeamMessage(final RecentContact r, boolean isDelete) {
149148
TeamDataCache.getInstance().fetchTeamById(contactId, new SimpleCallback<Team>() {
150149
@Override
151150
public void onResult(boolean success, Team result) {
152-
if (success && result != null) {
153-
if (!result.isMyTeam()) {
154-
items.remove(r);
151+
if (success) {
152+
if (result != null) {
153+
if (result.isMyTeam()) {
154+
items.add(r);
155+
refreshMessages(true);
156+
return;
157+
} else {
158+
deleteRecentContactCallback(r, true);
159+
}
160+
} else {
155161
deleteRecentContactCallback(r, true);
156-
refreshMessages(true);
157162
}
158163
}
159164
}
160165
});
161-
items.add(r);
166+
162167
}
163168
} else {
164169
items.add(r);

android/src/main/java/com/netease/im/session/SessionService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,8 @@ public void startSession(Handler handler, String sessionId, String type) {
554554
this.mute = !NIMClient.getService(FriendService.class).isNeedMessageNotify(sessionId);
555555
} else {
556556
Team t = TeamDataCache.getInstance().getTeamById(sessionId);
557-
this.mute = t.mute();
557+
if (t != null)
558+
this.mute = t.mute();
558559
}
559560
registerObservers(true);
560561
getMsgService().setChattingAccount(sessionId, sessionTypeEnum);

android/src/main/java/com/netease/im/uikit/session/helper/MessageHelper.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ public void onRevokeMessage(IMMessage item) {
3333
if (item == null) {
3434
return;
3535
}
36+
if (item.getSessionType() == SessionTypeEnum.Team) {
37+
Team t = TeamDataCache.getInstance().getTeamById(item.getSessionId());
38+
if (t == null || !t.isMyTeam()) {
39+
return;
40+
}
41+
}
3642

3743
IMMessage message = MessageBuilder.createTipMessage(item.getSessionId(), item.getSessionType());
3844
String nick = "";
@@ -46,19 +52,22 @@ public void onRevokeMessage(IMMessage item) {
4652
message.setStatus(MsgStatusEnum.success);
4753
CustomMessageConfig config = new CustomMessageConfig();
4854
config.enableUnreadCount = false;
55+
config.enablePush = false;
4956
message.setConfig(config);
5057
NIMClient.getService(MsgService.class).saveMessageToLocalEx(message, true, item.getTime());
5158
}
52-
public void onCreateTeamMessage(Team team){
53-
if(team==null||team.getType()== TeamTypeEnum.Normal){
59+
60+
public void onCreateTeamMessage(Team team) {
61+
if (team == null || team.getType() == TeamTypeEnum.Normal) {
5462
return;
5563
}
5664
Map<String, Object> content = new HashMap<>(1);
57-
content.put("content", "成功创建高级群");
65+
content.put("content", "成功创建群");
5866
IMMessage msg = MessageBuilder.createTipMessage(team.getId(), SessionTypeEnum.Team);
5967
msg.setRemoteExtension(content);
6068
CustomMessageConfig config = new CustomMessageConfig();
6169
config.enableUnreadCount = false;
70+
config.enablePush = false;
6271
msg.setConfig(config);
6372
msg.setStatus(MsgStatusEnum.success);
6473
NIMClient.getService(MsgService.class).saveMessageToLocal(msg, true);

0 commit comments

Comments
 (0)