Fix runtime issue after upgrading Moshi library

This commit is contained in:
Benoit Marty 2020-10-06 17:13:57 +02:00
parent 32434703d8
commit dd1c9976e3
6 changed files with 82 additions and 1 deletions

View File

@ -20,9 +20,11 @@ package org.matrix.android.sdk.api.session.content
import android.net.Uri import android.net.Uri
import android.os.Parcelable import android.os.Parcelable
import androidx.exifinterface.media.ExifInterface import androidx.exifinterface.media.ExifInterface
import com.squareup.moshi.JsonClass
import kotlinx.android.parcel.Parcelize import kotlinx.android.parcel.Parcelize
@Parcelize @Parcelize
@JsonClass(generateAdapter = true)
data class ContentAttachmentData( data class ContentAttachmentData(
val size: Long = 0, val size: Long = 0,
val duration: Long? = 0, val duration: Long? = 0,
@ -32,10 +34,11 @@ data class ContentAttachmentData(
val exifOrientation: Int = ExifInterface.ORIENTATION_UNDEFINED, val exifOrientation: Int = ExifInterface.ORIENTATION_UNDEFINED,
val name: String? = null, val name: String? = null,
val queryUri: Uri, val queryUri: Uri,
private val mimeType: String?, val mimeType: String?,
val type: Type val type: Type
) : Parcelable { ) : Parcelable {
@JsonClass(generateAdapter = false)
enum class Type { enum class Type {
FILE, FILE,
IMAGE, IMAGE,

View File

@ -18,7 +18,9 @@
package org.matrix.android.sdk.api.session.room.model package org.matrix.android.sdk.api.session.room.model
import com.squareup.moshi.Json import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
@JsonClass(generateAdapter = true)
data class Signed( data class Signed(
@Json(name = "token") val token: String, @Json(name = "token") val token: String,
@Json(name = "signatures") val signatures: Any, @Json(name = "signatures") val signatures: Any,

View File

@ -17,6 +17,7 @@
package org.matrix.android.sdk.internal.crypto package org.matrix.android.sdk.internal.crypto
import com.squareup.moshi.JsonClass
import org.matrix.android.sdk.api.session.events.model.Event import org.matrix.android.sdk.api.session.events.model.Event
import org.matrix.android.sdk.api.session.events.model.toModel import org.matrix.android.sdk.api.session.events.model.toModel
import org.matrix.android.sdk.internal.crypto.model.rest.SecretShareRequest import org.matrix.android.sdk.internal.crypto.model.rest.SecretShareRequest
@ -24,6 +25,7 @@ import org.matrix.android.sdk.internal.crypto.model.rest.SecretShareRequest
/** /**
* IncomingRoomKeyRequest class defines the incoming room keys request. * IncomingRoomKeyRequest class defines the incoming room keys request.
*/ */
@JsonClass(generateAdapter = true)
data class IncomingSecretShareRequest( data class IncomingSecretShareRequest(
/** /**
* The user id * The user id

View File

@ -32,8 +32,10 @@ import org.matrix.android.sdk.api.session.room.model.message.MessageTextContent
import org.matrix.android.sdk.api.session.room.model.message.MessageType import org.matrix.android.sdk.api.session.room.model.message.MessageType
import org.matrix.android.sdk.api.session.room.model.message.MessageVerificationRequestContent import org.matrix.android.sdk.api.session.room.model.message.MessageVerificationRequestContent
import org.matrix.android.sdk.api.session.room.model.message.MessageVideoContent import org.matrix.android.sdk.api.session.room.model.message.MessageVideoContent
import org.matrix.android.sdk.internal.network.parsing.CipherSuiteMoshiAdapter
import org.matrix.android.sdk.internal.network.parsing.ForceToBooleanJsonAdapter import org.matrix.android.sdk.internal.network.parsing.ForceToBooleanJsonAdapter
import org.matrix.android.sdk.internal.network.parsing.RuntimeJsonAdapterFactory import org.matrix.android.sdk.internal.network.parsing.RuntimeJsonAdapterFactory
import org.matrix.android.sdk.internal.network.parsing.TlsVersionMoshiAdapter
import org.matrix.android.sdk.internal.network.parsing.UriMoshiAdapter import org.matrix.android.sdk.internal.network.parsing.UriMoshiAdapter
object MoshiProvider { object MoshiProvider {
@ -41,6 +43,8 @@ object MoshiProvider {
private val moshi: Moshi = Moshi.Builder() private val moshi: Moshi = Moshi.Builder()
.add(UriMoshiAdapter()) .add(UriMoshiAdapter())
.add(ForceToBooleanJsonAdapter()) .add(ForceToBooleanJsonAdapter())
.add(CipherSuiteMoshiAdapter())
.add(TlsVersionMoshiAdapter())
.add(RuntimeJsonAdapterFactory.of(MessageContent::class.java, "msgtype", MessageDefaultContent::class.java) .add(RuntimeJsonAdapterFactory.of(MessageContent::class.java, "msgtype", MessageDefaultContent::class.java)
.registerSubtype(MessageTextContent::class.java, MessageType.MSGTYPE_TEXT) .registerSubtype(MessageTextContent::class.java, MessageType.MSGTYPE_TEXT)
.registerSubtype(MessageNoticeContent::class.java, MessageType.MSGTYPE_NOTICE) .registerSubtype(MessageNoticeContent::class.java, MessageType.MSGTYPE_NOTICE)

View File

@ -0,0 +1,35 @@
/*
* Copyright 2019 New Vector Ltd
* Copyright 2020 The Matrix.org Foundation C.I.C.
*
* 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 org.matrix.android.sdk.internal.network.parsing
import com.squareup.moshi.FromJson
import com.squareup.moshi.ToJson
import okhttp3.CipherSuite
internal class CipherSuiteMoshiAdapter {
@ToJson
fun toJson(cipherSuite: CipherSuite): String {
return cipherSuite.javaName
}
@FromJson
fun fromJson(cipherSuiteString: String): CipherSuite {
return CipherSuite.forJavaName(cipherSuiteString)
}
}

View File

@ -0,0 +1,35 @@
/*
* Copyright 2019 New Vector Ltd
* Copyright 2020 The Matrix.org Foundation C.I.C.
*
* 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 org.matrix.android.sdk.internal.network.parsing
import com.squareup.moshi.FromJson
import com.squareup.moshi.ToJson
import okhttp3.TlsVersion
internal class TlsVersionMoshiAdapter {
@ToJson
fun toJson(tlsVersion: TlsVersion): String {
return tlsVersion.javaName
}
@FromJson
fun fromJson(tlsVersionString: String): TlsVersion {
return TlsVersion.forJavaName(tlsVersionString)
}
}