added automatic format updates & removed app from recents when terminated

This commit is contained in:
deniscerri 2023-03-27 22:29:22 +02:00
parent 57f8520e03
commit 9dbf92a5d1
No known key found for this signature in database
GPG key ID: 95C43D517D830350
10 changed files with 64 additions and 25 deletions

View file

@ -46,13 +46,12 @@ class ResultViewModel(application: Application) : AndroidViewModel(application)
getTrending() getTrending()
} }
}catch (e : Exception){ }catch (e : Exception){
e.printStackTrace()
getTrending() getTrending()
} }
} }
fun getTrending() = viewModelScope.launch(Dispatchers.IO){ fun getTrending() = viewModelScope.launch(Dispatchers.IO){
loadingItems.postValue(true)
repository.updateTrending() repository.updateTrending()
loadingItems.postValue(false)
} }
suspend fun parseQuery(inputQuery: String, resetResults: Boolean) : ArrayList<ResultItem?> { suspend fun parseQuery(inputQuery: String, resetResults: Boolean) : ArrayList<ResultItem?> {

View file

@ -205,11 +205,14 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
} catch (ignored: Exception) { } catch (ignored: Exception) {
} }
} }
} else {
resultViewModel.checkTrending()
} }
} }
override fun onResume() {
super.onResume()
resultViewModel.checkTrending()
}
private fun initMenu() { private fun initMenu() {
val searchView = requireView().findViewById<SearchView>(R.id.search_view) val searchView = requireView().findViewById<SearchView>(R.id.search_view)
infoUtil = InfoUtil(requireContext()) infoUtil = InfoUtil(requireContext())

View file

@ -1,8 +1,10 @@
package com.deniscerri.ytdlnis.ui.downloadcard package com.deniscerri.ytdlnis.ui.downloadcard
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Activity
import android.app.Dialog import android.app.Dialog
import android.content.DialogInterface import android.content.DialogInterface
import android.content.SharedPreferences
import android.os.Bundle import android.os.Bundle
import android.util.DisplayMetrics import android.util.DisplayMetrics
import android.util.Log import android.util.Log
@ -10,6 +12,7 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.widget.* import android.widget.*
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.deniscerri.ytdlnis.R import com.deniscerri.ytdlnis.R
import com.deniscerri.ytdlnis.database.models.DownloadItem 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 fileUtil: FileUtil
private lateinit var infoUtil: InfoUtil private lateinit var infoUtil: InfoUtil
private lateinit var uiUtil: UiUtil private lateinit var uiUtil: UiUtil
private lateinit var sharedPreferences: SharedPreferences
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
fileUtil = FileUtil() fileUtil = FileUtil()
uiUtil = UiUtil(fileUtil) uiUtil = UiUtil(fileUtil)
infoUtil = InfoUtil(requireActivity().applicationContext) 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){ private fun addFormatsToView(linearLayout: LinearLayout){

View file

@ -105,10 +105,12 @@ class MoreFragment : Fragment() {
mainSharedPreferencesEditor.putBoolean("ask_terminate_app", false) mainSharedPreferencesEditor.putBoolean("ask_terminate_app", false)
mainSharedPreferencesEditor.commit() mainSharedPreferencesEditor.commit()
} }
mainActivity.finishAndRemoveTask()
exitProcess(0) exitProcess(0)
} }
terminateDialog.show() terminateDialog.show()
}else{ }else{
mainActivity.finishAndRemoveTask()
exitProcess(0) exitProcess(0)
} }

View file

@ -56,6 +56,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
private var videoQuality: ListPreference? = null private var videoQuality: ListPreference? = null
private var updateYTDL: Preference? = null private var updateYTDL: Preference? = null
private var updateNightlyYTDL: SwitchPreferenceCompat? = null private var updateNightlyYTDL: SwitchPreferenceCompat? = null
private var updateFormats: SwitchPreferenceCompat? = null
private var updateApp: SwitchPreferenceCompat? = null private var updateApp: SwitchPreferenceCompat? = null
private var exportPreferences : Preference? = null private var exportPreferences : Preference? = null
private var importPreferences : Preference? = null private var importPreferences : Preference? = null
@ -117,6 +118,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
videoQuality = findPreference("video_quality") videoQuality = findPreference("video_quality")
updateYTDL = findPreference("update_ytdl") updateYTDL = findPreference("update_ytdl")
updateNightlyYTDL = findPreference("nightly_ytdl") updateNightlyYTDL = findPreference("nightly_ytdl")
updateFormats = findPreference("update_formats")
updateApp = findPreference("update_app") updateApp = findPreference("update_app")
exportPreferences = findPreference("export_preferences") exportPreferences = findPreference("export_preferences")
importPreferences = findPreference("import_preferences") importPreferences = findPreference("import_preferences")
@ -175,6 +177,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
editor.putInt("audio_quality", audioQuality!!.value) editor.putInt("audio_quality", audioQuality!!.value)
editor.putString("video_quality", videoQuality!!.value) editor.putString("video_quality", videoQuality!!.value)
editor.putBoolean("nightly_ytdl", updateNightlyYTDL!!.isChecked) editor.putBoolean("nightly_ytdl", updateNightlyYTDL!!.isChecked)
editor.putBoolean("update_formats", updateFormats!!.isChecked)
editor.putBoolean("update_app", updateApp!!.isChecked) editor.putBoolean("update_app", updateApp!!.isChecked)
editor.apply() editor.apply()
} }
@ -438,6 +441,13 @@ class SettingsFragment : PreferenceFragmentCompat() {
} }
true true
} }
updateFormats!!.onPreferenceChangeListener =
Preference.OnPreferenceChangeListener { _: Preference?, newValue: Any ->
val enable = newValue as Boolean
editor.putBoolean("update_formats", enable)
editor.apply()
true
}
updateNightlyYTDL!!.onPreferenceChangeListener = updateNightlyYTDL!!.onPreferenceChangeListener =
Preference.OnPreferenceChangeListener { _: Preference?, newValue: Any -> Preference.OnPreferenceChangeListener { _: Preference?, newValue: Any ->
val enable = newValue as Boolean val enable = newValue as Boolean

View file

@ -319,7 +319,7 @@ class InfoUtil(context: Context) {
val req = URL(url) val req = URL(url)
conn = req.openConnection() as HttpURLConnection conn = req.openConnection() as HttpURLConnection
conn.requestMethod = "GET" conn.requestMethod = "GET"
conn.connectTimeout = 10000 conn.connectTimeout = 3000
conn.readTimeout = 5000 conn.readTimeout = 5000
if (conn.responseCode < 300) { if (conn.responseCode < 300) {
reader = BufferedReader(InputStreamReader(conn.inputStream)) reader = BufferedReader(InputStreamReader(conn.inputStream))
@ -350,7 +350,7 @@ class InfoUtil(context: Context) {
val req = URL(url) val req = URL(url)
conn = req.openConnection() as HttpURLConnection conn = req.openConnection() as HttpURLConnection
conn.requestMethod = "GET" conn.requestMethod = "GET"
conn.connectTimeout = 10000 conn.connectTimeout = 3000
conn.readTimeout = 5000 conn.readTimeout = 5000
if (conn.responseCode < 300) { if (conn.responseCode < 300) {
reader = BufferedReader(InputStreamReader(conn.inputStream)) reader = BufferedReader(InputStreamReader(conn.inputStream))
@ -393,9 +393,10 @@ class InfoUtil(context: Context) {
@Throws(JSONException::class) @Throws(JSONException::class)
fun getTrending(context: Context): ArrayList<ResultItem?> { fun getTrending(context: Context): ArrayList<ResultItem?> {
init()
items = ArrayList() items = ArrayList()
return if (key!!.isEmpty()) { return if (key!!.isEmpty()) {
items if (useInvidous) getTrendingFromInvidous(context) else ArrayList()
} else getTrendingFromKey(context) } else getTrendingFromKey(context)
} }
@ -429,23 +430,23 @@ class InfoUtil(context: Context) {
return items return items
} }
// private fun getTrendingFromInvidous(context: Context): ArrayList<ResultItem?> { private fun getTrendingFromInvidous(context: Context): ArrayList<ResultItem?> {
// val url = invidousURL + "trending?type=music&region=" + countryCODE val url = invidousURL + "trending?type=music&region=" + countryCODE
// val res = genericArrayRequest(url) val res = genericArrayRequest(url)
// try { try {
// for (i in 0 until res.length()) { for (i in 0 until res.length()) {
// val element = res.getJSONObject(i) val element = res.getJSONObject(i)
// if (element.getString("type") != "video") continue if (element.getString("type") != "video") continue
// val v = createVideofromInvidiousJSON(element) val v = createVideofromInvidiousJSON(element)
// if (v == null || v.thumb.isEmpty()) continue if (v == null || v.thumb.isEmpty()) continue
// v.playlistTitle = context.getString(R.string.trendingPlaylist) v.playlistTitle = context.getString(R.string.trendingPlaylist)
// items.add(v) items.add(v)
// } }
// } catch (e: Exception) { } catch (e: Exception) {
// e.printStackTrace() e.printStackTrace()
// } }
// return items return items
// } }
fun getIDFromYoutubeURL(inputQuery: String) : String { fun getIDFromYoutubeURL(inputQuery: String) : String {
var el: Array<String?> = var el: Array<String?> =

View file

@ -0,0 +1,5 @@
<vector android:height="24dp"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="?android:colorAccent" android:pathData="M19,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM11,15L9.5,15v-2h-2v2L6,15L6,9h1.5v2.5h2L9.5,9L11,9v6zM13,9h4c0.55,0 1,0.45 1,1v4c0,0.55 -0.45,1 -1,1h-4L13,9zM14.5,13.5h2v-3h-2v3z"/>
</vector>

View file

@ -71,7 +71,9 @@
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/home_appbarlayout" android:id="@+id/home_appbarlayout"
app:liftOnScroll="true" app:liftOnScroll="true"
android:background="@android:color/transparent" android:background="@null"
android:elevation="0dp"
app:elevation="0dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">

View file

@ -188,4 +188,5 @@
<string name="dont_ask_again">Don\'t ask again</string> <string name="dont_ask_again">Don\'t ask again</string>
<string name="end">End</string> <string name="end">End</string>
<string name="start">Start</string> <string name="start">Start</string>
<string name="update_formats_summary">Automatically search for missing formats when clicking the format card</string>
</resources> </resources>

View file

@ -246,6 +246,14 @@
android:title="@string/update_ytdl_nightly" android:title="@string/update_ytdl_nightly"
/> />
<SwitchPreferenceCompat
android:widgetLayout="@layout/preferece_material_switch"
app:defaultValue="false"
android:icon="@drawable/ic_format"
android:key="update_formats"
app:summary="@string/update_formats_summary"
app:title="@string/update_formats" />
<SwitchPreferenceCompat <SwitchPreferenceCompat
android:widgetLayout="@layout/preferece_material_switch" android:widgetLayout="@layout/preferece_material_switch"
app:defaultValue="true" app:defaultValue="true"