core: commands to set chat notification settings (#946)

* core: commands to set chat notification settings

* add API
This commit is contained in:
Evgeny Poberezkin
2022-08-19 15:17:05 +01:00
committed by GitHub
parent 3221c0abb5
commit 70168967a3
13 changed files with 146 additions and 56 deletions

View File

@@ -460,6 +460,7 @@ class Contact(
val profile: Profile,
val activeConn: Connection,
val viaGroup: Long? = null,
// val chatSettings: ChatSettings,
override val createdAt: Instant,
override val updatedAt: Instant
): SomeChat, NamedChat {
@@ -540,6 +541,7 @@ class GroupInfo (
override val localDisplayName: String,
val groupProfile: GroupProfile,
val membership: GroupMember,
// val chatSettings: ChatSettings,
override val createdAt: Instant,
override val updatedAt: Instant
): SomeChat, NamedChat {

View File

@@ -1136,6 +1136,7 @@ sealed class CC {
class SetUserSMPServers(val smpServers: List<String>): CC()
class APISetNetworkConfig(val networkConfig: NetCfg): CC()
class APIGetNetworkConfig: CC()
class APISetChatSettings(val type: ChatType, val id: Long, val chatSettings: ChatSettings): CC()
class APIContactInfo(val contactId: Long): CC()
class APIGroupMemberInfo(val groupId: Long, val groupMemberId: Long): CC()
class AddContact: CC()
@@ -1186,6 +1187,7 @@ sealed class CC {
is SetUserSMPServers -> "/smp_servers ${smpServersStr(smpServers)}"
is APISetNetworkConfig -> "/_network ${json.encodeToString(networkConfig)}"
is APIGetNetworkConfig -> "/network"
is APISetChatSettings -> "/_settings ${chatRef(type, id)} ${json.encodeToString(chatSettings)}"
is APIContactInfo -> "/_info @$contactId"
is APIGroupMemberInfo -> "/_info #$groupId $groupMemberId"
is AddContact -> "/connect"
@@ -1237,6 +1239,7 @@ sealed class CC {
is SetUserSMPServers -> "setUserSMPServers"
is APISetNetworkConfig -> "/apiSetNetworkConfig"
is APIGetNetworkConfig -> "/apiGetNetworkConfig"
is APISetChatSettings -> "/apiSetChatSettings"
is APIContactInfo -> "apiContactInfo"
is APIGroupMemberInfo -> "apiGroupMemberInfo"
is AddContact -> "addContact"
@@ -1348,6 +1351,11 @@ data class KeepAliveOpts(
}
}
@Serializable
data class ChatSettings(
val enableNtfs: Boolean
)
val json = Json {
prettyPrint = true
ignoreUnknownKeys = true

View File

@@ -45,6 +45,7 @@ public enum ChatCommand {
case setUserSMPServers(smpServers: [String])
case apiSetNetworkConfig(networkConfig: NetCfg)
case apiGetNetworkConfig
case apiSetChatSettings(type: ChatType, id: Int64, chatSettings: ChatSettings)
case apiContactInfo(contactId: Int64)
case apiGroupMemberInfo(groupId: Int64, groupMemberId: Int64)
case addContact
@@ -108,6 +109,7 @@ public enum ChatCommand {
case let .setUserSMPServers(smpServers): return "/smp_servers \(smpServersStr(smpServers: smpServers))"
case let .apiSetNetworkConfig(networkConfig): return "/_network \(encodeJSON(networkConfig))"
case .apiGetNetworkConfig: return "/network"
case let .apiSetChatSettings(type, id, chatSettings): return "/_settings \(ref(type, id)) \(encodeJSON(chatSettings))"
case let .apiContactInfo(contactId): return "/_info @\(contactId)"
case let .apiGroupMemberInfo(groupId, groupMemberId): return "/_info #\(groupId) \(groupMemberId)"
case .addContact: return "/connect"
@@ -170,6 +172,7 @@ public enum ChatCommand {
case .setUserSMPServers: return "setUserSMPServers"
case .apiSetNetworkConfig: return "apiSetNetworkConfig"
case .apiGetNetworkConfig: return "apiGetNetworkConfig"
case .apiSetChatSettings: return "apiSetChatSettings"
case .apiContactInfo: return "apiContactInfo"
case .apiGroupMemberInfo: return "apiGroupMemberInfo"
case .addContact: return "addContact"
@@ -591,6 +594,12 @@ public struct KeepAliveOpts: Codable, Equatable {
public static let defaults: KeepAliveOpts = KeepAliveOpts(keepIdle: 30, keepIntvl: 15, keepCnt: 4)
}
public struct ChatSettings: Codable {
public var enableNtfs: Bool
public static let defaults: ChatSettings = ChatSettings(enableNtfs: true)
}
public struct ConnectionStats: Codable {
public var rcvServers: [String]?
public var sndServers: [String]?

View File

@@ -244,6 +244,7 @@ public struct Contact: Identifiable, Decodable, NamedChat {
public var profile: Profile
public var activeConn: Connection
public var viaGroup: Int64?
// public var chatSettings: ChatSettings
var createdAt: Date
var updatedAt: Date
@@ -433,6 +434,7 @@ public struct GroupInfo: Identifiable, Decodable, NamedChat {
var localDisplayName: GroupName
public var groupProfile: GroupProfile
public var membership: GroupMember
// public var chatSettings: ChatSettings
var createdAt: Date
var updatedAt: Date