Skip to content

Commit 3b6bcf1

Browse files
committed
fix(exceptions): fix for SQLiteBlobTooBigException crash
1 parent d11d89d commit 3b6bcf1

File tree

4 files changed

+15
-16
lines changed

4 files changed

+15
-16
lines changed

pluto-plugins/plugins/exceptions/lib/src/main/java/com/pluto/plugins/exceptions/internal/DataModel.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ internal data class ExceptionData(
4848
val file: String?,
4949
val lineNumber: Int,
5050
val stackTrace: List<String>,
51+
val stackTraceAdditionalLineCount: Int,
5152
val timeStamp: Long = System.currentTimeMillis(),
5253
val isANRException: Boolean = false
5354
) : ListItem()
@@ -84,19 +85,21 @@ internal data class DeviceInfo(
8485
) : ListItem()
8586

8687
internal fun Throwable.asExceptionData(isANR: Boolean = false): ExceptionData {
88+
val truncatedStackTrace = stackTrace.asStringArray()
8789
return ExceptionData(
8890
name = this.toString().replace(": $message", "", true),
8991
message = message,
90-
stackTrace = stackTrace.asStringArray(),
92+
stackTrace = truncatedStackTrace,
93+
stackTraceAdditionalLineCount = stackTrace.size - truncatedStackTrace.size,
9194
file = stackTrace.getOrNull(0)?.fileName,
9295
lineNumber = stackTrace.getOrNull(0)?.lineNumber ?: Int.MIN_VALUE,
9396
isANRException = isANR
9497
)
9598
}
9699

97-
internal fun Array<StackTraceElement>.asStringArray(): ArrayList<String> {
100+
internal fun Array<StackTraceElement>.asStringArray(stackTraceSize: Int = STACK_TRACE_LENGTH): ArrayList<String> {
98101
val array = arrayListOf<String>()
99-
forEach {
102+
take(stackTraceSize).forEach {
100103
if (it.isNativeMethod) {
101104
array.add("${it.className}.${it.methodName}(Native Method)")
102105
} else {
@@ -175,3 +178,5 @@ data class ReportData(
175178
val version: String = BuildConfig.VERSION_NAME,
176179
val buildType: String = BuildConfig.BUILD_TYPE
177180
)
181+
182+
internal const val STACK_TRACE_LENGTH = 25

pluto-plugins/plugins/exceptions/lib/src/main/java/com/pluto/plugins/exceptions/internal/persistence/database/PlutoDatabase.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import com.pluto.plugins.exceptions.internal.persistence.ExceptionEntity
88
entities = [
99
ExceptionEntity::class,
1010
],
11-
version = 3,
11+
version = 4,
1212
exportSchema = false
1313
)
1414
internal abstract class PlutoDatabase : RoomDatabase() {

pluto-plugins/plugins/exceptions/lib/src/main/java/com/pluto/plugins/exceptions/internal/ui/DetailsFragment.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,17 +121,16 @@ internal class DetailsFragment : Fragment(R.layout.pluto_excep___fragment_detail
121121
}
122122
}
123123

124-
private const val STACK_TRACE_LENGTH = 25
125124
private const val SHARE_SECTION_DIVIDER = "\n\n==================\n\n"
126125
private fun ExceptionEntity.toShareText(): String {
127126
val text = StringBuilder()
128127
text.append("EXCEPTION : \n")
129128
text.append("${this.data.exception.name}: ${this.data.exception.message}\n")
130-
this.data.exception.stackTrace.take(STACK_TRACE_LENGTH).forEach {
129+
this.data.exception.stackTrace.forEach {
131130
text.append("\t at $it\n")
132131
}
133-
if (this.data.exception.stackTrace.size - STACK_TRACE_LENGTH > 0) {
134-
text.append("\t + ${this.data.exception.stackTrace.size - STACK_TRACE_LENGTH} more lines\n\n")
132+
if (this.data.exception.stackTraceAdditionalLineCount > 0) {
133+
text.append("\t + ${this.data.exception.stackTraceAdditionalLineCount} more lines\n\n")
135134
}
136135

137136
text.append(SHARE_SECTION_DIVIDER)

pluto-plugins/plugins/exceptions/lib/src/main/java/com/pluto/plugins/exceptions/internal/ui/holder/CrashItemDetailsHeaderHolder.kt

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ internal class CrashItemDetailsHeaderHolder(
3232

3333
stacktrace.setSpan {
3434
append("${item.name}: ${item.message}")
35-
item.stackTrace.take(MAX_STACK_TRACE_LINES).forEach {
35+
item.stackTrace.forEach {
3636
append("\n\t\t\t")
3737
append(
3838
fontColor(
@@ -41,11 +41,10 @@ internal class CrashItemDetailsHeaderHolder(
4141
)
4242
append(it)
4343
}
44-
val extraTrace = item.stackTrace.size - MAX_STACK_TRACE_LINES
45-
if (extraTrace > 0) {
44+
if (item.stackTraceAdditionalLineCount > 0) {
4645
append(
4746
fontColor(
48-
"\n\t\t\t + $extraTrace more lines", context.color(com.pluto.plugin.R.color.pluto___text_dark_40)
47+
"\n\t\t\t + ${item.stackTraceAdditionalLineCount} more lines", context.color(com.pluto.plugin.R.color.pluto___text_dark_40)
4948
)
5049
)
5150
}
@@ -101,8 +100,4 @@ internal class CrashItemDetailsHeaderHolder(
101100
// }
102101
// return false
103102
// }
104-
105-
companion object {
106-
const val MAX_STACK_TRACE_LINES = 20
107-
}
108103
}

0 commit comments

Comments
 (0)