Skip to content

Commit

Permalink
Inject signal database
Browse files Browse the repository at this point in the history
  • Loading branch information
SeniorZhai committed Dec 2, 2024
1 parent a09ba34 commit c1e1d8b
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import one.mixin.android.crypto.vo.RatchetSenderKey
import one.mixin.android.crypto.vo.SenderKey
import one.mixin.android.crypto.vo.Session
import one.mixin.android.crypto.vo.SignedPreKey
import one.mixin.android.db.MixinDatabase

@Database(
entities = [
Expand Down Expand Up @@ -67,4 +68,9 @@ abstract class SignalDatabase : RoomDatabase() {
object : RoomDatabase.Callback() {
}
}

override fun close() {
INSTANCE = null
super.close()
}
}
10 changes: 10 additions & 0 deletions app/src/main/java/one/mixin/android/db/DatabaseProvider.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package one.mixin.android.db

import android.content.Context
import one.mixin.android.crypto.db.SignalDatabase
import one.mixin.android.fts.FtsDatabase
import one.mixin.android.db.pending.PendingDatabase
import one.mixin.android.db.pending.PendingDatabaseImp
Expand All @@ -13,6 +14,7 @@ class DatabaseProvider @Inject constructor(
private var mixinDatabase: MixinDatabase? = null
private var ftsDatabase: FtsDatabase? = null
private var pendingDatabase: PendingDatabaseImp? = null
private var signalDatabase: SignalDatabase? = null

@Synchronized
fun getMixinDatabase(): MixinDatabase {
Expand All @@ -29,6 +31,11 @@ class DatabaseProvider @Inject constructor(
return pendingDatabase ?: throw IllegalStateException("PendingDatabase is not initialized")
}

@Synchronized
fun getSignalDatabase(): SignalDatabase {
return signalDatabase ?: throw IllegalStateException("SignalDatabase is not initialized")
}

private var identityNumber: String? = null
@Synchronized
fun initAllDatabases() {
Expand Down Expand Up @@ -56,5 +63,8 @@ class DatabaseProvider @Inject constructor(

pendingDatabase?.close()
pendingDatabase = null

signalDatabase?.close()
signalDatabase = null
}
}
15 changes: 8 additions & 7 deletions app/src/main/java/one/mixin/android/di/DatabaseModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,21 @@ import javax.inject.Singleton
@InstallIn(SingletonComponent::class)
@Module
internal object DatabaseModule {
@Singleton
@Provides
fun provideSignalDb(app: Application) = SignalDatabase.getDatabase(app)

@Singleton
@Provides
fun provideRatchetSenderKeyDao(db: SignalDatabase) = db.ratchetSenderKeyDao()

@Singleton
@Provides
fun provideDatabaseProvider(app: Application): DatabaseProvider {
return DatabaseProvider(app)
}

@Provides
fun provideSignalDb(databaseProvider: DatabaseProvider): SignalDatabase {
return databaseProvider.getSignalDatabase()
}

@Provides
fun provideRatchetSenderKeyDao(db: SignalDatabase) = db.ratchetSenderKeyDao()

@Provides
fun provideAppDatabase(
databaseProvider: DatabaseProvider
Expand Down

0 comments on commit c1e1d8b

Please sign in to comment.