Ignored Users account data
This commit is contained in:
parent
114101699d
commit
2f7d1f9f01
@ -21,4 +21,6 @@ import java.lang.reflect.ParameterizedType
|
|||||||
|
|
||||||
typealias JsonDict = Map<String, @JvmSuppressWildcards Any>
|
typealias JsonDict = Map<String, @JvmSuppressWildcards Any>
|
||||||
|
|
||||||
|
val emptyJsonDict = emptyMap<String, Any>()
|
||||||
|
|
||||||
internal val JSON_DICT_PARAMETERIZED_TYPE: ParameterizedType = Types.newParameterizedType(Map::class.java, String::class.java, Any::class.java)
|
internal val JSON_DICT_PARAMETERIZED_TYPE: ParameterizedType = Types.newParameterizedType(Map::class.java, String::class.java, Any::class.java)
|
||||||
|
@ -20,10 +20,11 @@ import com.squareup.moshi.Moshi
|
|||||||
import im.vector.matrix.android.api.session.room.model.message.*
|
import im.vector.matrix.android.api.session.room.model.message.*
|
||||||
import im.vector.matrix.android.internal.network.parsing.RuntimeJsonAdapterFactory
|
import im.vector.matrix.android.internal.network.parsing.RuntimeJsonAdapterFactory
|
||||||
import im.vector.matrix.android.internal.network.parsing.UriMoshiAdapter
|
import im.vector.matrix.android.internal.network.parsing.UriMoshiAdapter
|
||||||
import im.vector.matrix.android.internal.session.sync.model.UserAccountData
|
import im.vector.matrix.android.internal.session.sync.model.accountdata.UserAccountData
|
||||||
import im.vector.matrix.android.internal.session.sync.model.UserAccountDataDirectMessages
|
import im.vector.matrix.android.internal.session.sync.model.accountdata.UserAccountDataDirectMessages
|
||||||
import im.vector.matrix.android.internal.session.sync.model.UserAccountDataFallback
|
import im.vector.matrix.android.internal.session.sync.model.accountdata.UserAccountDataFallback
|
||||||
import im.vector.matrix.android.internal.session.sync.model.UserAccountDataPushRules
|
import im.vector.matrix.android.internal.session.sync.model.accountdata.UserAccountDataIgnoredUsers
|
||||||
|
import im.vector.matrix.android.internal.session.sync.model.accountdata.UserAccountDataPushRules
|
||||||
|
|
||||||
object MoshiProvider {
|
object MoshiProvider {
|
||||||
|
|
||||||
@ -31,6 +32,7 @@ object MoshiProvider {
|
|||||||
.add(UriMoshiAdapter())
|
.add(UriMoshiAdapter())
|
||||||
.add(RuntimeJsonAdapterFactory.of(UserAccountData::class.java, "type", UserAccountDataFallback::class.java)
|
.add(RuntimeJsonAdapterFactory.of(UserAccountData::class.java, "type", UserAccountDataFallback::class.java)
|
||||||
.registerSubtype(UserAccountDataDirectMessages::class.java, UserAccountData.TYPE_DIRECT_MESSAGES)
|
.registerSubtype(UserAccountDataDirectMessages::class.java, UserAccountData.TYPE_DIRECT_MESSAGES)
|
||||||
|
.registerSubtype(UserAccountDataIgnoredUsers::class.java, UserAccountData.TYPE_IGNORED_USER_LIST)
|
||||||
.registerSubtype(UserAccountDataPushRules::class.java, UserAccountData.TYPE_PUSH_RULES)
|
.registerSubtype(UserAccountDataPushRules::class.java, UserAccountData.TYPE_PUSH_RULES)
|
||||||
)
|
)
|
||||||
.add(RuntimeJsonAdapterFactory.of(MessageContent::class.java, "msgtype", MessageDefaultContent::class.java)
|
.add(RuntimeJsonAdapterFactory.of(MessageContent::class.java, "msgtype", MessageDefaultContent::class.java)
|
||||||
|
@ -27,6 +27,10 @@ import im.vector.matrix.android.internal.di.UserId
|
|||||||
import im.vector.matrix.android.internal.session.pushers.SavePushRulesTask
|
import im.vector.matrix.android.internal.session.pushers.SavePushRulesTask
|
||||||
import im.vector.matrix.android.internal.session.room.membership.RoomMembers
|
import im.vector.matrix.android.internal.session.room.membership.RoomMembers
|
||||||
import im.vector.matrix.android.internal.session.sync.model.*
|
import im.vector.matrix.android.internal.session.sync.model.*
|
||||||
|
import im.vector.matrix.android.internal.session.sync.model.accountdata.UserAccountDataDirectMessages
|
||||||
|
import im.vector.matrix.android.internal.session.sync.model.accountdata.UserAccountDataFallback
|
||||||
|
import im.vector.matrix.android.internal.session.sync.model.accountdata.UserAccountDataPushRules
|
||||||
|
import im.vector.matrix.android.internal.session.sync.model.accountdata.UserAccountDataSync
|
||||||
import im.vector.matrix.android.internal.session.user.accountdata.DirectChatsHelper
|
import im.vector.matrix.android.internal.session.user.accountdata.DirectChatsHelper
|
||||||
import im.vector.matrix.android.internal.session.user.accountdata.UpdateUserAccountDataTask
|
import im.vector.matrix.android.internal.session.user.accountdata.UpdateUserAccountDataTask
|
||||||
import im.vector.matrix.android.internal.task.TaskExecutor
|
import im.vector.matrix.android.internal.task.TaskExecutor
|
||||||
|
@ -18,6 +18,7 @@ package im.vector.matrix.android.internal.session.sync.model
|
|||||||
|
|
||||||
import com.squareup.moshi.Json
|
import com.squareup.moshi.Json
|
||||||
import com.squareup.moshi.JsonClass
|
import com.squareup.moshi.JsonClass
|
||||||
|
import im.vector.matrix.android.internal.session.sync.model.accountdata.UserAccountDataSync
|
||||||
|
|
||||||
// SyncResponse represents the request response for server sync v2.
|
// SyncResponse represents the request response for server sync v2.
|
||||||
@JsonClass(generateAdapter = true)
|
@JsonClass(generateAdapter = true)
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 New Vector Ltd
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package im.vector.matrix.android.internal.session.sync.model.accountdata
|
||||||
|
|
||||||
|
import com.squareup.moshi.Json
|
||||||
|
import com.squareup.moshi.JsonClass
|
||||||
|
import im.vector.matrix.android.api.util.JsonDict
|
||||||
|
|
||||||
|
@JsonClass(generateAdapter = true)
|
||||||
|
internal data class IgnoredUsersContent(
|
||||||
|
/**
|
||||||
|
* Required. The map of users to ignore. UserId -> empty object for future enhancement
|
||||||
|
*/
|
||||||
|
@Json(name = "ignored_users") val ignoredUsers: Map<String, JsonDict>
|
||||||
|
)
|
@ -14,9 +14,13 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package im.vector.matrix.android.internal.session.sync.model
|
package im.vector.matrix.android.internal.session.sync.model.accountdata
|
||||||
|
|
||||||
internal interface UserAccountData {
|
import com.squareup.moshi.Json
|
||||||
|
|
||||||
|
internal abstract class UserAccountData {
|
||||||
|
|
||||||
|
@Json(name = "type") abstract val type: String
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val TYPE_IGNORED_USER_LIST = "m.ignored_user_list"
|
const val TYPE_IGNORED_USER_LIST = "m.ignored_user_list"
|
@ -14,12 +14,13 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package im.vector.matrix.android.internal.session.sync.model
|
package im.vector.matrix.android.internal.session.sync.model.accountdata
|
||||||
|
|
||||||
import com.squareup.moshi.Json
|
import com.squareup.moshi.Json
|
||||||
import com.squareup.moshi.JsonClass
|
import com.squareup.moshi.JsonClass
|
||||||
|
|
||||||
@JsonClass(generateAdapter = true)
|
@JsonClass(generateAdapter = true)
|
||||||
internal data class UserAccountDataDirectMessages(
|
internal data class UserAccountDataDirectMessages(
|
||||||
|
@Json(name = "type") override val type: String = TYPE_DIRECT_MESSAGES,
|
||||||
@Json(name = "content") val content: Map<String, List<String>>
|
@Json(name = "content") val content: Map<String, List<String>>
|
||||||
) : UserAccountData
|
) : UserAccountData()
|
@ -14,13 +14,13 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package im.vector.matrix.android.internal.session.sync.model
|
package im.vector.matrix.android.internal.session.sync.model.accountdata
|
||||||
|
|
||||||
import com.squareup.moshi.Json
|
import com.squareup.moshi.Json
|
||||||
import com.squareup.moshi.JsonClass
|
import com.squareup.moshi.JsonClass
|
||||||
|
|
||||||
@JsonClass(generateAdapter = true)
|
@JsonClass(generateAdapter = true)
|
||||||
internal data class UserAccountDataFallback(
|
internal data class UserAccountDataFallback(
|
||||||
@Json(name = "type") val type: String,
|
@Json(name = "type") override val type: String,
|
||||||
@Json(name = "content") val content: Map<String, Any>
|
@Json(name = "content") val content: Map<String, Any>
|
||||||
) : UserAccountData
|
) : UserAccountData()
|
@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 New Vector Ltd
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package im.vector.matrix.android.internal.session.sync.model.accountdata
|
||||||
|
|
||||||
|
import com.squareup.moshi.Json
|
||||||
|
import com.squareup.moshi.JsonClass
|
||||||
|
import im.vector.matrix.android.api.util.emptyJsonDict
|
||||||
|
|
||||||
|
@JsonClass(generateAdapter = true)
|
||||||
|
internal data class UserAccountDataIgnoredUsers(
|
||||||
|
@Json(name = "type") override val type: String = TYPE_IGNORED_USER_LIST,
|
||||||
|
@Json(name = "content") val content: IgnoredUsersContent
|
||||||
|
) : UserAccountData() {
|
||||||
|
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun createWithUserIds(userIds: List<String>): UserAccountDataIgnoredUsers {
|
||||||
|
return UserAccountDataIgnoredUsers(
|
||||||
|
content = IgnoredUsersContent(
|
||||||
|
ignoredUsers = userIds.associateWith { emptyJsonDict }
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package im.vector.matrix.android.internal.session.sync.model
|
package im.vector.matrix.android.internal.session.sync.model.accountdata
|
||||||
|
|
||||||
import com.squareup.moshi.Json
|
import com.squareup.moshi.Json
|
||||||
import com.squareup.moshi.JsonClass
|
import com.squareup.moshi.JsonClass
|
||||||
@ -22,5 +22,6 @@ import im.vector.matrix.android.api.pushrules.rest.GetPushRulesResponse
|
|||||||
|
|
||||||
@JsonClass(generateAdapter = true)
|
@JsonClass(generateAdapter = true)
|
||||||
internal data class UserAccountDataPushRules(
|
internal data class UserAccountDataPushRules(
|
||||||
|
@Json(name = "type") override val type: String = TYPE_PUSH_RULES,
|
||||||
@Json(name = "content") val content: GetPushRulesResponse
|
@Json(name = "content") val content: GetPushRulesResponse
|
||||||
) : UserAccountData
|
) : UserAccountData()
|
@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package im.vector.matrix.android.internal.session.sync.model
|
package im.vector.matrix.android.internal.session.sync.model.accountdata
|
||||||
|
|
||||||
import com.squareup.moshi.Json
|
import com.squareup.moshi.Json
|
||||||
import com.squareup.moshi.JsonClass
|
import com.squareup.moshi.JsonClass
|
@ -18,7 +18,7 @@ package im.vector.matrix.android.internal.session.user.accountdata
|
|||||||
|
|
||||||
import im.vector.matrix.android.internal.di.UserId
|
import im.vector.matrix.android.internal.di.UserId
|
||||||
import im.vector.matrix.android.internal.network.executeRequest
|
import im.vector.matrix.android.internal.network.executeRequest
|
||||||
import im.vector.matrix.android.internal.session.sync.model.UserAccountData
|
import im.vector.matrix.android.internal.session.sync.model.accountdata.UserAccountData
|
||||||
import im.vector.matrix.android.internal.task.Task
|
import im.vector.matrix.android.internal.task.Task
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user