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 @@ -48,6 +48,7 @@ internal data class ExceptionData(
val file: String?,
val lineNumber: Int,
val stackTrace: List<String>,
val stackTraceAdditionalLineCount: Int,
val timeStamp: Long = System.currentTimeMillis(),
val isANRException: Boolean = false
) : ListItem()
Expand Down Expand Up @@ -84,19 +85,21 @@ internal data class DeviceInfo(
) : ListItem()

internal fun Throwable.asExceptionData(isANR: Boolean = false): ExceptionData {
val truncatedStackTrace = stackTrace.asStringArray()
return ExceptionData(
name = this.toString().replace(": $message", "", true),
message = message,
stackTrace = stackTrace.asStringArray(),
stackTrace = truncatedStackTrace,
stackTraceAdditionalLineCount = stackTrace.size - truncatedStackTrace.size,
file = stackTrace.getOrNull(0)?.fileName,
lineNumber = stackTrace.getOrNull(0)?.lineNumber ?: Int.MIN_VALUE,
isANRException = isANR
)
}

internal fun Array<StackTraceElement>.asStringArray(): ArrayList<String> {
internal fun Array<StackTraceElement>.asStringArray(stackTraceSize: Int = STACK_TRACE_LENGTH): ArrayList<String> {
val array = arrayListOf<String>()
forEach {
take(stackTraceSize).forEach {
if (it.isNativeMethod) {
array.add("${it.className}.${it.methodName}(Native Method)")
} else {
Expand Down Expand Up @@ -175,3 +178,5 @@ data class ReportData(
val version: String = BuildConfig.VERSION_NAME,
val buildType: String = BuildConfig.BUILD_TYPE
)

internal const val STACK_TRACE_LENGTH = 25
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import com.pluto.plugins.exceptions.internal.persistence.ExceptionEntity
entities = [
ExceptionEntity::class,
],
version = 3,
version = 4,
exportSchema = false
)
internal abstract class PlutoDatabase : RoomDatabase() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,17 +121,16 @@ internal class DetailsFragment : Fragment(R.layout.pluto_excep___fragment_detail
}
}

private const val STACK_TRACE_LENGTH = 25
private const val SHARE_SECTION_DIVIDER = "\n\n==================\n\n"
private fun ExceptionEntity.toShareText(): String {
val text = StringBuilder()
text.append("EXCEPTION : \n")
text.append("${this.data.exception.name}: ${this.data.exception.message}\n")
this.data.exception.stackTrace.take(STACK_TRACE_LENGTH).forEach {
this.data.exception.stackTrace.forEach {
text.append("\t at $it\n")
}
if (this.data.exception.stackTrace.size - STACK_TRACE_LENGTH > 0) {
text.append("\t + ${this.data.exception.stackTrace.size - STACK_TRACE_LENGTH} more lines\n\n")
if (this.data.exception.stackTraceAdditionalLineCount > 0) {
text.append("\t + ${this.data.exception.stackTraceAdditionalLineCount} more lines\n\n")
}

text.append(SHARE_SECTION_DIVIDER)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ internal class CrashItemDetailsHeaderHolder(

stacktrace.setSpan {
append("${item.name}: ${item.message}")
item.stackTrace.take(MAX_STACK_TRACE_LINES).forEach {
item.stackTrace.forEach {
append("\n\t\t\t")
append(
fontColor(
Expand All @@ -41,11 +41,10 @@ internal class CrashItemDetailsHeaderHolder(
)
append(it)
}
val extraTrace = item.stackTrace.size - MAX_STACK_TRACE_LINES
if (extraTrace > 0) {
if (item.stackTraceAdditionalLineCount > 0) {
append(
fontColor(
"\n\t\t\t + $extraTrace more lines", context.color(com.pluto.plugin.R.color.pluto___text_dark_40)
"\n\t\t\t + ${item.stackTraceAdditionalLineCount} more lines", context.color(com.pluto.plugin.R.color.pluto___text_dark_40)
)
)
}
Expand Down Expand Up @@ -101,8 +100,4 @@ internal class CrashItemDetailsHeaderHolder(
// }
// return false
// }

companion object {
const val MAX_STACK_TRACE_LINES = 20
}
}