Add test for BugReportPresenter

This commit is contained in:
Benoit Marty 2023-02-08 18:42:17 +01:00
parent e954dccad9
commit 31eb86ebe4
8 changed files with 366 additions and 10 deletions

View file

@ -23,7 +23,6 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.core.net.toUri
import io.element.android.features.rageshake.crash.CrashDataStore
import io.element.android.features.rageshake.logs.VectorFileLogger
import io.element.android.features.rageshake.reporter.BugReporter
@ -73,7 +72,7 @@ class BugReportPresenter @Inject constructor(
override fun present(): BugReportState {
val screenshotUri = rememberSaveable {
mutableStateOf(
screenshotHolder.getFile()?.toUri()?.toString()
screenshotHolder.getFileUri()
)
}
val crashInfo: String by crashDataStore
@ -150,6 +149,6 @@ class BugReportPresenter @Inject constructor(
private fun CoroutineScope.resetAll() = launch {
screenshotHolder.reset()
crashDataStore.reset()
VectorFileLogger.getFromTimber().reset()
VectorFileLogger.getFromTimber()?.reset()
}
}

View file

@ -43,8 +43,8 @@ class VectorFileLogger(
) : Timber.Tree() {
companion object {
fun getFromTimber(): VectorFileLogger {
return Timber.forest().filterIsInstance<VectorFileLogger>().first()
fun getFromTimber(): VectorFileLogger? {
return Timber.forest().filterIsInstance<VectorFileLogger>().firstOrNull()
}
private const val SIZE_20MB = 20 * 1024 * 1024

View file

@ -18,6 +18,8 @@ package io.element.android.features.rageshake.reporter
import android.content.Context
import android.os.Build
import androidx.core.net.toFile
import androidx.core.net.toUri
import io.element.android.features.rageshake.R
import io.element.android.features.rageshake.crash.CrashDataStore
import io.element.android.features.rageshake.logs.VectorFileLogger
@ -153,7 +155,7 @@ class DefaultBugReporter @Inject constructor(
val gzippedFiles = ArrayList<File>()
val vectorFileLogger = VectorFileLogger.getFromTimber()
if (withDevicesLogs) {
if (withDevicesLogs && vectorFileLogger != null) {
val files = vectorFileLogger.getLogFiles()
files.mapNotNullTo(gzippedFiles) { f ->
if (!mIsCancelled) {
@ -254,7 +256,10 @@ class DefaultBugReporter @Inject constructor(
mBugReportFiles.addAll(gzippedFiles)
if (withScreenshot) {
screenshotHolder.getFile()?.let { screenshotFile ->
screenshotHolder.getFileUri()
?.toUri()
?.toFile()
?.let { screenshotFile ->
try {
builder.addFormDataPart(
"file",

View file

@ -18,6 +18,7 @@ package io.element.android.features.rageshake.screenshot
import android.content.Context
import android.graphics.Bitmap
import androidx.core.net.toUri
import com.squareup.anvil.annotations.ContributesBinding
import io.element.android.libraries.androidutils.bitmap.writeBitmap
import io.element.android.libraries.androidutils.file.safeDelete
@ -38,7 +39,12 @@ class DefaultScreenshotHolder @Inject constructor(
file.writeBitmap(data, Bitmap.CompressFormat.PNG, 85)
}
override fun getFile() = file.takeIf { it.exists() && it.length() > 0 }
override fun getFileUri(): String? {
return file
.takeIf { it.exists() && it.length() > 0 }
?.toUri()
?.toString()
}
override fun reset() {
file.safeDelete()

View file

@ -17,10 +17,9 @@
package io.element.android.features.rageshake.screenshot
import android.graphics.Bitmap
import java.io.File
interface ScreenshotHolder {
fun writeBitmap(data: Bitmap)
fun getFile(): File?
fun getFileUri(): String?
fun reset()
}