Other fixes as per https://cashapp.github.io/sqldelight/2.0.0/upgrading-2.0/
This commit is contained in:
@@ -17,8 +17,10 @@
|
||||
package io.element.encrypteddb
|
||||
|
||||
import android.content.Context
|
||||
import app.cash.sqldelight.android.AndroidSqliteDriver
|
||||
import app.cash.sqldelight.db.QueryResult
|
||||
import app.cash.sqldelight.db.SqlDriver
|
||||
import app.cash.sqldelight.db.SqlSchema
|
||||
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
|
||||
import io.element.encrypteddb.passphrase.PassphraseProvider
|
||||
import net.sqlcipher.database.SupportFactory
|
||||
|
||||
@@ -35,7 +37,7 @@ class SqlCipherDriverFactory(
|
||||
* @param name The name of the database to create.
|
||||
* @param context Android [Context], used to instantiate the driver.
|
||||
*/
|
||||
fun create(schema: SqlDriver.Schema, name: String, context: Context): SqlDriver {
|
||||
fun create(schema: SqlSchema<QueryResult.Value<Unit>>, name: String, context: Context): SqlDriver {
|
||||
val passphrase = passphraseProvider.getPassphrase()
|
||||
val factory = SupportFactory(passphrase)
|
||||
return AndroidSqliteDriver(schema = schema, context = context, name = name, factory = factory)
|
||||
|
||||
@@ -16,10 +16,11 @@
|
||||
|
||||
package io.element.android.libraries.sessionstorage.impl
|
||||
|
||||
import app.cash.sqldelight.coroutines.asFlow
|
||||
import app.cash.sqldelight.coroutines.mapToList
|
||||
import app.cash.sqldelight.coroutines.mapToOneOrNull
|
||||
import com.squareup.anvil.annotations.ContributesBinding
|
||||
import app.cash.sqldelight.runtime.coroutines.asFlow
|
||||
import app.cash.sqldelight.runtime.coroutines.mapToList
|
||||
import app.cash.sqldelight.runtime.coroutines.mapToOneOrNull
|
||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||
import io.element.android.libraries.di.AppScope
|
||||
import io.element.android.libraries.di.SingleIn
|
||||
import io.element.android.libraries.sessionstorage.api.LoggedInState
|
||||
@@ -34,12 +35,13 @@ import javax.inject.Inject
|
||||
@ContributesBinding(AppScope::class)
|
||||
class DatabaseSessionStore @Inject constructor(
|
||||
private val database: SessionDatabase,
|
||||
private val dispatchers: CoroutineDispatchers,
|
||||
) : SessionStore {
|
||||
|
||||
override fun isLoggedIn(): Flow<LoggedInState> {
|
||||
return database.sessionDataQueries.selectFirst()
|
||||
.asFlow()
|
||||
.mapToOneOrNull()
|
||||
.mapToOneOrNull(dispatchers.io)
|
||||
.map {
|
||||
if (it == null) {
|
||||
LoggedInState.NotLoggedIn
|
||||
@@ -96,7 +98,7 @@ class DatabaseSessionStore @Inject constructor(
|
||||
Timber.w("Observing session list!")
|
||||
return database.sessionDataQueries.selectAll()
|
||||
.asFlow()
|
||||
.mapToList()
|
||||
.mapToList(dispatchers.io)
|
||||
.map { it.map { sessionData -> sessionData.toApiModel() } }
|
||||
}
|
||||
|
||||
|
||||
@@ -16,12 +16,15 @@
|
||||
|
||||
package io.element.android.libraries.sessionstorage.impl
|
||||
|
||||
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver
|
||||
import app.cash.turbine.test
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import app.cash.sqldelight.sqlite.driver.JdbcSqliteDriver
|
||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||
import io.element.android.libraries.matrix.session.SessionData
|
||||
import io.element.android.libraries.sessionstorage.api.LoggedInState
|
||||
import io.element.android.libraries.sessionstorage.api.LoginType
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.test.UnconfinedTestDispatcher
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
@@ -44,6 +47,7 @@ class DatabaseSessionStoreTests {
|
||||
loginType = LoginType.UNKNOWN.name,
|
||||
)
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
@Before
|
||||
fun setup() {
|
||||
// Initialise in memory SQLite driver
|
||||
@@ -51,7 +55,14 @@ class DatabaseSessionStoreTests {
|
||||
SessionDatabase.Schema.create(driver)
|
||||
|
||||
database = SessionDatabase(driver)
|
||||
databaseSessionStore = DatabaseSessionStore(database)
|
||||
databaseSessionStore = DatabaseSessionStore(
|
||||
database = database,
|
||||
dispatchers = CoroutineDispatchers(
|
||||
io = UnconfinedTestDispatcher(),
|
||||
computation = UnconfinedTestDispatcher(),
|
||||
main = UnconfinedTestDispatcher(),
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user