Merge pull request #1851 from nextcloud/bugfix/1848/showSystemMessageAddedGroup

add groups and circles to system messages ("add"+"remove")
This commit is contained in:
Tim Krueger 2022-03-09 10:37:19 +01:00 committed by GitHub
commit 70a30f146a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 42 additions and 10 deletions

View File

@ -79,13 +79,18 @@ public class MagicSystemMessageViewHolder extends MessageHolders.IncomingTextMes
if (message.messageParameters != null && message.messageParameters.size() > 0) { if (message.messageParameters != null && message.messageParameters.size() > 0) {
for (String key : message.messageParameters.keySet()) { for (String key : message.messageParameters.keySet()) {
Map<String, String> individualMap = message.messageParameters.get(key); Map<String, String> individualMap = message.messageParameters.get(key);
if (individualMap != null &&
("user".equals(individualMap.get("type")) || if (individualMap != null && individualMap.containsKey("name")) {
String searchText;
if ("user".equals(individualMap.get("type")) ||
"guest".equals(individualMap.get("type")) || "guest".equals(individualMap.get("type")) ||
"call".equals(individualMap.get("type")) "call".equals(individualMap.get("type"))
)) { ) {
messageString = DisplayUtils.searchAndColor( searchText = "@" + individualMap.get("name");
messageString, "@" + individualMap.get("name"), mentionColor); } else {
searchText = individualMap.get("name");
}
messageString = DisplayUtils.searchAndColor(messageString, searchText, mentionColor);
} }
} }
} }

View File

@ -611,6 +611,9 @@ public class ChatMessage implements MessageContentType, MessageContentType.Image
VOICE_MESSAGE VOICE_MESSAGE
} }
/**
* see https://nextcloud-talk.readthedocs.io/en/latest/chat/#system-messages
*/
public enum SystemMessageType { public enum SystemMessageType {
DUMMY, DUMMY,
CONVERSATION_CREATED, CONVERSATION_CREATED,
@ -638,6 +641,10 @@ public class ChatMessage implements MessageContentType, MessageContentType.Image
PASSWORD_REMOVED, PASSWORD_REMOVED,
USER_ADDED, USER_ADDED,
USER_REMOVED, USER_REMOVED,
GROUP_ADDED,
GROUP_REMOVED,
CIRCLE_ADDED,
CIRCLE_REMOVED,
MODERATOR_PROMOTED, MODERATOR_PROMOTED,
MODERATOR_DEMOTED, MODERATOR_DEMOTED,
GUEST_MODERATOR_PROMOTED, GUEST_MODERATOR_PROMOTED,

View File

@ -41,6 +41,8 @@ class ChatUtils {
} else { } else {
individualHashMap["link"].toString() individualHashMap["link"].toString()
} }
} else {
resultMessage = individualHashMap?.get("name")?.let { resultMessage?.replace("{$key}", it) }
} }
} }
} }

View File

@ -33,6 +33,8 @@ import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_LE
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_MISSED import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_MISSED
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_STARTED import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_STARTED
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_TRIED import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_TRIED
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CIRCLE_ADDED
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CIRCLE_REMOVED
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CLEARED_CHAT import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CLEARED_CHAT
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CONVERSATION_CREATED import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CONVERSATION_CREATED
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CONVERSATION_RENAMED import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CONVERSATION_RENAMED
@ -40,6 +42,8 @@ import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.DESCRIP
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.DESCRIPTION_SET import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.DESCRIPTION_SET
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.DUMMY import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.DUMMY
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.FILE_SHARED import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.FILE_SHARED
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.GROUP_ADDED
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.GROUP_REMOVED
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.GUESTS_ALLOWED import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.GUESTS_ALLOWED
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.GUESTS_DISALLOWED import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.GUESTS_DISALLOWED
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.GUEST_MODERATOR_DEMOTED import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.GUEST_MODERATOR_DEMOTED
@ -67,6 +71,8 @@ import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.USER_AD
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.USER_REMOVED import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.USER_REMOVED
/* /*
* see https://nextcloud-talk.readthedocs.io/en/latest/chat/#system-messages
*
* `conversation_created` - {actor} created the conversation * `conversation_created` - {actor} created the conversation
* `conversation_renamed` - {actor} renamed the conversation from "foo" to "bar" * `conversation_renamed` - {actor} renamed the conversation from "foo" to "bar"
* `description_set` - {actor} set the description to "Hello world" * `description_set` - {actor} set the description to "Hello world"
@ -92,6 +98,10 @@ import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.USER_RE
* `password_removed` - {actor} removed the password for the conversation * `password_removed` - {actor} removed the password for the conversation
* `user_added` - {actor} added {user} to the conversation * `user_added` - {actor} added {user} to the conversation
* `user_removed` - {actor} removed {user} from the conversation * `user_removed` - {actor} removed {user} from the conversation
* `group_added` - {actor} added group {group} to the conversation
* `group_removed` - {actor} removed group {group} from the conversation
* `circle_added` - {actor} added circle {circle} to the conversation
* `circle_removed` - {actor} removed circle {circle} from the conversation
* `moderator_promoted` - {actor} promoted {user} to moderator * `moderator_promoted` - {actor} promoted {user} to moderator
* `moderator_demoted` - {actor} demoted {user} from moderator * `moderator_demoted` - {actor} demoted {user} from moderator
* `guest_moderator_promoted` - {actor} promoted {user} to moderator * `guest_moderator_promoted` - {actor} promoted {user} to moderator
@ -134,6 +144,10 @@ class EnumSystemMessageTypeConverter : StringBasedTypeConverter<ChatMessage.Syst
"password_removed" -> return PASSWORD_REMOVED "password_removed" -> return PASSWORD_REMOVED
"user_added" -> return USER_ADDED "user_added" -> return USER_ADDED
"user_removed" -> return USER_REMOVED "user_removed" -> return USER_REMOVED
"group_added" -> return GROUP_ADDED
"group_removed" -> return GROUP_REMOVED
"circle_added" -> return CIRCLE_ADDED
"circle_removed" -> return CIRCLE_REMOVED
"moderator_promoted" -> return MODERATOR_PROMOTED "moderator_promoted" -> return MODERATOR_PROMOTED
"moderator_demoted" -> return MODERATOR_DEMOTED "moderator_demoted" -> return MODERATOR_DEMOTED
"guest_moderator_promoted" -> return GUEST_MODERATOR_PROMOTED "guest_moderator_promoted" -> return GUEST_MODERATOR_PROMOTED
@ -183,6 +197,10 @@ class EnumSystemMessageTypeConverter : StringBasedTypeConverter<ChatMessage.Syst
PASSWORD_REMOVED -> return "password_removed" PASSWORD_REMOVED -> return "password_removed"
USER_ADDED -> return "user_added" USER_ADDED -> return "user_added"
USER_REMOVED -> return "user_removed" USER_REMOVED -> return "user_removed"
GROUP_ADDED -> return "group_added"
GROUP_REMOVED -> return "group_removed"
CIRCLE_ADDED -> return "circle_added"
CIRCLE_REMOVED -> return "circle_removed"
MODERATOR_PROMOTED -> return "moderator_promoted" MODERATOR_PROMOTED -> return "moderator_promoted"
MODERATOR_DEMOTED -> return "moderator_demoted" MODERATOR_DEMOTED -> return "moderator_demoted"
GUEST_MODERATOR_PROMOTED -> return "guest_moderator_promoted" GUEST_MODERATOR_PROMOTED -> return "guest_moderator_promoted"