diff --git a/CHANGES.md b/CHANGES.md index 416c55d239..651a732f27 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -16,6 +16,7 @@ Bugfix 🐛: - Crypto | RiotX sometimes rotate the current device keys (#1170) - RiotX can't restore cross signing keys saved by web in SSSS (#1174) - Cross- Signing | After signin in new session, verification paper trail in DM is off (#1191) + - Failed to encrypt message in room (message stays in red), [thanks to pwr22] (#925) Translations 🗣: - @@ -27,7 +28,7 @@ Build 🧱: - Other changes: - - + - Increase File Logger capacities ( + use dev log preferences) Changes in RiotX 0.18.1 (2020-03-17) =================================================== diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/DefaultCryptoService.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/DefaultCryptoService.kt index d0a08b17ab..d3e5ada8cb 100755 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/DefaultCryptoService.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/DefaultCryptoService.kt @@ -792,10 +792,11 @@ internal class DefaultCryptoService @Inject constructor( val params = LoadRoomMembersTask.Params(roomId) try { loadRoomMembersTask.execute(params) - val userIds = getRoomUserIds(roomId) - setEncryptionInRoom(roomId, event.content?.get("algorithm")?.toString(), true, userIds) } catch (throwable: Throwable) { Timber.e(throwable, "## onRoomEncryptionEvent ERROR FAILED TO SETUP CRYPTO ") + } finally { + val userIds = getRoomUserIds(roomId) + setEncryptionInRoom(roomId, event.content?.get("algorithm")?.toString(), true, userIds) } } } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/IncomingRoomKeyRequestEntity.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/IncomingRoomKeyRequestEntity.kt deleted file mode 100644 index 31d7d3374e..0000000000 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/IncomingRoomKeyRequestEntity.kt +++ /dev/null @@ -1,56 +0,0 @@ -// /* -// * Copyright 2018 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.crypto.store.db.model -// -// import im.vector.matrix.android.internal.crypto.IncomingRoomKeyRequest -// import im.vector.matrix.android.internal.crypto.model.rest.RoomKeyRequestBody -// import io.realm.RealmObject -// -// internal open class IncomingRoomKeyRequestEntity( -// var requestId: String? = null, -// var userId: String? = null, -// var deviceId: String? = null, -// // RoomKeyRequestBody fields -// var requestBodyAlgorithm: String? = null, -// var requestBodyRoomId: String? = null, -// var requestBodySenderKey: String? = null, -// var requestBodySessionId: String? = null -// ) : RealmObject() { -// -// fun toIncomingRoomKeyRequest(): IncomingRoomKeyRequest { -// return IncomingRoomKeyRequest( -// requestId = requestId, -// userId = userId, -// deviceId = deviceId, -// requestBody = RoomKeyRequestBody( -// algorithm = requestBodyAlgorithm, -// roomId = requestBodyRoomId, -// senderKey = requestBodySenderKey, -// sessionId = requestBodySessionId -// ) -// ) -// } -// -// fun putRequestBody(requestBody: RoomKeyRequestBody?) { -// requestBody?.let { -// requestBodyAlgorithm = it.algorithm -// requestBodyRoomId = it.roomId -// requestBodySenderKey = it.senderKey -// requestBodySessionId = it.sessionId -// } -// } -// } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/IncomingSecretRequestEntity.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/IncomingSecretRequestEntity.kt deleted file mode 100644 index 9f2175329c..0000000000 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/IncomingSecretRequestEntity.kt +++ /dev/null @@ -1,37 +0,0 @@ -// /* -// * Copyright (c) 2020 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.crypto.store.db.model -// -// import im.vector.matrix.android.internal.crypto.IncomingSecretShareRequest -// import io.realm.RealmObject -// -// internal open class IncomingSecretRequestEntity( -// var requestId: String? = null, -// var userId: String? = null, -// var deviceId: String? = null, -// var secretName: String? = null -// ) : RealmObject() { -// -// fun toIncomingSecretShareRequest(): IncomingSecretShareRequest { -// return IncomingSecretShareRequest( -// requestId = requestId, -// userId = userId, -// deviceId = deviceId, -// secretName = secretName -// ) -// } -// } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/OutgoingRoomKeyRequestEntity.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/OutgoingRoomKeyRequestEntity.kt deleted file mode 100644 index 4eee322a6a..0000000000 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/OutgoingRoomKeyRequestEntity.kt +++ /dev/null @@ -1,77 +0,0 @@ -// /* -// * Copyright 2018 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.crypto.store.db.model -// -// import im.vector.matrix.android.internal.crypto.OutgoingRoomKeyRequest -// import im.vector.matrix.android.internal.crypto.ShareRequestState -// import im.vector.matrix.android.internal.crypto.model.rest.RoomKeyRequestBody -// import im.vector.matrix.android.internal.crypto.store.db.deserializeFromRealm -// import im.vector.matrix.android.internal.crypto.store.db.serializeForRealm -// import io.realm.RealmObject -// import io.realm.annotations.PrimaryKey -// -// internal open class OutgoingRoomKeyRequestEntity( -// @PrimaryKey var requestId: String? = null, -// var cancellationTxnId: String? = null, -// // Serialized Json -// var recipientsData: String? = null, -// // RoomKeyRequestBody fields -// var requestBodyAlgorithm: String? = null, -// var requestBodyRoomId: String? = null, -// var requestBodySenderKey: String? = null, -// var requestBodySessionId: String? = null, -// // State -// var state: Int = 0 -// ) : RealmObject() { -// -// /** -// * Convert to OutgoingRoomKeyRequest -// */ -// fun toOutgoingRoomKeyRequest(): OutgoingRoomKeyRequest { -// val cancellationTxnId = this.cancellationTxnId -// return OutgoingRoomKeyRequest( -// RoomKeyRequestBody( -// algorithm = requestBodyAlgorithm, -// roomId = requestBodyRoomId, -// senderKey = requestBodySenderKey, -// sessionId = requestBodySessionId -// ), -// getRecipients()!!, -// requestId!!, -// ShareRequestState.from(state) -// ).apply { -// this.cancellationTxnId = cancellationTxnId -// } -// } -// -// private fun getRecipients(): List>? { -// return deserializeFromRealm(recipientsData) -// } -// -// fun putRecipients(recipients: List>?) { -// recipientsData = serializeForRealm(recipients) -// } -// -// fun putRequestBody(requestBody: RoomKeyRequestBody?) { -// requestBody?.let { -// requestBodyAlgorithm = it.algorithm -// requestBodyRoomId = it.roomId -// requestBodySenderKey = it.senderKey -// requestBodySessionId = it.sessionId -// } -// } -// } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/OutgoingSecretRequestEntity.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/OutgoingSecretRequestEntity.kt deleted file mode 100644 index 4a1c8ce46c..0000000000 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/OutgoingSecretRequestEntity.kt +++ /dev/null @@ -1,63 +0,0 @@ -// /* -// * Copyright (c) 2020 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.crypto.store.db.model -// -// import im.vector.matrix.android.internal.crypto.OutgoingSecretRequest -// import im.vector.matrix.android.internal.crypto.ShareRequestState -// import im.vector.matrix.android.internal.crypto.store.db.deserializeFromRealm -// import im.vector.matrix.android.internal.crypto.store.db.serializeForRealm -// import io.realm.RealmObject -// import io.realm.annotations.PrimaryKey -// -// internal open class OutgoingSecretRequestEntity( -// @PrimaryKey var requestId: String? = null, -// var cancellationTxnId: String? = null, -// // Serialized Json -// var recipientsData: String? = null, -// // RoomKeyRequestBody fields -// var secretName: String? = null, -// // State -// var state: Int = 0 -// ) : RealmObject() { -// -// /** -// * Convert to OutgoingRoomKeyRequest -// */ -// fun toOutgoingSecretRequest(): OutgoingSecretRequest { -// val cancellationTxnId = this.cancellationTxnId -// return OutgoingSecretRequest( -// secretName, -// getRecipients() ?: emptyList(), -// requestId!!, -// ShareRequestState.from(state) -// ).apply { -// this.cancellationTxnId = cancellationTxnId -// } -// } -// -// private fun getRecipients(): List>? { -// return try { -// deserializeFromRealm(recipientsData) -// } catch (failure: Throwable) { -// null -// } -// } -// -// fun putRecipients(recipients: List>?) { -// recipientsData = serializeForRealm(recipients) -// } -// } diff --git a/vector/src/main/java/im/vector/riotx/features/rageshake/VectorFileLogger.kt b/vector/src/main/java/im/vector/riotx/features/rageshake/VectorFileLogger.kt index 3beb2882fb..d4563eb243 100644 --- a/vector/src/main/java/im/vector/riotx/features/rageshake/VectorFileLogger.kt +++ b/vector/src/main/java/im/vector/riotx/features/rageshake/VectorFileLogger.kt @@ -35,13 +35,25 @@ import java.util.logging.Logger import javax.inject.Inject import javax.inject.Singleton -private const val LOG_SIZE_BYTES = 20 * 1024 * 1024 // 20MB - -private const val LOG_ROTATION_COUNT = 3 +private const val SIZE_20MB = 20 * 1024 * 1024 +private const val SIZE_50MB = 50 * 1024 * 1024 @Singleton class VectorFileLogger @Inject constructor(val context: Context, private val vectorPreferences: VectorPreferences) : Timber.DebugTree() { + private val maxLogSizeByte: Int + private val logRotationCount: Int + + init { + if (vectorPreferences.labAllowedExtendedLogging()) { + maxLogSizeByte = SIZE_50MB + logRotationCount = 15 + } else { + maxLogSizeByte = SIZE_20MB + logRotationCount = 7 + } + } + private val sLogger = Logger.getLogger("im.vector.riotx") private var sFileHandler: FileHandler? = null private var sCacheDirectory: File? = null @@ -61,7 +73,7 @@ class VectorFileLogger @Inject constructor(val context: Context, private val vec setLogDirectory(File(logsDirectoryFile)) try { if (sCacheDirectory != null) { - sFileHandler = FileHandler(sCacheDirectory!!.absolutePath + "/" + sFileName + ".%g.txt", LOG_SIZE_BYTES, LOG_ROTATION_COUNT) + sFileHandler = FileHandler(sCacheDirectory!!.absolutePath + "/" + sFileName + ".%g.txt", maxLogSizeByte, logRotationCount) sFileHandler?.formatter = LogFormatter() sLogger.useParentHandlers = false sLogger.level = Level.ALL @@ -117,7 +129,7 @@ class VectorFileLogger @Inject constructor(val context: Context, private val vec sFileHandler!!.flush() val absPath = sCacheDirectory?.absolutePath ?: return emptyList() - for (i in 0..LOG_ROTATION_COUNT) { + for (i in 0..logRotationCount) { val filepath = "$absPath/$sFileName.$i.txt" val file = File(filepath) if (file.exists()) {