mirror of
https://github.com/bitwarden/android.git
synced 2026-04-30 15:05:26 -05:00
[PM-29673] feat: Improved pre-polutated data on the FlightRecorder logs (#6616)
This commit is contained in:
@@ -7,8 +7,8 @@ import com.bitwarden.core.data.manager.BuildInfoManager
|
||||
import com.bitwarden.data.datasource.disk.model.FlightRecorderDataSet
|
||||
import com.bitwarden.data.repository.ServerConfigRepository
|
||||
import com.bitwarden.data.repository.util.baseWebVaultUrlOrDefault
|
||||
import com.bitwarden.core.data.manager.util.deviceData
|
||||
import com.bitwarden.ui.platform.base.BaseViewModel
|
||||
import com.bitwarden.ui.platform.manager.util.deviceData
|
||||
import com.bitwarden.ui.util.Text
|
||||
import com.bitwarden.ui.util.asText
|
||||
import com.bitwarden.ui.util.concat
|
||||
|
||||
@@ -6,9 +6,9 @@ import com.bitwarden.core.data.manager.BuildInfoManager
|
||||
import com.bitwarden.data.datasource.disk.model.FlightRecorderDataSet
|
||||
import com.bitwarden.data.datasource.disk.model.ServerConfig
|
||||
import com.bitwarden.data.repository.ServerConfigRepository
|
||||
import com.bitwarden.core.data.manager.util.deviceData
|
||||
import com.bitwarden.data.repository.util.baseWebVaultUrlOrDefault
|
||||
import com.bitwarden.ui.platform.base.BaseViewModelTest
|
||||
import com.bitwarden.ui.platform.manager.util.deviceData
|
||||
import com.bitwarden.ui.util.asText
|
||||
import com.bitwarden.ui.util.concat
|
||||
import com.x8bit.bitwarden.data.platform.manager.LogsManager
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@file:OmitFromCoverage
|
||||
|
||||
package com.bitwarden.ui.platform.manager.util
|
||||
package com.bitwarden.core.data.manager.util
|
||||
|
||||
import android.os.Build
|
||||
import com.bitwarden.annotation.OmitFromCoverage
|
||||
@@ -17,6 +17,7 @@ import com.bitwarden.data.manager.flightrecorder.FlightRecorderManager
|
||||
import com.bitwarden.data.manager.flightrecorder.FlightRecorderManagerImpl
|
||||
import com.bitwarden.data.manager.flightrecorder.FlightRecorderWriter
|
||||
import com.bitwarden.data.manager.flightrecorder.FlightRecorderWriterImpl
|
||||
import com.bitwarden.data.repository.ServerConfigRepository
|
||||
import com.bitwarden.network.service.DownloadService
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
@@ -80,11 +81,13 @@ object DataManagerModule {
|
||||
fileManager: FileManager,
|
||||
dispatcherManager: DispatcherManager,
|
||||
buildInfoManager: BuildInfoManager,
|
||||
serverConfigRepository: ServerConfigRepository,
|
||||
): FlightRecorderWriter = FlightRecorderWriterImpl(
|
||||
clock = clock,
|
||||
fileManager = fileManager,
|
||||
dispatcherManager = dispatcherManager,
|
||||
buildInfoManager = buildInfoManager,
|
||||
serverConfigRepository = serverConfigRepository,
|
||||
)
|
||||
|
||||
@Provides
|
||||
|
||||
@@ -5,9 +5,11 @@ import android.util.Log
|
||||
import com.bitwarden.annotation.OmitFromCoverage
|
||||
import com.bitwarden.core.data.manager.BuildInfoManager
|
||||
import com.bitwarden.core.data.manager.dispatcher.DispatcherManager
|
||||
import com.bitwarden.core.data.manager.util.deviceData
|
||||
import com.bitwarden.core.data.util.toFormattedPattern
|
||||
import com.bitwarden.data.datasource.disk.model.FlightRecorderDataSet
|
||||
import com.bitwarden.data.manager.file.FileManager
|
||||
import com.bitwarden.data.repository.ServerConfigRepository
|
||||
import kotlinx.coroutines.withContext
|
||||
import timber.log.Timber
|
||||
import java.io.BufferedWriter
|
||||
@@ -30,6 +32,7 @@ internal class FlightRecorderWriterImpl(
|
||||
private val fileManager: FileManager,
|
||||
private val dispatcherManager: DispatcherManager,
|
||||
private val buildInfoManager: BuildInfoManager,
|
||||
private val serverConfigRepository: ServerConfigRepository,
|
||||
) : FlightRecorderWriter {
|
||||
override suspend fun deleteLog(data: FlightRecorderDataSet.FlightRecorderData) {
|
||||
fileManager.delete(File(File(fileManager.logsDirectory), data.fileName))
|
||||
@@ -53,28 +56,31 @@ internal class FlightRecorderWriterImpl(
|
||||
val logFile = File(logFolder, data.fileName)
|
||||
if (!logFile.exists()) {
|
||||
logFile.createNewFile()
|
||||
|
||||
val ciInfo = buildInfoManager.ciBuildInfo?.takeIf { it.isNotBlank() }
|
||||
val serverData = serverConfigRepository.serverConfigStateFlow.value?.serverData
|
||||
val serverInfo = StringBuilder()
|
||||
.append(serverData?.server?.name ?: "Bitwarden Cloud")
|
||||
.apply {
|
||||
serverData?.version?.let { append(" $it") }
|
||||
serverData?.environment?.cloudRegion?.let { append(" @ $it") }
|
||||
}
|
||||
.toString()
|
||||
val startTime = Instant
|
||||
.ofEpochMilli(data.startTimeMs)
|
||||
.toFormattedPattern(pattern = LOG_TIME_PATTERN, clock = clock)
|
||||
val operatingSystem = "${Build.VERSION.RELEASE} (${Build.VERSION.SDK_INT})"
|
||||
// Upon creating the new file, we pre-populate it with basic data
|
||||
BufferedWriter(FileWriter(logFile, true)).use { bw ->
|
||||
bw.append("Bitwarden Android - ${buildInfoManager.applicationName}")
|
||||
bw.newLine()
|
||||
bw.append("Log Start Time: $startTime")
|
||||
bw.newLine()
|
||||
bw.append("Log Duration: ${data.durationMs.milliseconds}")
|
||||
bw.newLine()
|
||||
bw.append("App Version: ${buildInfoManager.versionData}")
|
||||
bw.newLine()
|
||||
bw.append("Build: ${buildInfoManager.buildAndFlavor}")
|
||||
bw.newLine()
|
||||
bw.append("Operating System: $operatingSystem")
|
||||
bw.newLine()
|
||||
bw.append("Device: ${Build.BRAND} ${Build.MODEL}")
|
||||
bw.newLine()
|
||||
bw.append("Fingerprint: ${Build.FINGERPRINT}")
|
||||
bw.newLine()
|
||||
bw.appendLine("Bitwarden Android - ${buildInfoManager.applicationName}")
|
||||
bw.appendLine("Log Start Time: $startTime")
|
||||
bw.appendLine("Log Duration: ${data.durationMs.milliseconds}")
|
||||
bw.appendLine("App Version: ${buildInfoManager.versionData}")
|
||||
bw.appendLine("Build: ${buildInfoManager.buildAndFlavor}")
|
||||
bw.appendLine("SDK Version: \uD83E\uDD80 ${buildInfoManager.sdkData}")
|
||||
ciInfo.let { bw.appendLine("CI Build Info: $it") }
|
||||
bw.appendLine("Device: ${buildInfoManager.deviceData}")
|
||||
bw.appendLine("\uD83C\uDF29 Server: $serverInfo")
|
||||
bw.appendLine("Fingerprint: ${Build.FINGERPRINT}")
|
||||
}
|
||||
}
|
||||
logFile
|
||||
|
||||
@@ -26,10 +26,10 @@ import androidx.credentials.CredentialManager
|
||||
import com.bitwarden.annotation.OmitFromCoverage
|
||||
import com.bitwarden.core.data.manager.BuildInfoManager
|
||||
import com.bitwarden.core.data.util.toFormattedPattern
|
||||
import com.bitwarden.core.data.manager.util.deviceData
|
||||
import com.bitwarden.core.data.manager.util.fileProviderAuthority
|
||||
import com.bitwarden.core.util.isBuildVersionAtLeast
|
||||
import com.bitwarden.ui.platform.manager.intent.model.AuthTabData
|
||||
import com.bitwarden.ui.platform.manager.util.deviceData
|
||||
import com.bitwarden.ui.platform.manager.util.fileProviderAuthority
|
||||
import com.bitwarden.ui.platform.model.FileData
|
||||
import com.bitwarden.ui.platform.resource.BitwardenString
|
||||
import com.bitwarden.ui.platform.util.getLocalFileData
|
||||
|
||||
Reference in New Issue
Block a user