diff --git a/app/src/main/java/com/github/libretube/api/ExternalApi.kt b/app/src/main/java/com/github/libretube/api/ExternalApi.kt index ab9c8d3eb..196ff53cb 100644 --- a/app/src/main/java/com/github/libretube/api/ExternalApi.kt +++ b/app/src/main/java/com/github/libretube/api/ExternalApi.kt @@ -1,6 +1,5 @@ package com.github.libretube.api -import com.github.libretube.api.obj.Instances import com.github.libretube.constants.GITHUB_API_URL import com.github.libretube.constants.PIPED_INSTANCES_URL import com.github.libretube.obj.update.UpdateInfo diff --git a/app/src/main/java/com/github/libretube/api/PipedApi.kt b/app/src/main/java/com/github/libretube/api/PipedApi.kt index 1dd62eb3c..a6eb42c6d 100644 --- a/app/src/main/java/com/github/libretube/api/PipedApi.kt +++ b/app/src/main/java/com/github/libretube/api/PipedApi.kt @@ -1,21 +1,5 @@ package com.github.libretube.api -import com.github.libretube.api.obj.Channel -import com.github.libretube.api.obj.CommentsPage -import com.github.libretube.api.obj.DeleteUserRequest -import com.github.libretube.api.obj.Login -import com.github.libretube.api.obj.Message -import com.github.libretube.api.obj.Playlist -import com.github.libretube.api.obj.PlaylistId -import com.github.libretube.api.obj.Playlists -import com.github.libretube.api.obj.SearchResult -import com.github.libretube.api.obj.Segments -import com.github.libretube.api.obj.StreamItem -import com.github.libretube.api.obj.Streams -import com.github.libretube.api.obj.Subscribe -import com.github.libretube.api.obj.Subscribed -import com.github.libretube.api.obj.Subscription -import com.github.libretube.api.obj.Token import retrofit2.http.Body import retrofit2.http.GET import retrofit2.http.Header diff --git a/app/src/main/java/com/github/libretube/api/SubscriptionHelper.kt b/app/src/main/java/com/github/libretube/api/SubscriptionHelper.kt index c39936590..86c241d7f 100644 --- a/app/src/main/java/com/github/libretube/api/SubscriptionHelper.kt +++ b/app/src/main/java/com/github/libretube/api/SubscriptionHelper.kt @@ -1,11 +1,11 @@ package com.github.libretube.api import android.util.Log -import com.github.libretube.api.obj.Subscribe import com.github.libretube.db.DatabaseHolder.Companion.Database import com.github.libretube.db.obj.LocalSubscription import com.github.libretube.extensions.TAG -import com.github.libretube.extensions.await +import com.github.libretube.extensions.awaitQuery +import com.github.libretube.extensions.query import com.github.libretube.util.PreferenceHelper import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -26,11 +26,11 @@ object SubscriptionHelper { } } } else { - Thread { + query { Database.localSubscriptionDao().insertAll( LocalSubscription(channelId) ) - }.start() + } } } @@ -47,11 +47,11 @@ object SubscriptionHelper { } } } else { - Thread { + query { Database.localSubscriptionDao().delete( LocalSubscription(channelId) ) - }.start() + } } } @@ -68,11 +68,9 @@ object SubscriptionHelper { } return isSubscribed.subscribed } else { - var isSubscribed = false - Thread { - isSubscribed = Database.localSubscriptionDao().includes(channelId) - }.await() - return isSubscribed + return awaitQuery { + Database.localSubscriptionDao().includes(channelId) + } } } @@ -93,20 +91,18 @@ object SubscriptionHelper { newChannels.forEach { newLocalSubscriptions += LocalSubscription(channelId = it) } - Thread { + query { Database.localSubscriptionDao().insertAll( *newChannels.map { LocalSubscription(it) }.toTypedArray() ) - }.start() + } } } fun getLocalSubscriptions(): List { - var localSubscriptions = listOf() - Thread { - localSubscriptions = Database.localSubscriptionDao().getAll() - }.await() - return localSubscriptions + return awaitQuery { + Database.localSubscriptionDao().getAll() + } } fun getFormattedLocalSubscriptions(): String { diff --git a/app/src/main/java/com/github/libretube/db/DatabaseHelper.kt b/app/src/main/java/com/github/libretube/db/DatabaseHelper.kt index f8ea13d62..c5c2a21c8 100644 --- a/app/src/main/java/com/github/libretube/db/DatabaseHelper.kt +++ b/app/src/main/java/com/github/libretube/db/DatabaseHelper.kt @@ -6,11 +6,12 @@ import com.github.libretube.db.DatabaseHolder.Companion.Database import com.github.libretube.db.obj.SearchHistoryItem import com.github.libretube.db.obj.WatchHistoryItem import com.github.libretube.db.obj.WatchPosition +import com.github.libretube.extensions.query import com.github.libretube.extensions.toID import com.github.libretube.util.PreferenceHelper object DatabaseHelper { - fun addToWatchHistory(videoId: String, streams: com.github.libretube.api.obj.Streams) { + fun addToWatchHistory(videoId: String, streams: Streams) { val watchHistoryItem = WatchHistoryItem( videoId, streams.title, @@ -21,11 +22,11 @@ object DatabaseHelper { streams.thumbnailUrl, streams.duration ) - Thread { + query { Database.watchHistoryDao().insertAll(watchHistoryItem) val maxHistorySize = PreferenceHelper.getString(PreferenceKeys.WATCH_HISTORY_SIZE, "unlimited") - if (maxHistorySize == "unlimited") return@Thread + if (maxHistorySize == "unlimited") return@query // delete the first watch history entry if the limit is reached val watchHistory = Database.watchHistoryDao().getAll() @@ -33,15 +34,15 @@ object DatabaseHelper { Database.watchHistoryDao() .delete(watchHistory.first()) } - }.start() + } } fun removeFromWatchHistory(index: Int) { - Thread { + query { Database.watchHistoryDao().delete( Database.watchHistoryDao().getAll()[index] ) - }.start() + } } fun saveWatchPosition(videoId: String, position: Long) { @@ -49,21 +50,21 @@ object DatabaseHelper { videoId, position ) - Thread { + query { Database.watchPositionDao().insertAll(watchPosition) - }.start() + } } fun removeWatchPosition(videoId: String) { - Thread { + query { Database.watchPositionDao().findById(videoId)?.let { Database.watchPositionDao().delete(it) } - }.start() + } } fun addToSearchHistory(searchHistoryItem: SearchHistoryItem) { - Thread { + query { Database.searchHistoryDao().insertAll(searchHistoryItem) val maxHistorySize = 20 @@ -73,6 +74,6 @@ object DatabaseHelper { Database.searchHistoryDao() .delete(searchHistory.first()) } - }.start() + } } } diff --git a/app/src/main/java/com/github/libretube/extensions/Await.kt b/app/src/main/java/com/github/libretube/extensions/Await.kt deleted file mode 100644 index f1ef91038..000000000 --- a/app/src/main/java/com/github/libretube/extensions/Await.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.libretube.extensions - -fun Thread.await() { - this.apply { - start() - join() - } -} diff --git a/app/src/main/java/com/github/libretube/extensions/AwaitQuery.kt b/app/src/main/java/com/github/libretube/extensions/AwaitQuery.kt new file mode 100644 index 000000000..08f0d7ecc --- /dev/null +++ b/app/src/main/java/com/github/libretube/extensions/AwaitQuery.kt @@ -0,0 +1,13 @@ +package com.github.libretube.extensions + +fun awaitQuery( + query: () -> T +): T { + var x: T? = null + val thread = Thread { + x = query.invoke() + } + thread.start() + thread.join() + return x!! +} diff --git a/app/src/main/java/com/github/libretube/extensions/Query.kt b/app/src/main/java/com/github/libretube/extensions/Query.kt index 3cc5a81ff..273858e67 100644 --- a/app/src/main/java/com/github/libretube/extensions/Query.kt +++ b/app/src/main/java/com/github/libretube/extensions/Query.kt @@ -1,5 +1,11 @@ package com.github.libretube.extensions fun query(block: () -> Unit) { - Thread(block).start() + Thread { + try { + block.invoke() + } catch (e: Exception) { + e.printStackTrace() + } + }.start() } diff --git a/app/src/main/java/com/github/libretube/extensions/SetWatchProgressLength.kt b/app/src/main/java/com/github/libretube/extensions/SetWatchProgressLength.kt index 6eb979353..fed3039b7 100644 --- a/app/src/main/java/com/github/libretube/extensions/SetWatchProgressLength.kt +++ b/app/src/main/java/com/github/libretube/extensions/SetWatchProgressLength.kt @@ -10,15 +10,14 @@ import com.github.libretube.db.DatabaseHolder.Companion.Database */ fun View?.setWatchProgressLength(videoId: String, duration: Long) { val view = this!! - var progress: Long? = null - Thread { - try { - progress = Database.watchPositionDao().findById(videoId)?.position - } catch (e: Exception) { - progress = null + val progress = try { + awaitQuery { + Database.watchPositionDao().findById(videoId)?.position } - }.await() + } catch (e: Exception) { + return + } view.getViewTreeObserver() .addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { @@ -29,7 +28,7 @@ fun View?.setWatchProgressLength(videoId: String, duration: Long) { return } val fullWidth = (parent as LinearLayout).width - val newWidth = (fullWidth * (progress!! / (duration))) / 1000 + val newWidth = (fullWidth * (progress / duration)) / 1000 val lp = view.layoutParams lp.width = newWidth.toInt() view.layoutParams = lp diff --git a/app/src/main/java/com/github/libretube/models/SubscriptionsViewModel.kt b/app/src/main/java/com/github/libretube/models/SubscriptionsViewModel.kt index fd139e4be..0a9518fc4 100644 --- a/app/src/main/java/com/github/libretube/models/SubscriptionsViewModel.kt +++ b/app/src/main/java/com/github/libretube/models/SubscriptionsViewModel.kt @@ -5,8 +5,6 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import com.github.libretube.api.RetrofitInstance import com.github.libretube.api.SubscriptionHelper -import com.github.libretube.api.obj.StreamItem -import com.github.libretube.api.obj.Subscription import com.github.libretube.extensions.TAG import com.github.libretube.extensions.toID import com.github.libretube.util.PreferenceHelper diff --git a/app/src/main/java/com/github/libretube/services/BackgroundMode.kt b/app/src/main/java/com/github/libretube/services/BackgroundMode.kt index 2c715e3a9..457692b14 100644 --- a/app/src/main/java/com/github/libretube/services/BackgroundMode.kt +++ b/app/src/main/java/com/github/libretube/services/BackgroundMode.kt @@ -14,9 +14,6 @@ import android.widget.Toast import com.fasterxml.jackson.databind.ObjectMapper import com.github.libretube.R import com.github.libretube.api.RetrofitInstance -import com.github.libretube.api.obj.Segment -import com.github.libretube.api.obj.Segments -import com.github.libretube.api.obj.Streams import com.github.libretube.constants.BACKGROUND_CHANNEL_ID import com.github.libretube.constants.IntentData import com.github.libretube.constants.PLAYER_NOTIFICATION_ID diff --git a/app/src/main/java/com/github/libretube/sheets/PlaylistOptionsBottomSheet.kt b/app/src/main/java/com/github/libretube/sheets/PlaylistOptionsBottomSheet.kt index 8a1201830..21451fa8b 100644 --- a/app/src/main/java/com/github/libretube/sheets/PlaylistOptionsBottomSheet.kt +++ b/app/src/main/java/com/github/libretube/sheets/PlaylistOptionsBottomSheet.kt @@ -6,7 +6,6 @@ import android.util.Log import android.widget.Toast import com.github.libretube.R import com.github.libretube.api.RetrofitInstance -import com.github.libretube.api.obj.PlaylistId import com.github.libretube.databinding.DialogTextPreferenceBinding import com.github.libretube.extensions.TAG import com.github.libretube.extensions.toID diff --git a/app/src/main/java/com/github/libretube/ui/adapters/ChannelAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/ChannelAdapter.kt index 2f80e0ea7..f8c9b7905 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/ChannelAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/ChannelAdapter.kt @@ -5,7 +5,6 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView -import com.github.libretube.api.obj.StreamItem import com.github.libretube.databinding.VideoRowBinding import com.github.libretube.extensions.formatShort import com.github.libretube.extensions.setWatchProgressLength diff --git a/app/src/main/java/com/github/libretube/ui/adapters/ChaptersAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/ChaptersAdapter.kt index f75b43b85..baf9e555f 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/ChaptersAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/ChaptersAdapter.kt @@ -4,7 +4,6 @@ import android.graphics.Color import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.github.libretube.api.obj.ChapterSegment import com.github.libretube.databinding.ChapterColumnBinding import com.github.libretube.util.ImageHelper import com.github.libretube.util.ThemeHelper diff --git a/app/src/main/java/com/github/libretube/ui/adapters/CommentsAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/CommentsAdapter.kt index 199162429..3f9b3bef6 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/CommentsAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/CommentsAdapter.kt @@ -9,7 +9,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.github.libretube.R import com.github.libretube.api.RetrofitInstance -import com.github.libretube.api.obj.Comment import com.github.libretube.api.obj.CommentsPage import com.github.libretube.databinding.CommentsRowBinding import com.github.libretube.extensions.TAG diff --git a/app/src/main/java/com/github/libretube/ui/adapters/LegacySubscriptionAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/LegacySubscriptionAdapter.kt index 2bd0ad2bc..8b10d9053 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/LegacySubscriptionAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/LegacySubscriptionAdapter.kt @@ -3,7 +3,6 @@ package com.github.libretube.ui.adapters import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.github.libretube.api.obj.Subscription import com.github.libretube.databinding.LegacySubscriptionChannelBinding import com.github.libretube.extensions.toID import com.github.libretube.util.ImageHelper diff --git a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt index 8880c73f7..514db53dd 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt @@ -8,8 +8,6 @@ import android.view.ViewGroup import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView import com.github.libretube.api.RetrofitInstance -import com.github.libretube.api.obj.PlaylistId -import com.github.libretube.api.obj.StreamItem import com.github.libretube.databinding.PlaylistRowBinding import com.github.libretube.extensions.TAG import com.github.libretube.extensions.setFormattedDuration diff --git a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt index a4614fa49..a11ce1d87 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt @@ -8,8 +8,6 @@ import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView import com.github.libretube.R import com.github.libretube.api.RetrofitInstance -import com.github.libretube.api.obj.PlaylistId -import com.github.libretube.api.obj.Playlists import com.github.libretube.databinding.PlaylistsRowBinding import com.github.libretube.extensions.TAG import com.github.libretube.sheets.PlaylistOptionsBottomSheet diff --git a/app/src/main/java/com/github/libretube/ui/adapters/RepliesAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/RepliesAdapter.kt index ccf0571f8..8488cfe38 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/RepliesAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/RepliesAdapter.kt @@ -4,7 +4,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.github.libretube.api.obj.Comment import com.github.libretube.databinding.RepliesRowBinding import com.github.libretube.extensions.formatShort import com.github.libretube.util.ImageHelper diff --git a/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt index 4e77f6657..9e7dcc43c 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt @@ -7,7 +7,6 @@ import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView import com.github.libretube.R import com.github.libretube.api.SubscriptionHelper -import com.github.libretube.api.obj.SearchItem import com.github.libretube.databinding.ChannelRowBinding import com.github.libretube.databinding.PlaylistSearchRowBinding import com.github.libretube.databinding.VideoRowBinding @@ -110,7 +109,10 @@ class SearchAdapter( } } - private fun bindChannel(item: com.github.libretube.api.obj.SearchItem, binding: ChannelRowBinding) { + private fun bindChannel( + item: com.github.libretube.api.obj.SearchItem, + binding: ChannelRowBinding + ) { binding.apply { ImageHelper.loadImage(item.thumbnail, searchChannelImage) searchChannelName.text = item.name @@ -157,7 +159,10 @@ class SearchAdapter( } } - private fun bindPlaylist(item: com.github.libretube.api.obj.SearchItem, binding: PlaylistSearchRowBinding) { + private fun bindPlaylist( + item: com.github.libretube.api.obj.SearchItem, + binding: PlaylistSearchRowBinding + ) { binding.apply { ImageHelper.loadImage(item.thumbnail, searchThumbnail) if (item.videos?.toInt() != -1) searchPlaylistNumber.text = item.videos.toString() diff --git a/app/src/main/java/com/github/libretube/ui/adapters/SearchHistoryAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/SearchHistoryAdapter.kt index 1326ac7ee..d050c624d 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/SearchHistoryAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/SearchHistoryAdapter.kt @@ -7,6 +7,7 @@ import androidx.recyclerview.widget.RecyclerView import com.github.libretube.databinding.SearchhistoryRowBinding import com.github.libretube.db.DatabaseHolder.Companion.Database import com.github.libretube.db.obj.SearchHistoryItem +import com.github.libretube.extensions.query class SearchHistoryAdapter( private var historyList: List, @@ -32,11 +33,11 @@ class SearchHistoryAdapter( deleteHistory.setOnClickListener { val itemIndex = historyList.indexOf(historyQuery) historyList -= historyQuery - Thread { + query { Database.searchHistoryDao().delete( SearchHistoryItem(query = historyQuery) ) - }.start() + } notifyItemRemoved(itemIndex) } diff --git a/app/src/main/java/com/github/libretube/ui/adapters/SubscriptionChannelAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/SubscriptionChannelAdapter.kt index ee7f36f9d..2d25c107c 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/SubscriptionChannelAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/SubscriptionChannelAdapter.kt @@ -5,7 +5,6 @@ import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.github.libretube.R import com.github.libretube.api.SubscriptionHelper -import com.github.libretube.api.obj.Subscription import com.github.libretube.databinding.ChannelSubscriptionRowBinding import com.github.libretube.extensions.toID import com.github.libretube.util.ImageHelper diff --git a/app/src/main/java/com/github/libretube/ui/adapters/TrendingAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/TrendingAdapter.kt index 8f4174e0e..13164c04d 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/TrendingAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/TrendingAdapter.kt @@ -5,7 +5,6 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView -import com.github.libretube.api.obj.StreamItem import com.github.libretube.databinding.TrendingRowBinding import com.github.libretube.extensions.formatShort import com.github.libretube.extensions.setFormattedDuration diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/AddToPlaylistDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/AddToPlaylistDialog.kt index 8b746c157..8dc58d1f2 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/AddToPlaylistDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/AddToPlaylistDialog.kt @@ -11,7 +11,6 @@ import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope import com.github.libretube.R import com.github.libretube.api.RetrofitInstance -import com.github.libretube.api.obj.PlaylistId import com.github.libretube.constants.IntentData import com.github.libretube.databinding.DialogAddtoplaylistBinding import com.github.libretube.extensions.TAG diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/BackupDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/BackupDialog.kt index c9c0b233b..8474ea0a3 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/BackupDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/BackupDialog.kt @@ -7,7 +7,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.github.libretube.R import com.github.libretube.databinding.DialogBackupBinding import com.github.libretube.db.DatabaseHolder.Companion.Database -import com.github.libretube.extensions.await import com.github.libretube.obj.BackupFile import com.github.libretube.ui.adapters.BackupOptionsAdapter import com.google.android.material.dialog.MaterialAlertDialogBuilder @@ -17,7 +16,7 @@ class BackupDialog( ) : DialogFragment() { private lateinit var binding: DialogBackupBinding - val backupFile = BackupFile() + private val backupFile = BackupFile() override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val backupOptions = listOf( @@ -42,7 +41,7 @@ class BackupDialog( .setView(binding.root) .setNegativeButton(R.string.cancel, null) .setPositiveButton(R.string.backup) { _, _ -> - Thread { + val thread = Thread { if (selected[0]) { backupFile.watchHistory = Database.watchHistoryDao().getAll() @@ -63,7 +62,9 @@ class BackupDialog( backupFile.customInstances = Database.customInstanceDao().getAll() } - }.await() + } + thread.start() + thread.join() createBackupFile(backupFile) } diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/CreatePlaylistDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/CreatePlaylistDialog.kt index 5291a679b..087cfbf8c 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/CreatePlaylistDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/CreatePlaylistDialog.kt @@ -8,7 +8,6 @@ import androidx.fragment.app.DialogFragment import androidx.lifecycle.lifecycleScope import com.github.libretube.R import com.github.libretube.api.RetrofitInstance -import com.github.libretube.api.obj.Playlists import com.github.libretube.databinding.DialogCreatePlaylistBinding import com.github.libretube.extensions.TAG import com.github.libretube.ui.fragments.LibraryFragment diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/CustomInstanceDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/CustomInstanceDialog.kt index 44058104d..86aa9343f 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/CustomInstanceDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/CustomInstanceDialog.kt @@ -8,6 +8,7 @@ import com.github.libretube.R import com.github.libretube.databinding.DialogCustomInstanceBinding import com.github.libretube.db.DatabaseHolder.Companion.Database import com.github.libretube.db.obj.CustomInstance +import com.github.libretube.extensions.query import com.github.libretube.util.ThemeHelper import com.google.android.material.dialog.MaterialAlertDialogBuilder import java.net.URL @@ -39,9 +40,9 @@ class CustomInstanceDialog : DialogFragment() { URL(customInstance.apiUrl).toURI() URL(customInstance.frontendUrl).toURI() - Thread { + query { Database.customInstanceDao().insertAll(customInstance) - }.start() + } activity?.recreate() dismiss() diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/DeleteAccountDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/DeleteAccountDialog.kt index a9b49fae0..fda1a495d 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/DeleteAccountDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/DeleteAccountDialog.kt @@ -8,7 +8,6 @@ import androidx.fragment.app.DialogFragment import androidx.lifecycle.lifecycleScope import com.github.libretube.R import com.github.libretube.api.RetrofitInstance -import com.github.libretube.api.obj.DeleteUserRequest import com.github.libretube.databinding.DialogDeleteAccountBinding import com.github.libretube.extensions.TAG import com.github.libretube.util.PreferenceHelper diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/DownloadDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/DownloadDialog.kt index 868f37416..d590722e1 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/DownloadDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/DownloadDialog.kt @@ -12,7 +12,6 @@ import androidx.fragment.app.DialogFragment import androidx.lifecycle.lifecycleScope import com.github.libretube.R import com.github.libretube.api.RetrofitInstance -import com.github.libretube.api.obj.Streams import com.github.libretube.databinding.DialogDownloadBinding import com.github.libretube.extensions.TAG import com.github.libretube.services.DownloadService diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/LoginDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/LoginDialog.kt index 28bfa929f..0f319860c 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/LoginDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/LoginDialog.kt @@ -8,7 +8,6 @@ import androidx.fragment.app.DialogFragment import androidx.lifecycle.lifecycleScope import com.github.libretube.R import com.github.libretube.api.RetrofitInstance -import com.github.libretube.api.obj.Login import com.github.libretube.databinding.DialogLoginBinding import com.github.libretube.extensions.TAG import com.github.libretube.util.PreferenceHelper diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt index 9756bc45c..6a12e33e7 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt @@ -10,8 +10,7 @@ import com.github.libretube.constants.PreferenceKeys import com.github.libretube.constants.YOUTUBE_FRONTEND_URL import com.github.libretube.databinding.DialogShareBinding import com.github.libretube.db.DatabaseHolder.Companion.Database -import com.github.libretube.db.obj.CustomInstance -import com.github.libretube.extensions.await +import com.github.libretube.extensions.awaitQuery import com.github.libretube.util.PreferenceHelper import com.google.android.material.dialog.MaterialAlertDialogBuilder @@ -80,10 +79,9 @@ class ShareDialog( ) // get the api urls of the other custom instances - var customInstances = listOf() - Thread { - customInstances = Database.customInstanceDao().getAll() - }.await() + val customInstances = awaitQuery { + Database.customInstanceDao().getAll() + } // return the custom instance frontend url if available customInstances.forEach { instance -> diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index 493c8c505..b014ed6fb 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -48,7 +48,7 @@ import com.github.libretube.db.DatabaseHelper import com.github.libretube.db.DatabaseHolder.Companion.Database import com.github.libretube.extensions.BaseFragment import com.github.libretube.extensions.TAG -import com.github.libretube.extensions.await +import com.github.libretube.extensions.awaitQuery import com.github.libretube.extensions.formatShort import com.github.libretube.extensions.hideKeyboard import com.github.libretube.extensions.query @@ -861,17 +861,19 @@ class PlayerFragment : BaseFragment() { return } // browse the watch positions - var position: Long? = null - Thread { - try { - position = Database.watchPositionDao().findById(videoId!!)?.position - // position is almost the end of the video => don't seek, start from beginning - if (position!! > streams.duration!! * 1000 * 0.9) position = null - } catch (e: Exception) { - e.printStackTrace() + val position = try { + awaitQuery { + Database.watchPositionDao().findById(videoId!!)?.position } - }.await() - if (position != null) exoPlayer.seekTo(position!!) + } catch (e: Exception) { + return + } + // position is almost the end of the video => don't seek, start from beginning + if (position != null && position < streams.duration!! * 1000 * 0.9) { + exoPlayer.seekTo( + position + ) + } } // used for autoplay and skipping to next video diff --git a/app/src/main/java/com/github/libretube/ui/fragments/SearchFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/SearchFragment.kt index c796f7bc4..1e096e471 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/SearchFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/SearchFragment.kt @@ -15,7 +15,7 @@ import com.github.libretube.databinding.FragmentSearchBinding import com.github.libretube.db.DatabaseHolder.Companion.Database import com.github.libretube.extensions.BaseFragment import com.github.libretube.extensions.TAG -import com.github.libretube.extensions.await +import com.github.libretube.extensions.awaitQuery import com.github.libretube.models.SearchViewModel import com.github.libretube.ui.activities.MainActivity import com.github.libretube.ui.adapters.SearchHistoryAdapter @@ -95,11 +95,9 @@ class SearchFragment : BaseFragment() { } private fun showHistory() { - var historyList = listOf() - Thread { - val history = Database.searchHistoryDao().getAll() - historyList = history.map { it.query } - }.await() + val historyList = awaitQuery { + Database.searchHistoryDao().getAll().map { it.query } + } if (historyList.isNotEmpty()) { binding.suggestionsRecycler.adapter = SearchHistoryAdapter( diff --git a/app/src/main/java/com/github/libretube/ui/fragments/WatchHistoryFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/WatchHistoryFragment.kt index 3ab9820e0..55145e4dc 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/WatchHistoryFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/WatchHistoryFragment.kt @@ -9,9 +9,8 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.github.libretube.databinding.FragmentWatchHistoryBinding import com.github.libretube.db.DatabaseHolder.Companion.Database -import com.github.libretube.db.obj.WatchHistoryItem import com.github.libretube.extensions.BaseFragment -import com.github.libretube.extensions.await +import com.github.libretube.extensions.awaitQuery import com.github.libretube.ui.adapters.WatchHistoryAdapter class WatchHistoryFragment : BaseFragment() { @@ -29,11 +28,9 @@ class WatchHistoryFragment : BaseFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - var watchHistory = listOf() - - Thread { - watchHistory = Database.watchHistoryDao().getAll() - }.await() + val watchHistory = awaitQuery { + Database.watchHistoryDao().getAll() + } if (watchHistory.isEmpty()) return diff --git a/app/src/main/java/com/github/libretube/ui/preferences/HistorySettings.kt b/app/src/main/java/com/github/libretube/ui/preferences/HistorySettings.kt index 04eb1fb4b..76cf62482 100644 --- a/app/src/main/java/com/github/libretube/ui/preferences/HistorySettings.kt +++ b/app/src/main/java/com/github/libretube/ui/preferences/HistorySettings.kt @@ -5,6 +5,7 @@ import androidx.preference.Preference import com.github.libretube.R import com.github.libretube.constants.PreferenceKeys import com.github.libretube.db.DatabaseHolder.Companion.Database +import com.github.libretube.extensions.query import com.github.libretube.ui.activities.SettingsActivity import com.github.libretube.ui.views.MaterialPreferenceFragment import com.google.android.material.dialog.MaterialAlertDialogBuilder @@ -52,9 +53,7 @@ class HistorySettings : MaterialPreferenceFragment() { .setNegativeButton(R.string.cancel, null) .setPositiveButton(R.string.okay) { _, _ -> // clear the selected preference preferences - Thread { - action() - }.start() + query(action) } .show() } diff --git a/app/src/main/java/com/github/libretube/ui/preferences/InstanceSettings.kt b/app/src/main/java/com/github/libretube/ui/preferences/InstanceSettings.kt index ccd1a029c..967708d20 100644 --- a/app/src/main/java/com/github/libretube/ui/preferences/InstanceSettings.kt +++ b/app/src/main/java/com/github/libretube/ui/preferences/InstanceSettings.kt @@ -15,8 +15,7 @@ import com.github.libretube.R import com.github.libretube.api.RetrofitInstance import com.github.libretube.constants.PreferenceKeys import com.github.libretube.db.DatabaseHolder.Companion.Database -import com.github.libretube.db.obj.CustomInstance -import com.github.libretube.extensions.await +import com.github.libretube.extensions.awaitQuery import com.github.libretube.ui.activities.SettingsActivity import com.github.libretube.ui.dialogs.CustomInstanceDialog import com.github.libretube.ui.dialogs.DeleteAccountDialog @@ -110,9 +109,9 @@ class InstanceSettings : MaterialPreferenceFragment() { val clearCustomInstances = findPreference(PreferenceKeys.CLEAR_CUSTOM_INSTANCES) clearCustomInstances?.setOnPreferenceClickListener { - Thread { + awaitQuery { Database.customInstanceDao().deleteAll() - }.await() + } activity?.recreate() true } @@ -156,10 +155,9 @@ class InstanceSettings : MaterialPreferenceFragment() { private fun initCustomInstances(instancePref: ListPreference) { lifecycleScope.launchWhenCreated { - var customInstances = listOf() - Thread { - customInstances = Database.customInstanceDao().getAll() - }.await() + val customInstances = awaitQuery { + Database.customInstanceDao().getAll() + } val instanceNames = arrayListOf() val instanceValues = arrayListOf() diff --git a/app/src/main/java/com/github/libretube/util/AutoPlayHelper.kt b/app/src/main/java/com/github/libretube/util/AutoPlayHelper.kt index 4eaeffdce..497b4fb26 100644 --- a/app/src/main/java/com/github/libretube/util/AutoPlayHelper.kt +++ b/app/src/main/java/com/github/libretube/util/AutoPlayHelper.kt @@ -1,7 +1,6 @@ package com.github.libretube.util import com.github.libretube.api.RetrofitInstance -import com.github.libretube.api.obj.StreamItem import com.github.libretube.extensions.toID import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext diff --git a/app/src/main/java/com/github/libretube/util/PlayerHelper.kt b/app/src/main/java/com/github/libretube/util/PlayerHelper.kt index 6efdba774..fc1396464 100644 --- a/app/src/main/java/com/github/libretube/util/PlayerHelper.kt +++ b/app/src/main/java/com/github/libretube/util/PlayerHelper.kt @@ -2,13 +2,15 @@ package com.github.libretube.util import android.content.Context import android.view.accessibility.CaptioningManager -import com.github.libretube.api.obj.PipedStream import com.github.libretube.constants.PreferenceKeys import com.google.android.exoplayer2.ui.CaptionStyleCompat object PlayerHelper { // get the audio source following the users preferences - fun getAudioSource(context: Context, audios: List): String { + fun getAudioSource( + context: Context, + audios: List + ): String { val audioFormat = PreferenceHelper.getString(PreferenceKeys.PLAYER_AUDIO_FORMAT, "all") val audioQuality = if ( NetworkHelper.isNetworkMobile(context) diff --git a/app/src/main/res/drawable/ic_drag.xml b/app/src/main/res/drawable/ic_drag.xml index 0058d2571..f5a7111c7 100644 --- a/app/src/main/res/drawable/ic_drag.xml +++ b/app/src/main/res/drawable/ic_drag.xml @@ -2,9 +2,9 @@ xmlns:tools="http://schemas.android.com/tools" android:width="24dp" android:height="24dp" + android:tint="?attr/colorControlNormal" android:viewportWidth="24" - android:viewportHeight="24" - android:tint="?attr/colorControlNormal"> + android:viewportHeight="24">