diff options
author | Allan Wang <me@allanwang.ca> | 2019-03-05 21:06:24 -0500 |
---|---|---|
committer | Allan Wang <me@allanwang.ca> | 2019-03-05 21:06:24 -0500 |
commit | 65bb9233b2a0d8734c1d13e8f3a01bee0f6c3b17 (patch) | |
tree | abe5c5db1b05757375d63c32ec8afae9893a9dee /app/src/main/kotlin/com/pitchedapps/frost/db | |
parent | 5c4400975450c9739f0986561075983e08afae89 (diff) | |
download | frost-65bb9233b2a0d8734c1d13e8f3a01bee0f6c3b17.tar.gz frost-65bb9233b2a0d8734c1d13e8f3a01bee0f6c3b17.tar.bz2 frost-65bb9233b2a0d8734c1d13e8f3a01bee0f6c3b17.zip |
Convert fbcookies to room entities
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/db')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/db/CookiesDb.kt | 50 | ||||
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/db/Database.kt | 14 |
2 files changed, 22 insertions, 42 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/db/CookiesDb.kt b/app/src/main/kotlin/com/pitchedapps/frost/db/CookiesDb.kt index 9deb57da..fb240fd3 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/db/CookiesDb.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/db/CookiesDb.kt @@ -23,6 +23,7 @@ import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query import com.pitchedapps.frost.utils.L +import com.pitchedapps.frost.utils.Prefs import com.raizlabs.android.dbflow.annotation.ConflictAction import com.raizlabs.android.dbflow.annotation.Database import com.raizlabs.android.dbflow.annotation.PrimaryKey @@ -48,12 +49,12 @@ import kotlinx.coroutines.withContext data class CookieEntity( @androidx.room.PrimaryKey var id: Long, - var name: String, - var cookie: String + var name: String?, + var cookie: String? ) : Parcelable { - override fun toString(): String = "CookieModel(${hashCode()})" + override fun toString(): String = "CookieEntity(${hashCode()})" - fun toSensitiveString(): String = "CookieModel(id=$id, name=$name, cookie=$cookie)" + fun toSensitiveString(): String = "CookieEntity(id=$id, name=$name, cookie=$cookie)" } @Dao @@ -72,6 +73,8 @@ interface CookieDao { suspend fun deleteById(id: Long) } +suspend fun CookieDao.currentCookie() = selectById(Prefs.userId) + @Database(version = CookiesDb.VERSION) object CookiesDb { const val NAME = "Cookies" @@ -86,41 +89,4 @@ data class CookieModel(@PrimaryKey var id: Long = -1L, var name: String? = null, override fun toString(): String = "CookieModel(${hashCode()})" fun toSensitiveString(): String = "CookieModel(id=$id, name=$name, cookie=$cookie)" -} - -fun loadFbCookie(id: Long): CookieModel? = - (select from CookieModel::class where (CookieModel_Table.id eq id)).querySingle() - -fun loadFbCookie(name: String): CookieModel? = - (select from CookieModel::class where (CookieModel_Table.name eq name)).querySingle() - -/** - * Loads cookies sorted by name - */ -fun loadFbCookiesAsync(callback: (cookies: List<CookieModel>) -> Unit) { - (select from CookieModel::class).orderBy(CookieModel_Table.name, true).async() - .queryListResultCallback { _, tResult -> callback(tResult) }.execute() -} - -fun loadFbCookiesSync(): List<CookieModel> = - (select from CookieModel::class).orderBy(CookieModel_Table.name, true).queryList() - -// TODO temp method until dbflow supports coroutines -suspend fun loadFbCookiesSuspend(): List<CookieModel> = withContext(Dispatchers.IO) { - loadFbCookiesSync() -} - -inline fun saveFbCookie(cookie: CookieModel, crossinline callback: (() -> Unit) = {}) { - cookie.async save { - L.d { "Fb cookie saved" } - L._d { cookie.toSensitiveString() } - callback() - } -} - -fun removeCookie(id: Long) { - loadFbCookie(id)?.async?.delete { - L.d { "Fb cookie deleted" } - L._d { id } - } -} +}
\ No newline at end of file diff --git a/app/src/main/kotlin/com/pitchedapps/frost/db/Database.kt b/app/src/main/kotlin/com/pitchedapps/frost/db/Database.kt index 34de5e07..161ed93d 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/db/Database.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/db/Database.kt @@ -5,6 +5,8 @@ import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase import androidx.room.TypeConverters +import org.koin.dsl.module.module +import org.koin.standalone.StandAloneContext interface FrostPrivateDao { fun cookieDao(): CookieDao @@ -58,5 +60,17 @@ class FrostDatabase(private val privateDb: FrostPrivateDatabase, private val pub ).build() return FrostDatabase(privateDb, publicDb) } + + fun module(context: Context) = module { + single { create(context) } + single { get<FrostDatabase>().cookieDao() } + single { get<FrostDatabase>().tabDao() } + } + + /** + * Get from koin + * For the most part, you can retrieve directly from other koin components + */ + fun get(): FrostDatabase = StandAloneContext.getKoin().koinContext.get() } } |