diff options
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt | 45 |
1 files changed, 39 insertions, 6 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt index 4c7aeedc..cf8acdd3 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt @@ -32,8 +32,15 @@ import com.mikepenz.google_material_typeface_library.GoogleMaterial import com.pitchedapps.frost.activities.LoginActivity import com.pitchedapps.frost.activities.MainActivity import com.pitchedapps.frost.activities.SelectorActivity -import com.pitchedapps.frost.dbflow.CookieModel -import com.pitchedapps.frost.dbflow.loadFbCookiesSync +import com.pitchedapps.frost.db.CookieDao +import com.pitchedapps.frost.db.CookieEntity +import com.pitchedapps.frost.db.CookieModel +import com.pitchedapps.frost.db.FbTabModel +import com.pitchedapps.frost.db.GenericDao +import com.pitchedapps.frost.db.getTabs +import com.pitchedapps.frost.db.save +import com.pitchedapps.frost.db.saveTabs +import com.pitchedapps.frost.db.selectAll import com.pitchedapps.frost.facebook.FbCookie import com.pitchedapps.frost.utils.BiometricUtils import com.pitchedapps.frost.utils.EXTRA_COOKIES @@ -41,9 +48,12 @@ import com.pitchedapps.frost.utils.L import com.pitchedapps.frost.utils.Prefs import com.pitchedapps.frost.utils.launchNewTask import com.pitchedapps.frost.utils.loadAssets +import com.raizlabs.android.dbflow.kotlinextensions.from +import com.raizlabs.android.dbflow.kotlinextensions.select import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import org.koin.android.ext.android.inject import java.util.ArrayList /** @@ -51,6 +61,9 @@ import java.util.ArrayList */ class StartActivity : KauBaseActivity() { + private val cookieDao: CookieDao by inject() + private val genericDao: GenericDao by inject() + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -69,12 +82,11 @@ class StartActivity : KauBaseActivity() { launch { val authDefer = BiometricUtils.authenticate(this@StartActivity) try { + migrate() FbCookie.switchBackUser() - val cookies = ArrayList(withContext(Dispatchers.IO) { - loadFbCookiesSync() - }) + val cookies = ArrayList(cookieDao.selectAll()) L.i { "Cookies loaded at time ${System.currentTimeMillis()}" } - L._d { "Cookies: ${cookies.joinToString("\t", transform = CookieModel::toSensitiveString)}" } + L._d { "Cookies: ${cookies.joinToString("\t", transform = CookieEntity::toSensitiveString)}" } loadAssets() authDefer.await() when { @@ -88,11 +100,32 @@ class StartActivity : KauBaseActivity() { }) } } catch (e: Exception) { + L._e(e) { "Load start failed" } showInvalidWebView() } } } + /** + * Migrate from dbflow to room + * TODO delete dbflow data + */ + private suspend fun migrate() = withContext(Dispatchers.IO) { + if (cookieDao.selectAll().isNotEmpty()) return@withContext + val cookies = (select from CookieModel::class).queryList().map { CookieEntity(it.id, it.name, it.cookie) } + if (cookies.isNotEmpty()) { + cookieDao.save(cookies) + L._d { "Migrated cookies ${cookieDao.selectAll()}" } + } + val tabs = (select from FbTabModel::class).queryList().map(FbTabModel::tab) + if (tabs.isNotEmpty()) { + genericDao.saveTabs(tabs) + L._d { "Migrated tabs ${genericDao.getTabs()}" } + } + deleteDatabase("Cookies.db") + deleteDatabase("FrostTabs.db") + } + private fun showInvalidWebView() = showInvalidView(R.string.error_webview) |