ui: update types for notification and member settings (#3201)
This commit is contained in:
parent
8ff6b392c2
commit
4df8ea2e78
@ -965,7 +965,7 @@ struct ChatView: View {
|
|||||||
|
|
||||||
func toggleNotifications(_ chat: Chat, enableNtfs: Bool) {
|
func toggleNotifications(_ chat: Chat, enableNtfs: Bool) {
|
||||||
var chatSettings = chat.chatInfo.chatSettings ?? ChatSettings.defaults
|
var chatSettings = chat.chatInfo.chatSettings ?? ChatSettings.defaults
|
||||||
chatSettings.enableNtfs = enableNtfs
|
chatSettings.enableNtfs = enableNtfs ? .all : .none
|
||||||
updateChatSettings(chat, chatSettings: chatSettings)
|
updateChatSettings(chat, chatSettings: chatSettings)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,6 +85,11 @@
|
|||||||
5CA059ED279559F40002BEB4 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CA059C4279559F40002BEB4 /* ContentView.swift */; };
|
5CA059ED279559F40002BEB4 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CA059C4279559F40002BEB4 /* ContentView.swift */; };
|
||||||
5CA059EF279559F40002BEB4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5CA059C5279559F40002BEB4 /* Assets.xcassets */; };
|
5CA059EF279559F40002BEB4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5CA059C5279559F40002BEB4 /* Assets.xcassets */; };
|
||||||
5CA7DFC329302AF000F7FDDE /* AppSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CA7DFC229302AF000F7FDDE /* AppSheet.swift */; };
|
5CA7DFC329302AF000F7FDDE /* AppSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CA7DFC229302AF000F7FDDE /* AppSheet.swift */; };
|
||||||
|
5CA8D0162AD746C8001FD661 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CA8D0112AD746C8001FD661 /* libgmpxx.a */; };
|
||||||
|
5CA8D0172AD746C8001FD661 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CA8D0122AD746C8001FD661 /* libffi.a */; };
|
||||||
|
5CA8D0182AD746C8001FD661 /* libHSsimplex-chat-5.4.0.1-7lTZkX9ojv2DbehL2eOY1b.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CA8D0132AD746C8001FD661 /* libHSsimplex-chat-5.4.0.1-7lTZkX9ojv2DbehL2eOY1b.a */; };
|
||||||
|
5CA8D0192AD746C8001FD661 /* libHSsimplex-chat-5.4.0.1-7lTZkX9ojv2DbehL2eOY1b-ghc8.10.7.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CA8D0142AD746C8001FD661 /* libHSsimplex-chat-5.4.0.1-7lTZkX9ojv2DbehL2eOY1b-ghc8.10.7.a */; };
|
||||||
|
5CA8D01A2AD746C8001FD661 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CA8D0152AD746C8001FD661 /* libgmp.a */; };
|
||||||
5CADE79A29211BB900072E13 /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CADE79929211BB900072E13 /* PreferencesView.swift */; };
|
5CADE79A29211BB900072E13 /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CADE79929211BB900072E13 /* PreferencesView.swift */; };
|
||||||
5CADE79C292131E900072E13 /* ContactPreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CADE79B292131E900072E13 /* ContactPreferencesView.swift */; };
|
5CADE79C292131E900072E13 /* ContactPreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CADE79B292131E900072E13 /* ContactPreferencesView.swift */; };
|
||||||
5CB0BA882826CB3A00B3292C /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CB0BA862826CB3A00B3292C /* InfoPlist.strings */; };
|
5CB0BA882826CB3A00B3292C /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CB0BA862826CB3A00B3292C /* InfoPlist.strings */; };
|
||||||
@ -114,11 +119,6 @@
|
|||||||
5CC1C99527A6CF7F000D9FF6 /* ShareSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC1C99427A6CF7F000D9FF6 /* ShareSheet.swift */; };
|
5CC1C99527A6CF7F000D9FF6 /* ShareSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC1C99427A6CF7F000D9FF6 /* ShareSheet.swift */; };
|
||||||
5CC2C0FC2809BF11000C35E3 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CC2C0FA2809BF11000C35E3 /* Localizable.strings */; };
|
5CC2C0FC2809BF11000C35E3 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CC2C0FA2809BF11000C35E3 /* Localizable.strings */; };
|
||||||
5CC2C0FF2809BF11000C35E3 /* SimpleX--iOS--InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CC2C0FD2809BF11000C35E3 /* SimpleX--iOS--InfoPlist.strings */; };
|
5CC2C0FF2809BF11000C35E3 /* SimpleX--iOS--InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CC2C0FD2809BF11000C35E3 /* SimpleX--iOS--InfoPlist.strings */; };
|
||||||
5CC739972AD44E2E009470A9 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC739922AD44E2E009470A9 /* libgmp.a */; };
|
|
||||||
5CC739982AD44E2E009470A9 /* libHSsimplex-chat-5.4.0.0-JjDpmMNHLrsHjXbdowMF4F-ghc8.10.7.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC739932AD44E2E009470A9 /* libHSsimplex-chat-5.4.0.0-JjDpmMNHLrsHjXbdowMF4F-ghc8.10.7.a */; };
|
|
||||||
5CC739992AD44E2E009470A9 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC739942AD44E2E009470A9 /* libffi.a */; };
|
|
||||||
5CC7399A2AD44E2E009470A9 /* libHSsimplex-chat-5.4.0.0-JjDpmMNHLrsHjXbdowMF4F.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC739952AD44E2E009470A9 /* libHSsimplex-chat-5.4.0.0-JjDpmMNHLrsHjXbdowMF4F.a */; };
|
|
||||||
5CC7399B2AD44E2E009470A9 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC739962AD44E2E009470A9 /* libgmpxx.a */; };
|
|
||||||
5CC868F329EB540C0017BBFD /* CIRcvDecryptionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC868F229EB540C0017BBFD /* CIRcvDecryptionError.swift */; };
|
5CC868F329EB540C0017BBFD /* CIRcvDecryptionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC868F229EB540C0017BBFD /* CIRcvDecryptionError.swift */; };
|
||||||
5CCB939C297EFCB100399E78 /* NavStackCompat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CCB939B297EFCB100399E78 /* NavStackCompat.swift */; };
|
5CCB939C297EFCB100399E78 /* NavStackCompat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CCB939B297EFCB100399E78 /* NavStackCompat.swift */; };
|
||||||
5CCD403427A5F6DF00368C90 /* AddContactView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CCD403327A5F6DF00368C90 /* AddContactView.swift */; };
|
5CCD403427A5F6DF00368C90 /* AddContactView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CCD403327A5F6DF00368C90 /* AddContactView.swift */; };
|
||||||
@ -358,6 +358,11 @@
|
|||||||
5CA85D0A297218AA0095AF72 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = "<group>"; };
|
5CA85D0A297218AA0095AF72 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
5CA85D0C297219EF0095AF72 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = "it.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = "<group>"; };
|
5CA85D0C297219EF0095AF72 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = "it.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = "<group>"; };
|
||||||
5CA85D0D297219EF0095AF72 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
5CA85D0D297219EF0095AF72 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||||
|
5CA8D0112AD746C8001FD661 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = "<group>"; };
|
||||||
|
5CA8D0122AD746C8001FD661 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = "<group>"; };
|
||||||
|
5CA8D0132AD746C8001FD661 /* libHSsimplex-chat-5.4.0.1-7lTZkX9ojv2DbehL2eOY1b.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.1-7lTZkX9ojv2DbehL2eOY1b.a"; sourceTree = "<group>"; };
|
||||||
|
5CA8D0142AD746C8001FD661 /* libHSsimplex-chat-5.4.0.1-7lTZkX9ojv2DbehL2eOY1b-ghc8.10.7.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.1-7lTZkX9ojv2DbehL2eOY1b-ghc8.10.7.a"; sourceTree = "<group>"; };
|
||||||
|
5CA8D0152AD746C8001FD661 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
|
||||||
5CAB912529E93F9400F34A95 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = "<group>"; };
|
5CAB912529E93F9400F34A95 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
5CAC41182A192D8400C331A2 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
|
5CAC41182A192D8400C331A2 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
5CAC411A2A192DE800C331A2 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = "ja.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = "<group>"; };
|
5CAC411A2A192DE800C331A2 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = "ja.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = "<group>"; };
|
||||||
@ -395,11 +400,6 @@
|
|||||||
5CC1C99427A6CF7F000D9FF6 /* ShareSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareSheet.swift; sourceTree = "<group>"; };
|
5CC1C99427A6CF7F000D9FF6 /* ShareSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareSheet.swift; sourceTree = "<group>"; };
|
||||||
5CC2C0FB2809BF11000C35E3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
|
5CC2C0FB2809BF11000C35E3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
5CC2C0FE2809BF11000C35E3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = "ru.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = "<group>"; };
|
5CC2C0FE2809BF11000C35E3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = "ru.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = "<group>"; };
|
||||||
5CC739922AD44E2E009470A9 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
|
|
||||||
5CC739932AD44E2E009470A9 /* libHSsimplex-chat-5.4.0.0-JjDpmMNHLrsHjXbdowMF4F-ghc8.10.7.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.0-JjDpmMNHLrsHjXbdowMF4F-ghc8.10.7.a"; sourceTree = "<group>"; };
|
|
||||||
5CC739942AD44E2E009470A9 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = "<group>"; };
|
|
||||||
5CC739952AD44E2E009470A9 /* libHSsimplex-chat-5.4.0.0-JjDpmMNHLrsHjXbdowMF4F.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.0-JjDpmMNHLrsHjXbdowMF4F.a"; sourceTree = "<group>"; };
|
|
||||||
5CC739962AD44E2E009470A9 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = "<group>"; };
|
|
||||||
5CC868F229EB540C0017BBFD /* CIRcvDecryptionError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIRcvDecryptionError.swift; sourceTree = "<group>"; };
|
5CC868F229EB540C0017BBFD /* CIRcvDecryptionError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIRcvDecryptionError.swift; sourceTree = "<group>"; };
|
||||||
5CCB939B297EFCB100399E78 /* NavStackCompat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavStackCompat.swift; sourceTree = "<group>"; };
|
5CCB939B297EFCB100399E78 /* NavStackCompat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavStackCompat.swift; sourceTree = "<group>"; };
|
||||||
5CCD403327A5F6DF00368C90 /* AddContactView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddContactView.swift; sourceTree = "<group>"; };
|
5CCD403327A5F6DF00368C90 /* AddContactView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddContactView.swift; sourceTree = "<group>"; };
|
||||||
@ -507,13 +507,13 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
5CC739982AD44E2E009470A9 /* libHSsimplex-chat-5.4.0.0-JjDpmMNHLrsHjXbdowMF4F-ghc8.10.7.a in Frameworks */,
|
5CA8D0162AD746C8001FD661 /* libgmpxx.a in Frameworks */,
|
||||||
|
5CA8D01A2AD746C8001FD661 /* libgmp.a in Frameworks */,
|
||||||
|
5CA8D0182AD746C8001FD661 /* libHSsimplex-chat-5.4.0.1-7lTZkX9ojv2DbehL2eOY1b.a in Frameworks */,
|
||||||
|
5CA8D0192AD746C8001FD661 /* libHSsimplex-chat-5.4.0.1-7lTZkX9ojv2DbehL2eOY1b-ghc8.10.7.a in Frameworks */,
|
||||||
5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */,
|
5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */,
|
||||||
5CC739972AD44E2E009470A9 /* libgmp.a in Frameworks */,
|
|
||||||
5CC7399A2AD44E2E009470A9 /* libHSsimplex-chat-5.4.0.0-JjDpmMNHLrsHjXbdowMF4F.a in Frameworks */,
|
|
||||||
5CC739992AD44E2E009470A9 /* libffi.a in Frameworks */,
|
|
||||||
5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */,
|
5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */,
|
||||||
5CC7399B2AD44E2E009470A9 /* libgmpxx.a in Frameworks */,
|
5CA8D0172AD746C8001FD661 /* libffi.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -574,11 +574,11 @@
|
|||||||
5C764E5C279C70B7000C6508 /* Libraries */ = {
|
5C764E5C279C70B7000C6508 /* Libraries */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
5CC739942AD44E2E009470A9 /* libffi.a */,
|
5CA8D0122AD746C8001FD661 /* libffi.a */,
|
||||||
5CC739922AD44E2E009470A9 /* libgmp.a */,
|
5CA8D0152AD746C8001FD661 /* libgmp.a */,
|
||||||
5CC739962AD44E2E009470A9 /* libgmpxx.a */,
|
5CA8D0112AD746C8001FD661 /* libgmpxx.a */,
|
||||||
5CC739932AD44E2E009470A9 /* libHSsimplex-chat-5.4.0.0-JjDpmMNHLrsHjXbdowMF4F-ghc8.10.7.a */,
|
5CA8D0142AD746C8001FD661 /* libHSsimplex-chat-5.4.0.1-7lTZkX9ojv2DbehL2eOY1b-ghc8.10.7.a */,
|
||||||
5CC739952AD44E2E009470A9 /* libHSsimplex-chat-5.4.0.0-JjDpmMNHLrsHjXbdowMF4F.a */,
|
5CA8D0132AD746C8001FD661 /* libHSsimplex-chat-5.4.0.1-7lTZkX9ojv2DbehL2eOY1b.a */,
|
||||||
);
|
);
|
||||||
path = Libraries;
|
path = Libraries;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -1182,17 +1182,23 @@ public struct KeepAliveOpts: Codable, Equatable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public struct ChatSettings: Codable {
|
public struct ChatSettings: Codable {
|
||||||
public var enableNtfs: Bool
|
public var enableNtfs: MsgFilter
|
||||||
public var sendRcpts: Bool?
|
public var sendRcpts: Bool?
|
||||||
public var favorite: Bool
|
public var favorite: Bool
|
||||||
|
|
||||||
public init(enableNtfs: Bool, sendRcpts: Bool?, favorite: Bool) {
|
public init(enableNtfs: MsgFilter, sendRcpts: Bool?, favorite: Bool) {
|
||||||
self.enableNtfs = enableNtfs
|
self.enableNtfs = enableNtfs
|
||||||
self.sendRcpts = sendRcpts
|
self.sendRcpts = sendRcpts
|
||||||
self.favorite = favorite
|
self.favorite = favorite
|
||||||
}
|
}
|
||||||
|
|
||||||
public static let defaults: ChatSettings = ChatSettings(enableNtfs: true, sendRcpts: nil, favorite: false)
|
public static let defaults: ChatSettings = ChatSettings(enableNtfs: .all, sendRcpts: nil, favorite: false)
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum MsgFilter: String, Codable {
|
||||||
|
case none
|
||||||
|
case all
|
||||||
|
case mentions
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct UserMsgReceiptSettings: Codable {
|
public struct UserMsgReceiptSettings: Codable {
|
||||||
|
@ -1292,7 +1292,7 @@ public enum ChatInfo: Identifiable, Decodable, NamedChat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public var ntfsEnabled: Bool {
|
public var ntfsEnabled: Bool {
|
||||||
self.chatSettings?.enableNtfs ?? false
|
self.chatSettings?.enableNtfs == .all
|
||||||
}
|
}
|
||||||
|
|
||||||
public var chatSettings: ChatSettings? {
|
public var chatSettings: ChatSettings? {
|
||||||
@ -1758,6 +1758,7 @@ public struct GroupMember: Identifiable, Decodable {
|
|||||||
public var memberRole: GroupMemberRole
|
public var memberRole: GroupMemberRole
|
||||||
public var memberCategory: GroupMemberCategory
|
public var memberCategory: GroupMemberCategory
|
||||||
public var memberStatus: GroupMemberStatus
|
public var memberStatus: GroupMemberStatus
|
||||||
|
public var memberSettings: GroupMemberSettings
|
||||||
public var invitedBy: InvitedBy
|
public var invitedBy: InvitedBy
|
||||||
public var localDisplayName: ContactName
|
public var localDisplayName: ContactName
|
||||||
public var memberProfile: LocalProfile
|
public var memberProfile: LocalProfile
|
||||||
@ -1851,6 +1852,7 @@ public struct GroupMember: Identifiable, Decodable {
|
|||||||
memberRole: .admin,
|
memberRole: .admin,
|
||||||
memberCategory: .inviteeMember,
|
memberCategory: .inviteeMember,
|
||||||
memberStatus: .memComplete,
|
memberStatus: .memComplete,
|
||||||
|
memberSettings: GroupMemberSettings(showMessages: true),
|
||||||
invitedBy: .user,
|
invitedBy: .user,
|
||||||
localDisplayName: "alice",
|
localDisplayName: "alice",
|
||||||
memberProfile: LocalProfile.sampleData,
|
memberProfile: LocalProfile.sampleData,
|
||||||
@ -1860,6 +1862,10 @@ public struct GroupMember: Identifiable, Decodable {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public struct GroupMemberSettings: Decodable {
|
||||||
|
var showMessages: Bool
|
||||||
|
}
|
||||||
|
|
||||||
public struct GroupMemberRef: Decodable {
|
public struct GroupMemberRef: Decodable {
|
||||||
var groupMemberId: Int64
|
var groupMemberId: Int64
|
||||||
var profile: Profile
|
var profile: Profile
|
||||||
@ -1983,8 +1989,8 @@ public enum ConnectionEntity: Decodable {
|
|||||||
|
|
||||||
public var ntfsEnabled: Bool {
|
public var ntfsEnabled: Bool {
|
||||||
switch self {
|
switch self {
|
||||||
case let .rcvDirectMsgConnection(contact): return contact?.chatSettings.enableNtfs ?? false
|
case let .rcvDirectMsgConnection(contact): return contact?.chatSettings.enableNtfs == .all
|
||||||
case let .rcvGroupMsgConnection(groupInfo, _): return groupInfo.chatSettings.enableNtfs
|
case let .rcvGroupMsgConnection(groupInfo, _): return groupInfo.chatSettings.enableNtfs == .all
|
||||||
case .sndFileConnection: return false
|
case .sndFileConnection: return false
|
||||||
case .rcvFileConnection: return false
|
case .rcvFileConnection: return false
|
||||||
case let .userContactConnection(userContact): return userContact.groupId == nil
|
case let .userContactConnection(userContact): return userContact.groupId == nil
|
||||||
|
@ -12,7 +12,6 @@ import chat.simplex.common.ui.theme.*
|
|||||||
import chat.simplex.common.views.call.*
|
import chat.simplex.common.views.call.*
|
||||||
import chat.simplex.common.views.chat.ComposeState
|
import chat.simplex.common.views.chat.ComposeState
|
||||||
import chat.simplex.common.views.helpers.*
|
import chat.simplex.common.views.helpers.*
|
||||||
import chat.simplex.common.views.onboarding.OnboardingStage
|
|
||||||
import chat.simplex.res.MR
|
import chat.simplex.res.MR
|
||||||
import dev.icerock.moko.resources.ImageResource
|
import dev.icerock.moko.resources.ImageResource
|
||||||
import dev.icerock.moko.resources.StringResource
|
import dev.icerock.moko.resources.StringResource
|
||||||
@ -726,7 +725,7 @@ sealed class ChatInfo: SomeChat, NamedChat {
|
|||||||
override val apiId get() = contactConnection.apiId
|
override val apiId get() = contactConnection.apiId
|
||||||
override val ready get() = contactConnection.ready
|
override val ready get() = contactConnection.ready
|
||||||
override val sendMsgEnabled get() = contactConnection.sendMsgEnabled
|
override val sendMsgEnabled get() = contactConnection.sendMsgEnabled
|
||||||
override val ntfsEnabled get() = contactConnection.incognito
|
override val ntfsEnabled get() = false
|
||||||
override val incognito get() = contactConnection.incognito
|
override val incognito get() = contactConnection.incognito
|
||||||
override fun featureEnabled(feature: ChatFeature) = contactConnection.featureEnabled(feature)
|
override fun featureEnabled(feature: ChatFeature) = contactConnection.featureEnabled(feature)
|
||||||
override val timedMessagesTTL: Int? get() = contactConnection.timedMessagesTTL
|
override val timedMessagesTTL: Int? get() = contactConnection.timedMessagesTTL
|
||||||
@ -822,7 +821,7 @@ data class Contact(
|
|||||||
(ready && active && !(activeConn.connectionStats?.ratchetSyncSendProhibited ?: false))
|
(ready && active && !(activeConn.connectionStats?.ratchetSyncSendProhibited ?: false))
|
||||||
|| nextSendGrpInv
|
|| nextSendGrpInv
|
||||||
val nextSendGrpInv get() = contactGroupMemberId != null && !contactGrpInvSent
|
val nextSendGrpInv get() = contactGroupMemberId != null && !contactGrpInvSent
|
||||||
override val ntfsEnabled get() = chatSettings.enableNtfs
|
override val ntfsEnabled get() = chatSettings.enableNtfs == MsgFilter.All
|
||||||
override val incognito get() = contactConnIncognito
|
override val incognito get() = contactConnIncognito
|
||||||
override fun featureEnabled(feature: ChatFeature) = when (feature) {
|
override fun featureEnabled(feature: ChatFeature) = when (feature) {
|
||||||
ChatFeature.TimedMessages -> mergedPreferences.timedMessages.enabled.forUser
|
ChatFeature.TimedMessages -> mergedPreferences.timedMessages.enabled.forUser
|
||||||
@ -869,7 +868,7 @@ data class Contact(
|
|||||||
activeConn = Connection.sampleData,
|
activeConn = Connection.sampleData,
|
||||||
contactUsed = true,
|
contactUsed = true,
|
||||||
contactStatus = ContactStatus.Active,
|
contactStatus = ContactStatus.Active,
|
||||||
chatSettings = ChatSettings(enableNtfs = true, sendRcpts = null, favorite = false),
|
chatSettings = ChatSettings(enableNtfs = MsgFilter.All, sendRcpts = null, favorite = false),
|
||||||
userPreferences = ChatPreferences.sampleData,
|
userPreferences = ChatPreferences.sampleData,
|
||||||
mergedPreferences = ContactUserPreferences.sampleData,
|
mergedPreferences = ContactUserPreferences.sampleData,
|
||||||
createdAt = Clock.System.now(),
|
createdAt = Clock.System.now(),
|
||||||
@ -1009,7 +1008,7 @@ data class GroupInfo (
|
|||||||
override val apiId get() = groupId
|
override val apiId get() = groupId
|
||||||
override val ready get() = membership.memberActive
|
override val ready get() = membership.memberActive
|
||||||
override val sendMsgEnabled get() = membership.memberActive
|
override val sendMsgEnabled get() = membership.memberActive
|
||||||
override val ntfsEnabled get() = chatSettings.enableNtfs
|
override val ntfsEnabled get() = chatSettings.enableNtfs == MsgFilter.All
|
||||||
override val incognito get() = membership.memberIncognito
|
override val incognito get() = membership.memberIncognito
|
||||||
override fun featureEnabled(feature: ChatFeature) = when (feature) {
|
override fun featureEnabled(feature: ChatFeature) = when (feature) {
|
||||||
ChatFeature.TimedMessages -> fullGroupPreferences.timedMessages.on
|
ChatFeature.TimedMessages -> fullGroupPreferences.timedMessages.on
|
||||||
@ -1041,7 +1040,7 @@ data class GroupInfo (
|
|||||||
fullGroupPreferences = FullGroupPreferences.sampleData,
|
fullGroupPreferences = FullGroupPreferences.sampleData,
|
||||||
membership = GroupMember.sampleData,
|
membership = GroupMember.sampleData,
|
||||||
hostConnCustomUserProfileId = null,
|
hostConnCustomUserProfileId = null,
|
||||||
chatSettings = ChatSettings(enableNtfs = true, sendRcpts = null, favorite = false),
|
chatSettings = ChatSettings(enableNtfs = MsgFilter.All, sendRcpts = null, favorite = false),
|
||||||
createdAt = Clock.System.now(),
|
createdAt = Clock.System.now(),
|
||||||
updatedAt = Clock.System.now()
|
updatedAt = Clock.System.now()
|
||||||
)
|
)
|
||||||
@ -1073,6 +1072,7 @@ data class GroupMember (
|
|||||||
var memberRole: GroupMemberRole,
|
var memberRole: GroupMemberRole,
|
||||||
var memberCategory: GroupMemberCategory,
|
var memberCategory: GroupMemberCategory,
|
||||||
var memberStatus: GroupMemberStatus,
|
var memberStatus: GroupMemberStatus,
|
||||||
|
var memberSettings: GroupMemberSettings,
|
||||||
var invitedBy: InvitedBy,
|
var invitedBy: InvitedBy,
|
||||||
val localDisplayName: String,
|
val localDisplayName: String,
|
||||||
val memberProfile: LocalProfile,
|
val memberProfile: LocalProfile,
|
||||||
@ -1140,6 +1140,7 @@ data class GroupMember (
|
|||||||
memberRole = GroupMemberRole.Member,
|
memberRole = GroupMemberRole.Member,
|
||||||
memberCategory = GroupMemberCategory.InviteeMember,
|
memberCategory = GroupMemberCategory.InviteeMember,
|
||||||
memberStatus = GroupMemberStatus.MemComplete,
|
memberStatus = GroupMemberStatus.MemComplete,
|
||||||
|
memberSettings = GroupMemberSettings(showMessages = true),
|
||||||
invitedBy = InvitedBy.IBUser(),
|
invitedBy = InvitedBy.IBUser(),
|
||||||
localDisplayName = "alice",
|
localDisplayName = "alice",
|
||||||
memberProfile = LocalProfile.sampleData,
|
memberProfile = LocalProfile.sampleData,
|
||||||
@ -1150,6 +1151,9 @@ data class GroupMember (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class GroupMemberSettings(val showMessages: Boolean) {}
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
class GroupMemberRef(
|
class GroupMemberRef(
|
||||||
val groupMemberId: Long,
|
val groupMemberId: Long,
|
||||||
@ -1844,6 +1848,7 @@ enum class SndCIStatusProgress {
|
|||||||
@Serializable
|
@Serializable
|
||||||
sealed class CIDeleted {
|
sealed class CIDeleted {
|
||||||
@Serializable @SerialName("deleted") class Deleted(val deletedTs: Instant?): CIDeleted()
|
@Serializable @SerialName("deleted") class Deleted(val deletedTs: Instant?): CIDeleted()
|
||||||
|
@Serializable @SerialName("blocked") class Blocked(val deletedTs: Instant?): CIDeleted()
|
||||||
@Serializable @SerialName("moderated") class Moderated(val deletedTs: Instant?, val byGroupMember: GroupMember): CIDeleted()
|
@Serializable @SerialName("moderated") class Moderated(val deletedTs: Instant?, val byGroupMember: GroupMember): CIDeleted()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2472,15 +2472,22 @@ data class KeepAliveOpts(
|
|||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class ChatSettings(
|
data class ChatSettings(
|
||||||
val enableNtfs: Boolean,
|
val enableNtfs: MsgFilter,
|
||||||
val sendRcpts: Boolean?,
|
val sendRcpts: Boolean?,
|
||||||
val favorite: Boolean
|
val favorite: Boolean
|
||||||
) {
|
) {
|
||||||
companion object {
|
companion object {
|
||||||
val defaults: ChatSettings = ChatSettings(enableNtfs = true, sendRcpts = null, favorite = false)
|
val defaults: ChatSettings = ChatSettings(enableNtfs = MsgFilter.All, sendRcpts = null, favorite = false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
enum class MsgFilter {
|
||||||
|
@SerialName("all") All,
|
||||||
|
@SerialName("none") None,
|
||||||
|
@SerialName("mentions") Mentions,
|
||||||
|
}
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class UserMsgReceiptSettings(val enable: Boolean, val clearOverrides: Boolean)
|
data class UserMsgReceiptSettings(val enable: Boolean, val clearOverrides: Boolean)
|
||||||
|
|
||||||
|
@ -595,8 +595,8 @@ fun groupInvitationAcceptedAlert() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun toggleNotifications(chat: Chat, enableNtfs: Boolean, chatModel: ChatModel, currentState: MutableState<Boolean>? = null) {
|
fun toggleNotifications(chat: Chat, enableAllNtfs: Boolean, chatModel: ChatModel, currentState: MutableState<Boolean>? = null) {
|
||||||
val chatSettings = (chat.chatInfo.chatSettings ?: ChatSettings.defaults).copy(enableNtfs = enableNtfs)
|
val chatSettings = (chat.chatInfo.chatSettings ?: ChatSettings.defaults).copy(enableNtfs = if (enableAllNtfs) MsgFilter.All else MsgFilter.None)
|
||||||
updateChatSettings(chat, chatSettings, chatModel, currentState)
|
updateChatSettings(chat, chatSettings, chatModel, currentState)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -627,7 +627,7 @@ fun updateChatSettings(chat: Chat, chatSettings: ChatSettings, chatModel: ChatMo
|
|||||||
}
|
}
|
||||||
if (res && newChatInfo != null) {
|
if (res && newChatInfo != null) {
|
||||||
chatModel.updateChatInfo(newChatInfo)
|
chatModel.updateChatInfo(newChatInfo)
|
||||||
if (!chatSettings.enableNtfs) {
|
if (chatSettings.enableNtfs != MsgFilter.All) {
|
||||||
ntfManager.cancelNotificationsForChat(chat.id)
|
ntfManager.cancelNotificationsForChat(chat.id)
|
||||||
}
|
}
|
||||||
val current = currentState?.value
|
val current = currentState?.value
|
||||||
|
Loading…
Reference in New Issue
Block a user