From 00c1259c11a542ae429d199486f51f561b301b03 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Thu, 21 Jul 2022 16:47:14 +0200 Subject: [PATCH] fix sub import --- .../libretube/adapters/SubscriptionAdapter.kt | 11 +--- .../fragments/SubscriptionsFragment.kt | 15 ----- .../libretube/preferences/InstanceSettings.kt | 57 +++++++++++++++++-- .../libretube/services/BackgroundMode.kt | 11 +++- 4 files changed, 61 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt b/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt index 1f36f925a..fe8939b59 100644 --- a/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt @@ -19,17 +19,8 @@ class SubscriptionAdapter( ) : RecyclerView.Adapter() { private val TAG = "SubscriptionAdapter" - var i = 0 override fun getItemCount(): Int { - return i - } - - fun updateItems() { - i += 10 - if (i > videoFeed.size) { - i = videoFeed.size - } - notifyDataSetChanged() + return videoFeed.size } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SubscriptionViewHolder { diff --git a/app/src/main/java/com/github/libretube/fragments/SubscriptionsFragment.kt b/app/src/main/java/com/github/libretube/fragments/SubscriptionsFragment.kt index f853b7d3b..1507e6263 100644 --- a/app/src/main/java/com/github/libretube/fragments/SubscriptionsFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/SubscriptionsFragment.kt @@ -85,20 +85,6 @@ class SubscriptionsFragment : Fragment() { binding.subFeed.visibility = View.VISIBLE } } - - binding.scrollviewSub.viewTreeObserver - .addOnScrollChangedListener { - if (binding.scrollviewSub.getChildAt(0).bottom - == (binding.scrollviewSub.height + binding.scrollviewSub.scrollY) - ) { - // scroll view is at bottom - if (isLoaded) { - binding.subRefresh.isRefreshing = true - subscriptionAdapter?.updateItems() - binding.subRefresh.isRefreshing = false - } - } - } } else { binding.subRefresh.isEnabled = false } @@ -122,7 +108,6 @@ class SubscriptionsFragment : Fragment() { if (response.isNotEmpty()) { subscriptionAdapter = SubscriptionAdapter(response, childFragmentManager) feedRecView.adapter = subscriptionAdapter - subscriptionAdapter?.updateItems() } else { runOnUiThread { with(binding.boogh) { diff --git a/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt b/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt index 34f874622..60fed115b 100644 --- a/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt @@ -1,14 +1,18 @@ package com.github.libretube.preferences +import android.Manifest import android.content.ContentResolver import android.content.Intent +import android.content.pm.PackageManager import android.net.Uri +import android.os.Build import android.os.Bundle import android.text.TextUtils import android.util.Log import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts -import androidx.appcompat.app.AppCompatActivity +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.preference.ListPreference @@ -22,7 +26,6 @@ import com.github.libretube.dialogs.DeleteAccountDialog import com.github.libretube.dialogs.LoginDialog import com.github.libretube.dialogs.LogoutDialog import com.github.libretube.dialogs.RequireRestartDialog -import com.github.libretube.util.PermissionHelper import com.github.libretube.util.RetrofitInstance import org.json.JSONObject import org.json.JSONTokener @@ -58,8 +61,8 @@ class InstanceSettings : PreferenceFragmentCompat() { val jsonObject = JSONTokener(json).nextValue() as JSONObject Log.e(TAG, jsonObject.getJSONArray("subscriptions").toString()) for ( - i in 0 until jsonObject.getJSONArray("subscriptions") - .length() + i in 0 until jsonObject.getJSONArray("subscriptions") + .length() ) { var url = jsonObject.getJSONArray("subscriptions").getJSONObject(i) @@ -286,7 +289,51 @@ class InstanceSettings : PreferenceFragmentCompat() { private fun importSubscriptions() { val token = PreferenceHelper.getToken() // check StorageAccess - PermissionHelper.requestReadWrite(activity as AppCompatActivity) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + Log.d("myz", "" + Build.VERSION.SDK_INT) + if (ContextCompat.checkSelfPermission( + this.requireContext(), + Manifest.permission.READ_EXTERNAL_STORAGE + ) + != PackageManager.PERMISSION_GRANTED + ) { + ActivityCompat.requestPermissions( + this.requireActivity(), + arrayOf( + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.MANAGE_EXTERNAL_STORAGE + ), + 1 + ) // permission request code is just an int + } else if (token != "") { + MainSettings.getContent.launch("*/*") + } else { + Toast.makeText(context, R.string.login_first, Toast.LENGTH_SHORT).show() + } + } else { + if (ActivityCompat.checkSelfPermission( + requireContext(), + Manifest.permission.READ_EXTERNAL_STORAGE + ) != PackageManager.PERMISSION_GRANTED || + ActivityCompat.checkSelfPermission( + requireContext(), + Manifest.permission.WRITE_EXTERNAL_STORAGE + ) != PackageManager.PERMISSION_GRANTED + ) { + ActivityCompat.requestPermissions( + this.requireActivity(), + arrayOf( + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE + ), + 1 + ) + } else if (token != "") { + MainSettings.getContent.launch("*/*") + } else { + Toast.makeText(context, R.string.login_first, Toast.LENGTH_SHORT).show() + } + } } private fun subscribe(channels: List) { 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 ecc7baa96..59066022c 100644 --- a/app/src/main/java/com/github/libretube/services/BackgroundMode.kt +++ b/app/src/main/java/com/github/libretube/services/BackgroundMode.kt @@ -20,6 +20,7 @@ import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector import com.google.android.exoplayer2.ui.PlayerNotificationManager import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking +import java.lang.Exception /** * Loads the selected videos audio in background mode with a notification area. @@ -60,9 +61,13 @@ class BackgroundMode : Service() { * Initializes the [player] with the [MediaItem]. */ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { - val videoId = intent?.getStringExtra("videoId")!! - val seekToPosition = intent.getLongExtra("seekToPosition", 0L) - playOnBackgroundMode(this, videoId, seekToPosition) + try { + val videoId = intent?.getStringExtra("videoId")!! + val seekToPosition = intent.getLongExtra("seekToPosition", 0L) + playOnBackgroundMode(this, videoId, seekToPosition) + } catch (e: Exception) { + stopService(intent) + } return super.onStartCommand(intent, flags, startId) }