diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/ResultViewModel.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/ResultViewModel.kt index 46b9a1cc..fa53ec53 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/ResultViewModel.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/ResultViewModel.kt @@ -46,13 +46,12 @@ class ResultViewModel(application: Application) : AndroidViewModel(application) getTrending() } }catch (e : Exception){ + e.printStackTrace() getTrending() } } fun getTrending() = viewModelScope.launch(Dispatchers.IO){ - loadingItems.postValue(true) repository.updateTrending() - loadingItems.postValue(false) } suspend fun parseQuery(inputQuery: String, resetResults: Boolean) : ArrayList { diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/HomeFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/HomeFragment.kt index eea8b7d6..c6a0d875 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/HomeFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/HomeFragment.kt @@ -205,11 +205,14 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi } catch (ignored: Exception) { } } - } else { - resultViewModel.checkTrending() } } + override fun onResume() { + super.onResume() + resultViewModel.checkTrending() + } + private fun initMenu() { val searchView = requireView().findViewById(R.id.search_view) infoUtil = InfoUtil(requireContext()) diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/FormatSelectionBottomSheetDialog.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/FormatSelectionBottomSheetDialog.kt index f4d4cd1d..4443874c 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/FormatSelectionBottomSheetDialog.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/FormatSelectionBottomSheetDialog.kt @@ -1,8 +1,10 @@ package com.deniscerri.ytdlnis.ui.downloadcard import android.annotation.SuppressLint +import android.app.Activity import android.app.Dialog import android.content.DialogInterface +import android.content.SharedPreferences import android.os.Bundle import android.util.DisplayMetrics import android.util.Log @@ -10,6 +12,7 @@ import android.view.LayoutInflater import android.view.View import android.widget.* import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import com.deniscerri.ytdlnis.R import com.deniscerri.ytdlnis.database.models.DownloadItem @@ -32,12 +35,14 @@ class FormatSelectionBottomSheetDialog(private val item: DownloadItem, private v private lateinit var fileUtil: FileUtil private lateinit var infoUtil: InfoUtil private lateinit var uiUtil: UiUtil + private lateinit var sharedPreferences: SharedPreferences override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) fileUtil = FileUtil() uiUtil = UiUtil(fileUtil) infoUtil = InfoUtil(requireActivity().applicationContext) + sharedPreferences = requireContext().getSharedPreferences("root_preferences", Activity.MODE_PRIVATE) } @@ -95,6 +100,9 @@ class FormatSelectionBottomSheetDialog(private val item: DownloadItem, private v } } } + if (sharedPreferences.getBoolean("update_formats", false) && refreshBtn.isVisible){ + refreshBtn.performClick() + } } private fun addFormatsToView(linearLayout: LinearLayout){ diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/MoreFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/MoreFragment.kt index 51082338..5db65592 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/MoreFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/MoreFragment.kt @@ -105,10 +105,12 @@ class MoreFragment : Fragment() { mainSharedPreferencesEditor.putBoolean("ask_terminate_app", false) mainSharedPreferencesEditor.commit() } + mainActivity.finishAndRemoveTask() exitProcess(0) } terminateDialog.show() }else{ + mainActivity.finishAndRemoveTask() exitProcess(0) } diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt index f1916204..96229bcf 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt @@ -56,6 +56,7 @@ class SettingsFragment : PreferenceFragmentCompat() { private var videoQuality: ListPreference? = null private var updateYTDL: Preference? = null private var updateNightlyYTDL: SwitchPreferenceCompat? = null + private var updateFormats: SwitchPreferenceCompat? = null private var updateApp: SwitchPreferenceCompat? = null private var exportPreferences : Preference? = null private var importPreferences : Preference? = null @@ -117,6 +118,7 @@ class SettingsFragment : PreferenceFragmentCompat() { videoQuality = findPreference("video_quality") updateYTDL = findPreference("update_ytdl") updateNightlyYTDL = findPreference("nightly_ytdl") + updateFormats = findPreference("update_formats") updateApp = findPreference("update_app") exportPreferences = findPreference("export_preferences") importPreferences = findPreference("import_preferences") @@ -175,6 +177,7 @@ class SettingsFragment : PreferenceFragmentCompat() { editor.putInt("audio_quality", audioQuality!!.value) editor.putString("video_quality", videoQuality!!.value) editor.putBoolean("nightly_ytdl", updateNightlyYTDL!!.isChecked) + editor.putBoolean("update_formats", updateFormats!!.isChecked) editor.putBoolean("update_app", updateApp!!.isChecked) editor.apply() } @@ -438,6 +441,13 @@ class SettingsFragment : PreferenceFragmentCompat() { } true } + updateFormats!!.onPreferenceChangeListener = + Preference.OnPreferenceChangeListener { _: Preference?, newValue: Any -> + val enable = newValue as Boolean + editor.putBoolean("update_formats", enable) + editor.apply() + true + } updateNightlyYTDL!!.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _: Preference?, newValue: Any -> val enable = newValue as Boolean diff --git a/app/src/main/java/com/deniscerri/ytdlnis/util/InfoUtil.kt b/app/src/main/java/com/deniscerri/ytdlnis/util/InfoUtil.kt index ee4e902d..0b37cc8a 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/util/InfoUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/util/InfoUtil.kt @@ -319,7 +319,7 @@ class InfoUtil(context: Context) { val req = URL(url) conn = req.openConnection() as HttpURLConnection conn.requestMethod = "GET" - conn.connectTimeout = 10000 + conn.connectTimeout = 3000 conn.readTimeout = 5000 if (conn.responseCode < 300) { reader = BufferedReader(InputStreamReader(conn.inputStream)) @@ -350,7 +350,7 @@ class InfoUtil(context: Context) { val req = URL(url) conn = req.openConnection() as HttpURLConnection conn.requestMethod = "GET" - conn.connectTimeout = 10000 + conn.connectTimeout = 3000 conn.readTimeout = 5000 if (conn.responseCode < 300) { reader = BufferedReader(InputStreamReader(conn.inputStream)) @@ -393,9 +393,10 @@ class InfoUtil(context: Context) { @Throws(JSONException::class) fun getTrending(context: Context): ArrayList { + init() items = ArrayList() return if (key!!.isEmpty()) { - items + if (useInvidous) getTrendingFromInvidous(context) else ArrayList() } else getTrendingFromKey(context) } @@ -429,23 +430,23 @@ class InfoUtil(context: Context) { return items } -// private fun getTrendingFromInvidous(context: Context): ArrayList { -// val url = invidousURL + "trending?type=music®ion=" + countryCODE -// val res = genericArrayRequest(url) -// try { -// for (i in 0 until res.length()) { -// val element = res.getJSONObject(i) -// if (element.getString("type") != "video") continue -// val v = createVideofromInvidiousJSON(element) -// if (v == null || v.thumb.isEmpty()) continue -// v.playlistTitle = context.getString(R.string.trendingPlaylist) -// items.add(v) -// } -// } catch (e: Exception) { -// e.printStackTrace() -// } -// return items -// } + private fun getTrendingFromInvidous(context: Context): ArrayList { + val url = invidousURL + "trending?type=music®ion=" + countryCODE + val res = genericArrayRequest(url) + try { + for (i in 0 until res.length()) { + val element = res.getJSONObject(i) + if (element.getString("type") != "video") continue + val v = createVideofromInvidiousJSON(element) + if (v == null || v.thumb.isEmpty()) continue + v.playlistTitle = context.getString(R.string.trendingPlaylist) + items.add(v) + } + } catch (e: Exception) { + e.printStackTrace() + } + return items + } fun getIDFromYoutubeURL(inputQuery: String) : String { var el: Array = diff --git a/app/src/main/res/drawable/ic_format.xml b/app/src/main/res/drawable/ic_format.xml new file mode 100644 index 00000000..b9703f8f --- /dev/null +++ b/app/src/main/res/drawable/ic_format.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 2d4f5c43..65c3dc10 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -71,7 +71,9 @@ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e55ae7e0..de5462a2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -188,4 +188,5 @@ Don\'t ask again End Start + Automatically search for missing formats when clicking the format card \ No newline at end of file diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index a0ae164e..2c67fa1b 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -246,6 +246,14 @@ android:title="@string/update_ytdl_nightly" /> + +