mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-27 23:40:33 +05:30
Convert CustomInstanceDao methods to suspend functions.
This commit is contained in:
parent
cabbef23b3
commit
3ef8dc0092
@ -1,7 +1,6 @@
|
||||
package com.github.libretube.db.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Delete
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy
|
||||
import androidx.room.Query
|
||||
@ -10,14 +9,11 @@ import com.github.libretube.db.obj.CustomInstance
|
||||
@Dao
|
||||
interface CustomInstanceDao {
|
||||
@Query("SELECT * FROM customInstance")
|
||||
fun getAll(): List<CustomInstance>
|
||||
suspend fun getAll(): List<CustomInstance>
|
||||
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
fun insertAll(vararg customInstances: CustomInstance)
|
||||
|
||||
@Delete
|
||||
fun delete(customInstance: CustomInstance)
|
||||
suspend fun insertAll(customInstances: List<CustomInstance>)
|
||||
|
||||
@Query("DELETE FROM customInstance")
|
||||
fun deleteAll()
|
||||
suspend fun deleteAll()
|
||||
}
|
||||
|
@ -54,9 +54,7 @@ object BackupHelper {
|
||||
*backupFile.watchPositions.orEmpty().toTypedArray()
|
||||
)
|
||||
Database.localSubscriptionDao().insertAll(backupFile.localSubscriptions.orEmpty())
|
||||
Database.customInstanceDao().insertAll(
|
||||
*backupFile.customInstances.orEmpty().toTypedArray()
|
||||
)
|
||||
Database.customInstanceDao().insertAll(backupFile.customInstances.orEmpty())
|
||||
Database.playlistBookmarkDao().insertAll(
|
||||
*backupFile.playlistBookmarks.orEmpty().toTypedArray()
|
||||
)
|
||||
|
@ -5,12 +5,13 @@ import android.os.Bundle
|
||||
import android.widget.Toast
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.databinding.DialogCustomInstanceBinding
|
||||
import com.github.libretube.db.DatabaseHolder.Database
|
||||
import com.github.libretube.db.obj.CustomInstance
|
||||
import com.github.libretube.extensions.query
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import kotlinx.coroutines.launch
|
||||
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
|
||||
|
||||
class CustomInstanceDialog : DialogFragment() {
|
||||
@ -28,13 +29,12 @@ class CustomInstanceDialog : DialogFragment() {
|
||||
|
||||
if (instanceName.isNotEmpty() && apiUrl.isNotEmpty() && frontendUrl.isNotEmpty()) {
|
||||
if (apiUrl.toHttpUrlOrNull() != null && frontendUrl.toHttpUrlOrNull() != null) {
|
||||
query {
|
||||
lifecycleScope.launch {
|
||||
Database.customInstanceDao()
|
||||
.insertAll(CustomInstance(instanceName, apiUrl, frontendUrl))
|
||||
}
|
||||
|
||||
.insertAll(listOf(CustomInstance(instanceName, apiUrl, frontendUrl)))
|
||||
ActivityCompat.recreate(requireActivity())
|
||||
dismiss()
|
||||
}
|
||||
} else {
|
||||
Toast.makeText(requireContext(), R.string.invalid_url, Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
|
@ -12,10 +12,11 @@ import com.github.libretube.constants.YOUTUBE_FRONTEND_URL
|
||||
import com.github.libretube.databinding.DialogShareBinding
|
||||
import com.github.libretube.db.DatabaseHolder.Database
|
||||
import com.github.libretube.enums.ShareObjectType
|
||||
import com.github.libretube.extensions.awaitQuery
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.obj.ShareData
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.runBlocking
|
||||
|
||||
class ShareDialog(
|
||||
private val id: String,
|
||||
@ -32,7 +33,9 @@ class ShareDialog(
|
||||
val instanceUrl = getCustomInstanceFrontendUrl()
|
||||
val shareableTitle = getShareableTitle(shareData)
|
||||
// add instanceUrl option if custom instance frontend url available
|
||||
if (instanceUrl != "") shareOptions += getString(R.string.instance)
|
||||
if (instanceUrl.isNotEmpty()) {
|
||||
shareOptions += getString(R.string.instance)
|
||||
}
|
||||
|
||||
if (shareObjectType == ShareObjectType.VIDEO) {
|
||||
setupTimeStampBinding()
|
||||
@ -97,15 +100,12 @@ class ShareDialog(
|
||||
)
|
||||
|
||||
// get the api urls of the other custom instances
|
||||
val customInstances = awaitQuery {
|
||||
val customInstances = runBlocking(Dispatchers.IO) {
|
||||
Database.customInstanceDao().getAll()
|
||||
}
|
||||
|
||||
// return the custom instance frontend url if available
|
||||
customInstances.forEach { instance ->
|
||||
if (instance.apiUrl == instancePref) return instance.frontendUrl
|
||||
}
|
||||
return ""
|
||||
return customInstances.firstOrNull { it.apiUrl == instancePref }?.frontendUrl.orEmpty()
|
||||
}
|
||||
|
||||
private fun getShareableTitle(shareData: ShareData): String {
|
||||
|
@ -13,7 +13,6 @@ import com.github.libretube.constants.FALLBACK_INSTANCES_URL
|
||||
import com.github.libretube.constants.PIPED_INSTANCES_URL
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.db.DatabaseHolder.Database
|
||||
import com.github.libretube.extensions.awaitQuery
|
||||
import com.github.libretube.extensions.toastFromMainThread
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||
@ -21,6 +20,9 @@ import com.github.libretube.ui.dialogs.CustomInstanceDialog
|
||||
import com.github.libretube.ui.dialogs.DeleteAccountDialog
|
||||
import com.github.libretube.ui.dialogs.LoginDialog
|
||||
import com.github.libretube.ui.dialogs.LogoutDialog
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
class InstanceSettings : BasePreferenceFragment() {
|
||||
override val titleResourceId: Int = R.string.instance
|
||||
@ -82,10 +84,10 @@ class InstanceSettings : BasePreferenceFragment() {
|
||||
|
||||
val clearCustomInstances = findPreference<Preference>(PreferenceKeys.CLEAR_CUSTOM_INSTANCES)
|
||||
clearCustomInstances?.setOnPreferenceClickListener {
|
||||
awaitQuery {
|
||||
lifecycleScope.launch {
|
||||
Database.customInstanceDao().deleteAll()
|
||||
}
|
||||
ActivityCompat.recreate(requireActivity())
|
||||
}
|
||||
true
|
||||
}
|
||||
|
||||
@ -116,7 +118,7 @@ class InstanceSettings : BasePreferenceFragment() {
|
||||
private fun initCustomInstances(instancePref: ListPreference) {
|
||||
val appContext = requireContext().applicationContext
|
||||
lifecycleScope.launchWhenCreated {
|
||||
val customInstances = awaitQuery {
|
||||
val customInstances = withContext(Dispatchers.IO) {
|
||||
Database.customInstanceDao().getAll()
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user