Skip to content

Commit 0bc08b6

Browse files
committed
Fix crash
1 parent f62163d commit 0bc08b6

1 file changed

Lines changed: 34 additions & 26 deletions

File tree

  • app/src/main/kotlin/db

app/src/main/kotlin/db/Db.kt

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -635,60 +635,68 @@ class EntryQueries(private val conn: SQLiteConnection) {
635635
return stmt.getColumnNames().indexOf(name)
636636
}
637637

638+
private fun SQLiteStatement.getTextSafe(index: Int): String? {
639+
return try {
640+
if (index < 0) null else getText(index)
641+
} catch (e: NullPointerException) {
642+
null
643+
}
644+
}
645+
638646
private fun statementToEntriesAdapterRow(stmt: SQLiteStatement): EntriesAdapterRow {
639647
return EntriesAdapterRow(
640-
id = stmt.getText(getColumnIndex(stmt, "id")),
641-
feedId = stmt.getText(getColumnIndex(stmt, "feed_id")),
648+
id = stmt.getTextSafe(getColumnIndex(stmt, "id")) ?: "",
649+
feedId = stmt.getTextSafe(getColumnIndex(stmt, "feed_id")) ?: "",
642650
extBookmarked = stmt.getInt(getColumnIndex(stmt, "ext_bookmarked")) == 1,
643651
extShowPreviewImages = stmt.getInt(getColumnIndex(stmt, "ext_show_preview_images")) == 1,
644-
extOpenGraphImageUrl = stmt.getText(getColumnIndex(stmt, "ext_og_image_url")),
652+
extOpenGraphImageUrl = stmt.getTextSafe(getColumnIndex(stmt, "ext_og_image_url")) ?: "",
645653
extOpenGraphImageWidth = stmt.getInt(getColumnIndex(stmt, "ext_og_image_width")),
646654
extOpenGraphImageHeight = stmt.getInt(getColumnIndex(stmt, "ext_og_image_height")),
647-
title = stmt.getText(getColumnIndex(stmt, "title")),
648-
feedTitle = stmt.getText(getColumnIndex(stmt, "feed_title")),
649-
published = OffsetDateTime.parse(stmt.getText(getColumnIndex(stmt, "published"))),
650-
summary = stmt.getText(getColumnIndex(stmt, "summary")) ?: "",
655+
title = stmt.getTextSafe(getColumnIndex(stmt, "title")) ?: "",
656+
feedTitle = stmt.getTextSafe(getColumnIndex(stmt, "feed_title")) ?: "",
657+
published = runCatching { OffsetDateTime.parse(stmt.getTextSafe(getColumnIndex(stmt, "published"))) }.getOrDefault(OffsetDateTime.now()),
658+
summary = stmt.getTextSafe(getColumnIndex(stmt, "summary")) ?: "",
651659
extRead = stmt.getInt(getColumnIndex(stmt, "ext_read")) == 1,
652660
extOpenEntriesInBrowser = stmt.getInt(getColumnIndex(stmt, "ext_open_entries_in_browser")) == 1,
653-
links = jsonToLinks(stmt.getText(getColumnIndex(stmt, "links")))
661+
links = jsonToLinks(stmt.getTextSafe(getColumnIndex(stmt, "links")))
654662
)
655663
}
656664

657665
private fun statementToSelectByQuery(stmt: SQLiteStatement): SelectByQuery {
658666
return SelectByQuery(
659-
id = stmt.getText(0),
667+
id = stmt.getTextSafe(0) ?: "",
660668
extShowPreviewImages = stmt.getInt(1) == 1,
661-
extOpenGraphImageUrl = stmt.getText(2),
669+
extOpenGraphImageUrl = stmt.getTextSafe(2) ?: "",
662670
extOpenGraphImageWidth = stmt.getInt(3),
663671
extOpenGraphImageHeight = stmt.getInt(4),
664-
title = stmt.getText(5),
665-
feedTitle = stmt.getText(6),
666-
published = OffsetDateTime.parse(stmt.getText(7)),
667-
summary = stmt.getText(8),
672+
title = stmt.getTextSafe(5) ?: "",
673+
feedTitle = stmt.getTextSafe(6) ?: "",
674+
published = runCatching { OffsetDateTime.parse(stmt.getTextSafe(7)) }.getOrDefault(OffsetDateTime.now()),
675+
summary = stmt.getTextSafe(8) ?: "",
668676
extRead = stmt.getInt(9) == 1,
669677
extOpenEntriesInBrowser = stmt.getInt(10) == 1,
670-
links = jsonToLinks(stmt.getText(11))
678+
links = jsonToLinks(stmt.getTextSafe(11))
671679
)
672680
}
673681

674682
private fun statementToEntryWithoutContent(stmt: SQLiteStatement): EntryWithoutContent {
675683
return EntryWithoutContent(
676-
links = jsonToLinks(stmt.getText(0)),
677-
summary = stmt.getText(1),
678-
id = stmt.getText(2),
679-
feedId = stmt.getText(3),
680-
title = stmt.getText(4),
681-
published = OffsetDateTime.parse(stmt.getText(5)),
682-
updated = OffsetDateTime.parse(stmt.getText(6)),
683-
authorName = stmt.getText(7),
684+
links = jsonToLinks(stmt.getTextSafe(0)),
685+
summary = stmt.getTextSafe(1),
686+
id = stmt.getTextSafe(2) ?: "",
687+
feedId = stmt.getTextSafe(3) ?: "",
688+
title = stmt.getTextSafe(4) ?: "",
689+
published = runCatching { OffsetDateTime.parse(stmt.getTextSafe(5)) }.getOrDefault(OffsetDateTime.now()),
690+
updated = runCatching { OffsetDateTime.parse(stmt.getTextSafe(6)) }.getOrDefault(OffsetDateTime.now()),
691+
authorName = stmt.getTextSafe(7) ?: "",
684692
extRead = stmt.getInt(8) == 1,
685693
extReadSynced = stmt.getInt(9) == 1,
686694
extBookmarked = stmt.getInt(10) == 1,
687695
extBookmarkedSynced = stmt.getInt(11) == 1,
688-
extNextcloudGuidHash = stmt.getText(12),
689-
extCommentsUrl = stmt.getText(13),
696+
extNextcloudGuidHash = stmt.getTextSafe(12) ?: "",
697+
extCommentsUrl = stmt.getTextSafe(13) ?: "",
690698
extOpenGraphImageChecked = stmt.getInt(14) == 1,
691-
extOpenGraphImageUrl = stmt.getText(15),
699+
extOpenGraphImageUrl = stmt.getTextSafe(15) ?: "",
692700
extOpenGraphImageWidth = stmt.getInt(16),
693701
extOpenGraphImageHeight = stmt.getInt(17)
694702
)

0 commit comments

Comments
 (0)