当客户端更新用户设置时,不需要再通知修改的端重新更新
This commit is contained in:
@@ -18,7 +18,7 @@ import win.liyufan.im.IMTopic;
|
||||
public class PutUserSettingHandler extends IMHandler<WFCMessage.ModifyUserSettingReq> {
|
||||
@Override
|
||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.ModifyUserSettingReq request, Qos1PublishHandler.IMCallback callback) {
|
||||
m_messagesStore.updateUserSettings(fromUser, request);
|
||||
m_messagesStore.updateUserSettings(fromUser, request, clientID);
|
||||
return ErrorCode.ERROR_CODE_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2112,7 +2112,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
}
|
||||
|
||||
if (session.getPlatform() == Platform_LINUX || session.getPlatform() == Platform_Windows || session.getPlatform() == Platform_OSX) {
|
||||
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue(online ? (System.currentTimeMillis() + "|" + session.getPlatform() + "|" + session.getClientID() + "|" + session.getPhoneName()) : "").build());
|
||||
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue(online ? (System.currentTimeMillis() + "|" + session.getPlatform() + "|" + session.getClientID() + "|" + session.getPhoneName()) : "").build(), session.clientID);
|
||||
} else {
|
||||
String value = null;
|
||||
for (MemorySessionStore.Session s : m_Server.getStore().sessionsStore().sessionForUser(session.username)) {
|
||||
@@ -2138,11 +2138,11 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
WFCMessage.UserSettingEntry pcentry = getUserSetting(session.getUsername(), kUserSettingPCOnline, "PC");
|
||||
if (value != null) {
|
||||
if (pcentry == null || StringUtil.isNullOrEmpty(pcentry.getValue())) {
|
||||
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue(value).build());
|
||||
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue(value).build(), session.clientID);
|
||||
}
|
||||
} else {
|
||||
if (pcentry != null && !StringUtil.isNullOrEmpty(pcentry.getValue())) {
|
||||
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue("").build());
|
||||
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue("").build(), session.clientID);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3143,7 +3143,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
}
|
||||
|
||||
@Override
|
||||
public long updateUserSettings(String userId, WFCMessage.ModifyUserSettingReq request) {
|
||||
public long updateUserSettings(String userId, WFCMessage.ModifyUserSettingReq request, String clientId) {
|
||||
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||
MultiMap<String, WFCMessage.UserSettingEntry> userSettingMap = hzInstance.getMultiMap(USER_SETTING);
|
||||
|
||||
@@ -3183,7 +3183,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
} else if(request.getScope() == UserSettingScope.kUserSettingHiddenNotificationDetail) {
|
||||
userPushHiddenDetail.remove(userId);
|
||||
}
|
||||
IMHandler.getPublisher().publishNotification(IMTopic.NotifyUserSettingTopic, userId, updateDt);
|
||||
IMHandler.getPublisher().publishNotification(IMTopic.NotifyUserSettingTopic, userId, updateDt, clientId);
|
||||
return updateDt;
|
||||
}
|
||||
|
||||
|
||||
@@ -190,7 +190,7 @@ public interface IMessagesStore {
|
||||
ErrorCode getUserSettings(String userId, long version, WFCMessage.GetUserSettingResult.Builder builder);
|
||||
WFCMessage.UserSettingEntry getUserSetting(String userId, int scope, String key);
|
||||
List<WFCMessage.UserSettingEntry> getUserSetting(String userId, int scope);
|
||||
long updateUserSettings(String userId, WFCMessage.ModifyUserSettingReq request);
|
||||
long updateUserSettings(String userId, WFCMessage.ModifyUserSettingReq request, String clientId);
|
||||
void clearUserSettings(String userId);
|
||||
boolean getUserGlobalSilent(String userId);
|
||||
|
||||
|
||||
@@ -465,14 +465,21 @@ public class MessagesPublisher {
|
||||
publishNotification(topic, receiver, head, null, null);
|
||||
}
|
||||
|
||||
public void publishNotification(String topic, String receiver, long head, String fromUser, String pushContent) {
|
||||
publishNotificationLocal(topic, receiver, head, fromUser, pushContent);
|
||||
public void publishNotification(String topic, String receiver, long head, String exceptClientId) {
|
||||
publishNotification(topic, receiver, head, null, null, exceptClientId);
|
||||
}
|
||||
|
||||
void publishNotificationLocal(String topic, String receiver, long head, String fromUser, String pushContent) {
|
||||
public void publishNotification(String topic, String receiver, long head, String fromUser, String pushContent) {
|
||||
publishNotification(topic, receiver, head, fromUser, pushContent, null);
|
||||
}
|
||||
public void publishNotification(String topic, String receiver, long head, String fromUser, String pushContent, String exceptClientId) {
|
||||
Collection<Session> sessions = m_sessionsStore.sessionForUser(receiver);
|
||||
String fromUserName = null;
|
||||
for (Session targetSession : sessions) {
|
||||
if(targetSession.getClientID().equals(exceptClientId)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
boolean needPush = !StringUtil.isNullOrEmpty(pushContent);
|
||||
boolean targetIsActive = this.connectionDescriptors.isConnected(targetSession.getClientSession().clientID);
|
||||
if (targetIsActive) {
|
||||
|
||||
Reference in New Issue
Block a user