Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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))
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading