mobile: disable notifications on group events, make member role default (#1158)

* ios: disable notifications on group events, make member role default

* same for android

* change mute criteria

* update
This commit is contained in:
Evgeny Poberezkin
2022-10-01 14:46:48 +01:00
committed by GitHub
parent a3bd51a5fa
commit 06e46b0bea
6 changed files with 37 additions and 4 deletions
@@ -999,6 +999,22 @@ data class ChatItem (
else -> false
}
val isMutedMemberEvent: Boolean get() =
when (content) {
is CIContent.RcvGroupEventContent ->
when (content.rcvGroupEvent) {
is RcvGroupEvent.GroupUpdated -> true
is RcvGroupEvent.MemberConnected -> true
is RcvGroupEvent.UserDeleted -> false
is RcvGroupEvent.GroupDeleted -> false
is RcvGroupEvent.MemberAdded -> false
is RcvGroupEvent.MemberLeft -> false
is RcvGroupEvent.MemberDeleted -> false
}
is CIContent.SndGroupEventContent -> true
else -> false
}
fun withStatus(status: CIStatus): ChatItem = this.copy(meta = meta.copy(itemStatus = status))
companion object {
@@ -888,7 +888,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a
if (cItem.content.msgContent is MsgContent.MCImage && file != null && file.fileSize <= MAX_IMAGE_SIZE_AUTO_RCV && appPrefs.privacyAcceptImages.get()) {
withApi { receiveFile(file.fileId) }
}
if (!cItem.chatDir.sent && !cItem.isCall && (!isAppOnForeground(appContext) || chatModel.chatId.value != cInfo.id)) {
if (!cItem.chatDir.sent && !cItem.isCall && !cItem.isMutedMemberEvent && (!isAppOnForeground(appContext) || chatModel.chatId.value != cInfo.id)) {
ntfManager.notifyMessageReceived(cInfo, cItem)
}
}
@@ -33,7 +33,7 @@ import chat.simplex.app.views.helpers.*
@Composable
fun AddGroupMembersView(groupInfo: GroupInfo, chatModel: ChatModel, close: () -> Unit) {
val selectedContacts = remember { mutableStateListOf<Long>() }
val selectedRole = remember { mutableStateOf(GroupMemberRole.Admin) }
val selectedRole = remember { mutableStateOf(GroupMemberRole.Member) }
BackHandler(onBack = close)
AddGroupMembersLayout(
+1 -1
View File
@@ -876,7 +876,7 @@ func processReceivedMsg(_ res: ChatResponse) async {
await receiveFile(fileId: file.fileId)
}
}
if !cItem.chatDir.sent && !cItem.isCall() {
if !cItem.chatDir.sent && !cItem.isCall() && !cItem.isMutedMemberEvent {
NtfManager.shared.notifyMessageReceived(cInfo, cItem)
}
case let .chatItemStatusUpdated(aChatItem):
@@ -18,7 +18,7 @@ struct AddGroupMembersView: View {
var showFooterCounter: Bool = true
var addedMembersCb: ((Set<Int64>) -> Void)? = nil
@State private var selectedContacts = Set<Int64>()
@State private var selectedRole: GroupMemberRole = .admin
@State private var selectedRole: GroupMemberRole = .member
@State private var alert: AddGroupMembersAlert?
private enum AddGroupMembersAlert: Identifiable {
+17
View File
@@ -892,6 +892,23 @@ public struct ChatItem: Identifiable, Decodable {
}
}
public var isMutedMemberEvent: Bool {
switch content {
case let .rcvGroupEvent(event):
switch event {
case .groupUpdated: return true
case .memberConnected: return true
case .userDeleted: return false
case .groupDeleted: return false
case .memberAdded: return false
case .memberLeft: return false
case .memberDeleted: return false
}
case .sndGroupEvent: return true
default: return true
}
}
public var memberDisplayName: String? {
get {
if case let .groupRcv(groupMember) = chatDir {