@ -20,14 +20,14 @@ class LokiThreadDatabase(context: Context, helper: SQLCipherOpenHelper) : Databa
companion object {
private val friendRequestTableName = " loki_thread_friend_request_database "
private val sessionResetTableName = " loki_thread_session_reset_database "
public val groupChatMappingTableName = " loki_group_chat_mapping _database"
public val publicChatTableName = " loki_public_chat _database"
public val threadID = " thread_id "
private val friendRequestStatus = " friend_request_status "
private val sessionResetStatus = " session_reset_status "
public val groupChatJSON = " group_chat_json "
public val publicChat = " public_chat "
@JvmStatic val createFriendRequestTableCommand = " CREATE TABLE $friendRequestTableName ( $threadID INTEGER PRIMARY KEY, $friendRequestStatus INTEGER DEFAULT 0); "
@JvmStatic val createSessionResetTableCommand = " CREATE TABLE $sessionResetTableName ( $threadID INTEGER PRIMARY KEY, $sessionResetStatus INTEGER DEFAULT 0); "
@JvmStatic val createGroupChatMappingTableCommand = " CREATE TABLE $ grou pChatMapping TableName ( $threadID INTEGER PRIMARY KEY, $ groupChatJSON TEXT); "
@JvmStatic val createGroupChatMappingTableCommand = " CREATE TABLE $ public ChatTableName ( $threadID INTEGER PRIMARY KEY, $ publicChat TEXT); "
}
override fun getThreadID ( hexEncodedPublicKey : String ) : Long {
@ -94,50 +94,46 @@ class LokiThreadDatabase(context: Context, helper: SQLCipherOpenHelper) : Databa
fun getAllPublicChats ( ) : Map < Long , LokiPublicChat > {
val database = databaseHelper . readableDatabase
var cursor : Cursor ? = null
val result = mutableMapOf < Long , LokiPublicChat > ( )
try {
val map = mutableMapOf < Long , LokiPublicChat > ( )
cursor = database . rawQuery ( " select * from $groupChatMappingTableName " , null )
cursor = database . rawQuery ( " select * from $publicChatTableName " , null )
while ( cursor != null && cursor . moveToNext ( ) ) {
val threadID = cursor . getLong ( Companion . threadID )
val string = cursor . getString ( groupChatJSON )
val chat = LokiPublicChat . fromJSON ( string )
if ( chat != null ) { map [ threadID ] = chat }
val threadID = cursor . getLong ( threadID )
val string = cursor . getString ( publicChat )
val publi cC hat = LokiPublicChat . fromJSON ( string )
if ( publi cC hat != null ) { result [ threadID ] = publi cC hat }
}
return map
} catch ( e : Exception ) {
// Do nothing
} finally {
cursor ?. close ( )
}
return mapOf ( )
return result
}
fun getAllPublicChatServers ( ) : Set < String > {
return getAllPublicChats ( ) . values . fold ( setOf <String > () ) { set , chat -> set . plus ( chat . server ) }
return getAllPublicChats ( ) . values . fold ( setOf () ) { set , chat -> set . plus ( chat . server ) }
}
override fun getPublicChat ( threadID : Long ) : LokiPublicChat ? {
if ( threadID < 0 ) { return null }
val database = databaseHelper . readableDatabase
return database . get ( grou pChatMapping TableName, " ${Companion.threadID} = ? " , arrayOf ( threadID . toString ( ) ) ) { cursor ->
val string = cursor . getString ( groupChatJSON )
LokiPublicChat . fromJSON ( string )
return database . get ( public ChatTableName, " ${Companion.threadID} = ? " , arrayOf ( threadID . toString ( ) ) ) { cursor ->
val publicChatAsJSON = cursor . getString ( publicChat )
LokiPublicChat . fromJSON ( publicChatAsJSON )
}
}
override fun setPublicChat ( group Chat: LokiPublicChat , threadID : Long ) {
override fun setPublicChat ( public Chat: LokiPublicChat , threadID : Long ) {
if ( threadID < 0 ) { return }
val database = databaseHelper . writableDatabase
val contentValues = ContentValues ( 2 )
contentValues . put ( Companion . threadID , threadID )
contentValues . put ( Companion . groupChatJSON, JsonUtil . toJson ( group Chat. toJSON ( ) ) )
database . insertOrUpdate ( grou pChatMapping TableName, contentValues , " ${Companion.threadID} = ? " , arrayOf ( threadID . toString ( ) ) )
contentValues . put ( Companion . publicChat, JsonUtil . toJson ( public Chat. toJSON ( ) ) )
database . insertOrUpdate ( public ChatTableName, contentValues , " ${Companion.threadID} = ? " , arrayOf ( threadID . toString ( ) ) )
}
override fun removePublicChat ( threadID : Long ) {
databaseHelper . writableDatabase . delete ( grou pChatMapping TableName, " ${Companion.threadID} = ? " , arrayOf ( threadID . toString ( ) ) )
databaseHelper . writableDatabase . delete ( public ChatTableName, " ${Companion.threadID} = ? " , arrayOf ( threadID . toString ( ) ) )
}
}