catch exceptions in Android Database helper (#7027) (#7040)

(cherry picked from commit 7ed2e73a91)

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
This commit is contained in:
Mattermost Build 2023-01-27 18:58:29 +02:00 committed by GitHub
parent cfb09ce7d7
commit ec2aeca0d0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -20,13 +20,18 @@ class DatabaseHelper {
val onlyServerUrl: String? val onlyServerUrl: String?
get() { get() {
val query = "SELECT url FROM Servers WHERE last_active_at != 0 AND identifier != ''" try {
val cursor = defaultDatabase!!.rawQuery(query) val query = "SELECT url FROM Servers WHERE last_active_at != 0 AND identifier != ''"
if (cursor.count == 1) { val cursor = defaultDatabase!!.rawQuery(query)
cursor.moveToFirst() if (cursor.count == 1) {
val url = cursor.getString(0) cursor.moveToFirst()
cursor.close() val url = cursor.getString(0)
return url cursor.close()
return url
}
} catch (e: Exception) {
e.printStackTrace()
// let it fall to return null
} }
return null return null
} }
@ -38,14 +43,19 @@ class DatabaseHelper {
} }
fun getServerUrlForIdentifier(identifier: String): String? { fun getServerUrlForIdentifier(identifier: String): String? {
val args: Array<Any?> = arrayOf(identifier) try {
val query = "SELECT url FROM Servers WHERE identifier=?" val args: Array<Any?> = arrayOf(identifier)
val cursor = defaultDatabase!!.rawQuery(query, args) val query = "SELECT url FROM Servers WHERE identifier=?"
if (cursor.count == 1) { val cursor = defaultDatabase!!.rawQuery(query, args)
cursor.moveToFirst() if (cursor.count == 1) {
val url = cursor.getString(0) cursor.moveToFirst()
cursor.close() val url = cursor.getString(0)
return url cursor.close()
return url
}
} catch (e: Exception) {
e.printStackTrace()
// let it fall to return null
} }
return null return null
} }
@ -63,19 +73,25 @@ class DatabaseHelper {
return resultMap return resultMap
} }
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace()
return null return null
} }
} }
fun getDatabaseForServer(context: Context?, serverUrl: String): Database? { fun getDatabaseForServer(context: Context?, serverUrl: String): Database? {
val args: Array<Any?> = arrayOf(serverUrl) try {
val query = "SELECT db_path FROM Servers WHERE url=?" val args: Array<Any?> = arrayOf(serverUrl)
val cursor = defaultDatabase!!.rawQuery(query, args) val query = "SELECT db_path FROM Servers WHERE url=?"
if (cursor.count == 1) { val cursor = defaultDatabase!!.rawQuery(query, args)
cursor.moveToFirst() if (cursor.count == 1) {
val databasePath = cursor.getString(0) cursor.moveToFirst()
cursor.close() val databasePath = cursor.getString(0)
return Database(databasePath, context!!) cursor.close()
return Database(databasePath, context!!)
}
} catch (e: Exception) {
e.printStackTrace()
// let it fall to return null
} }
return null return null
} }
@ -148,18 +164,23 @@ class DatabaseHelper {
} }
fun queryPostSinceForChannel(db: Database?, channelId: String): Double? { fun queryPostSinceForChannel(db: Database?, channelId: String): Double? {
if (db != null) { try {
val postsInChannelQuery = "SELECT last_fetched_at FROM MyChannel WHERE id=? LIMIT 1" if (db != null) {
val cursor1 = db.rawQuery(postsInChannelQuery, arrayOf(channelId)) val postsInChannelQuery = "SELECT last_fetched_at FROM MyChannel WHERE id=? LIMIT 1"
if (cursor1.count == 1) { val cursor1 = db.rawQuery(postsInChannelQuery, arrayOf(channelId))
cursor1.moveToFirst() if (cursor1.count == 1) {
val lastFetchedAt = cursor1.getDouble(0) cursor1.moveToFirst()
cursor1.close() val lastFetchedAt = cursor1.getDouble(0)
if (lastFetchedAt == 0.0) { cursor1.close()
return queryLastPostCreateAt(db, channelId) if (lastFetchedAt == 0.0) {
return queryLastPostCreateAt(db, channelId)
}
return lastFetchedAt
} }
return lastFetchedAt
} }
} catch (e: Exception) {
e.printStackTrace()
// let it fall to return null
} }
return null return null
} }