mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-24 13:08:46 +00:00
Improve rendering of nulls in Spinner results.
This commit is contained in:
committed by
Cody Henthorne
parent
970278228d
commit
da27d74111
@@ -16,13 +16,13 @@ object GV2Transformer : ColumnTransformer {
|
||||
return columnName == GroupTable.V2_DECRYPTED_GROUP
|
||||
}
|
||||
|
||||
override fun transform(tableName: String?, columnName: String, cursor: Cursor): String {
|
||||
override fun transform(tableName: String?, columnName: String, cursor: Cursor): String? {
|
||||
return if (columnName == GroupTable.V2_DECRYPTED_GROUP) {
|
||||
val groupBytes = cursor.requireBlob(GroupTable.V2_DECRYPTED_GROUP)
|
||||
val group = DecryptedGroup.parseFrom(groupBytes)
|
||||
group.formatAsHtml()
|
||||
} else {
|
||||
""
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ object GV2UpdateTransformer : ColumnTransformer {
|
||||
return columnName == MessageTable.BODY && (tableName == null || tableName == MessageTable.TABLE_NAME)
|
||||
}
|
||||
|
||||
override fun transform(tableName: String?, columnName: String, cursor: Cursor): String {
|
||||
override fun transform(tableName: String?, columnName: String, cursor: Cursor): String? {
|
||||
val type: Long = cursor.getMessageType()
|
||||
|
||||
if (type == -1L) {
|
||||
@@ -32,7 +32,7 @@ object GV2UpdateTransformer : ColumnTransformer {
|
||||
|
||||
"${gv2ChangeDescription.spannable}<br><br>${decryptedGroupV2Context.change}"
|
||||
} else {
|
||||
body ?: ""
|
||||
body
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ object IsStoryTransformer : ColumnTransformer {
|
||||
return columnName == MessageTable.STORY_TYPE && (tableName == null || tableName == MessageTable.TABLE_NAME)
|
||||
}
|
||||
|
||||
override fun transform(tableName: String?, columnName: String, cursor: Cursor): String {
|
||||
override fun transform(tableName: String?, columnName: String, cursor: Cursor): String? {
|
||||
val storyType = fromCode(cursor.requireInt(MessageTable.STORY_TYPE))
|
||||
return "${cursor.requireInt(MessageTable.STORY_TYPE)}<br><br>$storyType"
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ object MessageBitmaskColumnTransformer : ColumnTransformer {
|
||||
return columnName == "type" || columnName == "msg_box"
|
||||
}
|
||||
|
||||
override fun transform(tableName: String?, columnName: String, cursor: Cursor): String {
|
||||
override fun transform(tableName: String?, columnName: String, cursor: Cursor): String? {
|
||||
val type = cursor.requireLong(columnName)
|
||||
|
||||
val describe = """
|
||||
|
||||
@@ -16,7 +16,7 @@ object ProfileKeyCredentialTransformer : ColumnTransformer {
|
||||
return columnName == RecipientTable.EXPIRING_PROFILE_KEY_CREDENTIAL && (tableName == null || tableName == RecipientTable.TABLE_NAME)
|
||||
}
|
||||
|
||||
override fun transform(tableName: String?, columnName: String, cursor: Cursor): String {
|
||||
override fun transform(tableName: String?, columnName: String, cursor: Cursor): String? {
|
||||
val columnDataString = cursor.requireString(RecipientTable.EXPIRING_PROFILE_KEY_CREDENTIAL) ?: return DefaultColumnTransformer.transform(tableName, columnName, cursor)
|
||||
val columnDataBytes = Base64.decode(columnDataString)
|
||||
val columnData = ExpiringProfileKeyCredentialColumnData.parseFrom(columnDataBytes)
|
||||
|
||||
@@ -14,7 +14,7 @@ object TimestampTransformer : ColumnTransformer {
|
||||
columnName.contains("timestamp", true)
|
||||
}
|
||||
|
||||
override fun transform(tableName: String?, columnName: String, cursor: Cursor): String {
|
||||
override fun transform(tableName: String?, columnName: String, cursor: Cursor): String? {
|
||||
val timestamp: Long = cursor.requireLong(columnName)
|
||||
|
||||
return if (timestamp > LocalDateTime.of(2000, 1, 1, 0, 0, 0, 0).toMillis()) {
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
{{#each queryResult.rows}}
|
||||
<tr>
|
||||
{{#each this}}
|
||||
<td><pre>{{{this}}}</pre></td>
|
||||
<td><pre>{{#if (eq this null)}} <em class="null">null</em> {{else}} {{{this}}} {{/if}}</pre></td>
|
||||
{{/each}}
|
||||
</tr>
|
||||
{{/each}}
|
||||
|
||||
@@ -93,3 +93,6 @@ table.device-info, table.device-info tr, table.device-info td {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.null {
|
||||
color: #666
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
{{#each queryResult.rows}}
|
||||
<tr>
|
||||
{{#each this}}
|
||||
<td><pre>{{{this}}}</pre></td>
|
||||
<td><pre>{{#if (eq this null)}} <em class="null">null</em> {{else}} {{{this}}} {{/if}}</pre></td>
|
||||
{{/each}}
|
||||
</tr>
|
||||
{{/each}}
|
||||
|
||||
@@ -14,5 +14,5 @@ interface ColumnTransformer {
|
||||
/**
|
||||
* In certain circumstances (like some queries), the table name may not be guaranteed.
|
||||
*/
|
||||
fun transform(tableName: String?, columnName: String, cursor: Cursor): String
|
||||
fun transform(tableName: String?, columnName: String, cursor: Cursor): String?
|
||||
}
|
||||
|
||||
@@ -8,13 +8,11 @@ object DefaultColumnTransformer : ColumnTransformer {
|
||||
return true
|
||||
}
|
||||
|
||||
override fun transform(tableName: String?, columnName: String, cursor: Cursor): String {
|
||||
override fun transform(tableName: String?, columnName: String, cursor: Cursor): String? {
|
||||
val index = cursor.getColumnIndex(columnName)
|
||||
val data: String? = when (cursor.getType(index)) {
|
||||
return when (cursor.getType(index)) {
|
||||
Cursor.FIELD_TYPE_BLOB -> Base64.encodeToString(cursor.getBlob(index), 0)
|
||||
else -> cursor.getString(index)
|
||||
}
|
||||
|
||||
return data ?: "null"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -283,13 +283,13 @@ internal class SpinnerServer(
|
||||
}
|
||||
|
||||
var timeOfFirstRowNanos = 0L
|
||||
val rows = mutableListOf<List<String>>()
|
||||
val rows = mutableListOf<List<String?>>()
|
||||
while (moveToNext()) {
|
||||
if (timeOfFirstRowNanos == 0L) {
|
||||
timeOfFirstRowNanos = System.nanoTime()
|
||||
}
|
||||
|
||||
val row = mutableListOf<String>()
|
||||
val row = mutableListOf<String?>()
|
||||
for (i in 0 until numColumns) {
|
||||
val columnName: String = getColumnName(i)
|
||||
try {
|
||||
@@ -460,7 +460,7 @@ internal class SpinnerServer(
|
||||
|
||||
data class QueryResult(
|
||||
val columns: List<String>,
|
||||
val rows: List<List<String>>,
|
||||
val rows: List<List<String?>>,
|
||||
val rowCount: Int = rows.size,
|
||||
val timeToFirstRow: String,
|
||||
val timeToReadRows: String
|
||||
|
||||
Reference in New Issue
Block a user