fixed command templates export/import crashing on older models

This commit is contained in:
deniscerri 2023-03-20 21:05:51 +01:00
parent e915fb3eab
commit 053ad0a1a9
No known key found for this signature in database
GPG key ID: 95C43D517D830350
3 changed files with 32 additions and 24 deletions

View file

@ -3,6 +3,8 @@ package com.deniscerri.ytdlnis.database.viewmodel
import android.app.Application import android.app.Application
import android.content.ClipboardManager import android.content.ClipboardManager
import android.content.Context.CLIPBOARD_SERVICE import android.content.Context.CLIPBOARD_SERVICE
import android.os.Handler
import android.os.Looper
import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
@ -13,6 +15,7 @@ import com.deniscerri.ytdlnis.database.models.TemplateShortcut
import com.deniscerri.ytdlnis.database.repository.CommandTemplateRepository import com.deniscerri.ytdlnis.database.repository.CommandTemplateRepository
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import kotlinx.serialization.decodeFromString import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
@ -70,7 +73,9 @@ class CommandTemplateViewModel(private val application: Application) : AndroidVi
val allTemplates = repository.getAll() val allTemplates = repository.getAll()
val allShortcuts = repository.getAllShortCuts() val allShortcuts = repository.getAllShortCuts()
var count = 0 var count = 0
val clipboard = application.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager val clipboard = withContext(Dispatchers.Main){
application.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
}
val clip = clipboard.primaryClip!!.getItemAt(0).text.toString() val clip = clipboard.primaryClip!!.getItemAt(0).text.toString()
try{ try{
jsonFormat.decodeFromString<CommandTemplateExport>(clip).run { jsonFormat.decodeFromString<CommandTemplateExport>(clip).run {
@ -100,10 +105,14 @@ class CommandTemplateViewModel(private val application: Application) : AndroidVi
} }
fun exportToClipboard() = viewModelScope.launch(Dispatchers.IO) { fun exportToClipboard() = viewModelScope.launch {
try{ try{
val allTemplates = repository.getAll() val allTemplates = withContext(Dispatchers.IO){
val allShortcuts = repository.getAllShortCuts() repository.getAll()
}
val allShortcuts = withContext(Dispatchers.IO){
repository.getAllShortCuts()
}
val output = jsonFormat.encodeToString( val output = jsonFormat.encodeToString(
CommandTemplateExport( CommandTemplateExport(
templates = allTemplates, templates = allTemplates,

View file

@ -140,7 +140,7 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
homeAdapter!!.submitList(it) homeAdapter!!.submitList(it)
resultsList = it resultsList = it
if(resultViewModel.itemCount.value!! > 1 || resultViewModel.itemCount.value!! == -1){ if(resultViewModel.itemCount.value!! > 1 || resultViewModel.itemCount.value!! == -1){
if (it[0].playlistTitle.isNotEmpty() && it[0].playlistTitle != getString(R.string.trendingPlaylist) && it.size > 1){ if (it.size > 1 && it[0].playlistTitle.isNotEmpty() && it[0].playlistTitle != getString(R.string.trendingPlaylist) && it.size > 1){
downloadAllFabCoordinator!!.visibility = VISIBLE downloadAllFabCoordinator!!.visibility = VISIBLE
}else{ }else{
downloadAllFabCoordinator!!.visibility = GONE downloadAllFabCoordinator!!.visibility = GONE

View file

@ -397,10 +397,9 @@ 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()) {
if (useInvidous) getTrendingFromInvidous(context) else ArrayList() items
} else getTrendingFromKey(context) } else getTrendingFromKey(context)
} }
@ -434,23 +433,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?> =