@ -58,14 +58,14 @@ object OpenGroupManager {
}
}
@WorkerThread
@WorkerThread
fun add ( server : String , room : String , publicKey : String , context : Context ) {
fun add ( server : String , room : String , publicKey : String , context : Context ) : OpenGroupApi . RoomInfo ? {
val openGroupID = " $server . $room "
val openGroupID = " $server . $room "
var threadID = GroupManager . getOpenGroupThreadID ( openGroupID , context )
var threadID = GroupManager . getOpenGroupThreadID ( openGroupID , context )
val storage = MessagingModuleConfiguration . shared . storage
val storage = MessagingModuleConfiguration . shared . storage
val threadDB = DatabaseComponent . get ( context ) . lokiThreadDatabase ( )
val threadDB = DatabaseComponent . get ( context ) . lokiThreadDatabase ( )
// Check it it's added already
// Check it it's added already
val existingOpenGroup = threadDB . getOpenGroupChat ( threadID )
val existingOpenGroup = threadDB . getOpenGroupChat ( threadID )
if ( existingOpenGroup != null ) { return }
if ( existingOpenGroup != null ) { return null }
// Clear any existing data if needed
// Clear any existing data if needed
storage . removeLastDeletionServerID ( room , server )
storage . removeLastDeletionServerID ( room , server )
storage . removeLastMessageServerID ( room , server )
storage . removeLastMessageServerID ( room , server )
@ -73,18 +73,17 @@ object OpenGroupManager {
storage . removeLastOutboxMessageId ( server )
storage . removeLastOutboxMessageId ( server )
// Store the public key
// Store the public key
storage . setOpenGroupPublicKey ( server , publicKey )
storage . setOpenGroupPublicKey ( server , publicKey )
// Get capabilities
// Get capabilities & room info
val capabilities = OpenGroupApi . getCapabilities ( server ) . get ( )
val ( capabilities , info ) = OpenGroupApi . getCapabilities AndRoomInfo ( room , server ) . get ( )
storage . setServerCapabilities ( server , capabilities . capabilities )
storage . setServerCapabilities ( server , capabilities . capabilities )
// Get room info
val info = OpenGroupApi . getRoomInfo ( room , server ) . get ( )
storage . setUserCount ( room , server , info . activeUsers )
storage . setUserCount ( room , server , info . activeUsers )
// Create the group locally if not available already
// Create the group locally if not available already
if ( threadID < 0 ) {
if ( threadID < 0 ) {
threadID = GroupManager . createOpenGroup ( openGroupID , context , null , info . name ) . threadId
threadID = GroupManager . createOpenGroup ( openGroupID , context , null , info . name ) . threadId
}
}
val openGroup = OpenGroup ( server , room , info. name , info . i nfoUpdates, publicKey )
val openGroup = OpenGroup ( server , room , publicKey, info. name , info . i mageId, info . infoUpdates )
threadDB . setOpenGroupChat ( openGroup , threadID )
threadDB . setOpenGroupChat ( openGroup , threadID )
return info
}
}
fun restartPollerForServer ( server : String ) {
fun restartPollerForServer ( server : String ) {
@ -130,12 +129,13 @@ object OpenGroupManager {
}
}
}
}
fun addOpenGroup ( urlAsString : String , context : Context ) {
fun addOpenGroup ( urlAsString : String , context : Context ) : OpenGroupApi . RoomInfo ? {
val url = HttpUrl . parse ( urlAsString ) ?: return
val url = HttpUrl . parse ( urlAsString ) ?: return null
val server = OpenGroup . getServer ( urlAsString )
val server = OpenGroup . getServer ( urlAsString )
val room = url . pathSegments ( ) . firstOrNull ( ) ?: return
val room = url . pathSegments ( ) . firstOrNull ( ) ?: return null
val publicKey = url . queryParameter ( " public_key " ) ?: return
val publicKey = url . queryParameter ( " public_key " ) ?: return null
add ( server . toString ( ) . removeSuffix ( " / " ) , room , publicKey , context ) // assume migrated from calling function
return add ( server . toString ( ) . removeSuffix ( " / " ) , room , publicKey , context ) // assume migrated from calling function
}
}
fun updateOpenGroup ( openGroup : OpenGroup , context : Context ) {
fun updateOpenGroup ( openGroup : OpenGroup , context : Context ) {