Skip to content

Commit

Permalink
Various fixes (#401)
Browse files Browse the repository at this point in the history
* updated dependencies

* fixed string plurals errors

* added test for plurals

* updated dependency

* possible fix for crash on list tab fragment restoral

see java.lang.IllegalArgumentException on #393

* fixed crash on opening links with an app missing exported=true

* print error instead of crashing on download issues

* bumped version for release

* formatted code

* removed plugins

* updated changelogs
  • Loading branch information
LivingWithHippos authored Nov 29, 2024
1 parent 51bb831 commit 2821992
Show file tree
Hide file tree
Showing 25 changed files with 195 additions and 1,129 deletions.
12 changes: 10 additions & 2 deletions app/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ android {
applicationId = "com.github.livingwithhippos.unchained"
minSdk = 22
targetSdk = 35
versionCode = 48
versionName = "1.3.4"
versionCode = 49
versionName = "1.3.5"

javaCompileOptions {
annotationProcessorOptions {
Expand Down Expand Up @@ -170,6 +170,12 @@ android {
dataBinding = true
buildConfig = true
}

testOptions {
unitTests {
isIncludeAndroidResources = true
}
}
}

dependencies {
Expand Down Expand Up @@ -261,5 +267,7 @@ dependencies {
androidTestImplementation(libs.test.rules)
androidTestImplementation(libs.test.junit)
androidTestImplementation(libs.test.truth)
testImplementation(libs.test.core)
testImplementation(libs.junit)
testImplementation(libs.robolectric)
}
Original file line number Diff line number Diff line change
Expand Up @@ -522,12 +522,7 @@ class DownloadDetailsFragment : UnchainedFragment(), DownloadDetailsListener {
}

override fun onOpenClick(url: String) {
try {
context?.openExternalWebPage(url)
} catch (e: ActivityNotFoundException) {
Timber.e("Error opening externally a link ${e.message}")
context?.showToast(R.string.no_supported_player_found)
}
context?.openExternalWebPage(url)
}

override fun onOpenTranscodedStream(view: View, url: String) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,6 @@ class ListsTabFragment : UnchainedFragment() {
Lifecycle.State.RESUMED,
)

val listsAdapter = ListsAdapter(this)
binding.listPager.adapter = listsAdapter

binding.tabs.addOnTabSelectedListener(
object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
Expand Down Expand Up @@ -344,6 +341,9 @@ class ListsTabFragment : UnchainedFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val tabLayout: TabLayout = view.findViewById(R.id.tabs)
val viewPager: ViewPager2 = view.findViewById(R.id.listPager)

viewPager.adapter = ListsAdapter(this)

TabLayoutMediator(tabLayout, viewPager) { tab, position ->
if (position == DOWNLOADS_TAB) {
tab.text = getString(R.string.downloads)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
private fun setupKodi() {

findPreference<Preference>("kodi_remote_control_info")?.setOnPreferenceClickListener {
context?.openExternalWebPage("https://kodi.wiki/view/Settings/Services/Control")
?: false
context?.openExternalWebPage("https://kodi.wiki/view/Settings/Services/Control") == true
}
// todo: sistema per kodi
val ipPreference = findPreference<EditTextPreference>("kodi_ip_address")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,14 +234,16 @@ fun DownloadManager.downloadFileInStandardFolder(
description: String,
fileName: String = title,
): EitherResult<Exception, Long> {
val request: DownloadManager.Request =
DownloadManager.Request(source)
.setTitle(title)
.setDescription(description)
.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName)

return try {
val request: DownloadManager.Request =
DownloadManager.Request(source)
.setTitle(title)
.setDescription(description)
.setNotificationVisibility(
DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED
)
.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName)

val downloadID = this.enqueue(request)
EitherResult.Success(downloadID)
} catch (e: Exception) {
Expand Down Expand Up @@ -334,7 +336,13 @@ fun Context.openExternalWebPage(url: String, showErrorToast: Boolean = true): Bo
Intent(Intent.ACTION_VIEW, Uri.parse(url)).addCategory(Intent.CATEGORY_BROWSABLE)
startActivity(webIntent)
} catch (ex: android.content.ActivityNotFoundException) {
showToast(R.string.browser_not_found)
Timber.e("Error opening externally a link ${ex.message}")
showToast(R.string.browser_not_found, length = Toast.LENGTH_LONG)
} catch (ex: SecurityException) {
// the default app has marked itself as available to open these links
// but does not have exported=true in its manifest activity
Timber.e("Bugged app cannot receive external links ${ex.message}")
showToast(R.string.invalid_player_found, length = Toast.LENGTH_LONG)
}
return true
} else if (showErrorToast) showToast(R.string.invalid_url)
Expand Down
23 changes: 20 additions & 3 deletions app/app/src/main/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -205,8 +205,10 @@
<string name="torrent_channel_description">Canal de notificación del estado de las descargas de torrents</string>
<string name="torrent_in_progress">Descarga de torrent en curso</string>
<plurals name="seeders_format">
<item quantity="zero">%d seeders</item>
<item quantity="one">%d seeder</item>
<item quantity="other">%d seeders</item>
<item quantity="many">%d seeders</item>
</plurals>
<string name="seeders_string_format">seeder/s: %s</string>
<string name="torrent_in_progress_format">%1$.2f%% - %2$.2f MB/s</string>
Expand Down Expand Up @@ -264,18 +266,26 @@
<plurals name="magnet_format">
<item quantity="one">%d magnet</item>
<item quantity="other">%d magnets</item>
<item quantity="zero">%d magnets</item>
<item quantity="many">%d magnets</item>
</plurals>
<plurals name="torrent_format">
<item quantity="one">%d torrent</item>
<item quantity="other">%d torrents</item>
<item quantity="zero">%d torrents</item>
<item quantity="many">%d torrents</item>
</plurals>
<plurals name="links_format">
<item quantity="one">1 enlace</item>
<item quantity="other">%d enlaces</item>
<item quantity="zero">%d enlaces</item>
<item quantity="many">%d enlaces</item>
</plurals>
<plurals name="plugins_version_old_format">
<item quantity="zero">No plugin needing an update</item>
<item quantity="one">1 plugin needs an update. Check for a new version</item>
<item quantity="other">%d plugins need an update. Check for a new version</item>
<item quantity="many">%d plugins need an update. Check for a new version</item>
</plurals>
<string name="n_plugins_installed">%d plugins instalados. Reinicie la aplicación para utilizarlos.</string>
<string name="size_format">tamaño: %s</string>
Expand Down Expand Up @@ -482,8 +492,10 @@
<string name="service">Servicio</string>
<string name="services">Servicios</string>
<plurals name="services_format">
<item quantity="zero">%d servicios</item>
<item quantity="one">%d servicio</item>
<item quantity="other">%d servicios</item>
<item quantity="many">%d servicios</item>
</plurals>
<string name="dialog_confirm_action">¿Estás seguro de que quieres continuar?</string>
<string name="browser">Navegador</string>
Expand All @@ -492,12 +504,16 @@
<string name="transcoding">Transcodificación</string>
<string name="recent">Reciente</string>
<plurals name="service_number_format">
<item quantity="one">1 servicio</item>
<item quantity="many">%1$d servicios</item>
<item quantity="zero">%d servicios</item>
<item quantity="one">%d servicio</item>
<item quantity="other">%d servicios</item>
<item quantity="many">%d servicios</item>
</plurals>
<plurals name="device_number_format">
<item quantity="zero">%d dispositivos</item>
<item quantity="one">1 dispositivo</item>
<item quantity="many">%1$d dispositivos</item>
<item quantity="other">%d dispositivos</item>
<item quantity="many">%d dispositivos</item>
</plurals>
<string name="add">Añadir</string>
<string name="show_streaming">Mostrar el botón de streaming</string>
Expand All @@ -521,4 +537,5 @@
<string name="devices">Dispositivos</string>
<string name="remote_devices_services_description">Los dispositivos remotos son computadoras, televisores o teléfonos en los que se están ejecutando servicios como Kodi y VLC. Primero, crea un dispositivo para añadir uno o más servicios.</string>
<string name="no_credentials_found">No se han encontrado credenciales</string>
<string name="invalid_player_found">La aplicación que intentaba abrir este enlace tiene errores, instala otro reproductor</string>
</resources>
27 changes: 22 additions & 5 deletions app/app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,9 @@
<string name="torrent_channel_description">Canal de notification pour l’état du téléchargement des torrents</string>
<string name="torrent_in_progress">Téléchargement du torrent en cours</string>
<plurals name="seeders_format">
<item quantity="one">%d seeder</item>
<item quantity="zero">%d seeders</item>
<item quantity="one">%d seeder</item>>
<item quantity="other">%d seeders</item>
<item quantity="many">%d seeders</item>
</plurals>
<string name="seeders_string_format">seeder/s: %s</string>
Expand Down Expand Up @@ -264,18 +266,26 @@
<plurals name="magnet_format">
<item quantity="one">%d magnet</item>
<item quantity="many">%d magnets</item>
<item quantity="zero">%d magnets</item>
<item quantity="other">%d magnets</item>
</plurals>
<plurals name="torrent_format">
<item quantity="one">%d torrent</item>
<item quantity="many">%d torrents</item>
<item quantity="zero">%d torrents</item>
<item quantity="other">%d torrents</item>
</plurals>
<plurals name="links_format">
<item quantity="one">%d lien</item>
<item quantity="many">%d liens</item>
<item quantity="zero">%d liens</item>
<item quantity="other">%d liens</item>
</plurals>
<plurals name="plugins_version_old_format">
<item quantity="zero">%d plugins ont besoin d\'une mise à jour</item>
<item quantity="one">%d plugin a besoin d\'une mise à jour. Vérifier si une nouvelle version est disponible</item>
<item quantity="many">%d plugins ont besoin d\'une mise à jour. Vérifier une nouvelle version</item>
<item quantity="other">%d plugins ont besoin d\'une mise à jour. Vérifier une nouvelle version</item>
</plurals>
<string name="n_plugins_installed">%d plugins installés. Redémarrez l\'application pour les utiliser.</string>
<string name="size_format">taille: %s</string>
Expand Down Expand Up @@ -482,8 +492,10 @@
<string name="service">Service</string>
<string name="services">Services</string>
<plurals name="services_format">
<item quantity="zero">%d services</item>
<item quantity="one">%d service</item>
<item quantity="other">%d services</item>
<item quantity="many">%d services</item>
</plurals>
<string name="dialog_confirm_action">Êtes-vous sûr de vouloir continuer ?</string>
<string name="browser">Navigateur</string>
Expand All @@ -492,12 +504,16 @@
<string name="transcoding">Transcodage</string>
<string name="recent">Récent</string>
<plurals name="service_number_format">
<item quantity="one">%1$d service</item>
<item quantity="many">%1$d services</item>
<item quantity="zero">%d services</item>
<item quantity="one">%d service</item>
<item quantity="other">%d services</item>
<item quantity="many">%d services</item>
</plurals>
<plurals name="device_number_format">
<item quantity="one">%1$d dispositif</item>
<item quantity="many">%1$d dispositifs</item>
<item quantity="one">%d dispositif</item>
<item quantity="many">%d dispositifs</item>
<item quantity="zero">%d dispositifs</item>
<item quantity="other">%d dispositifs</item>
</plurals>
<string name="add">Ajouter</string>
<string name="show_streaming">Afficher le bouton de streaming</string>
Expand All @@ -521,4 +537,5 @@
<string name="devices">Dispositifs</string>
<string name="remote_devices_services_description">Les appareils distants sont des ordinateurs, téléviseurs ou téléphones sur lesquels des services comme Kodi et VLC sont en cours d\'exécution. D\'abord, créez un appareil pour ajouter un ou plusieurs services.</string>
<string name="no_credentials_found">Aucun justificatif n\\\'a été trouvé</string>
<string name="invalid_player_found">L\'application qui a essayé d\'ouvrir ce lien est buggée, installez un autre lecteur</string>
</resources>
23 changes: 19 additions & 4 deletions app/app/src/main/res/values-it/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -205,8 +205,10 @@
<string name="torrent_channel_description">Canale di notifiche per il download dei torrent</string>
<string name="torrent_in_progress">Download torrent in corso</string>
<plurals name="seeders_format">
<item quantity="zero">%d seeders</item>
<item quantity="one">%d seeder</item>
<item quantity="other">%d seeders</item>
<item quantity="many">%d seeders</item>
</plurals>
<string name="seeders_string_format">seeder/s: %s</string>
<string name="torrent_in_progress_format">%1$.2f%% - %2$.2f MB/s</string>
Expand Down Expand Up @@ -267,20 +269,28 @@
<string name="plugin_install_not_installed">Plugin non installato</string>
<string name="no_links">Nessun link</string>
<plurals name="magnet_format">
<item quantity="zero">%d magnets</item>
<item quantity="one">%d magnet</item>
<item quantity="other">%d magnets</item>
<item quantity="many">%d magnets</item>
</plurals>
<plurals name="torrent_format">
<item quantity="zero">%d torrents</item>
<item quantity="one">%d torrent</item>
<item quantity="many">%d torrents</item>
<item quantity="other">%d torrents</item>
</plurals>
<plurals name="links_format">
<item quantity="one">1 link</item>
<item quantity="zero">0 links</item>
<item quantity="one">%d link</item>
<item quantity="other">%d links</item>
<item quantity="many">%d links</item>
</plurals>
<plurals name="plugins_version_old_format">
<item quantity="zero">Nessun plugin ha bisogno di un aggiornamento.</item>
<item quantity="one">1 plugin ha bisogno di un aggiornamento. Controlla se ha una nuova versione</item>
<item quantity="other">%d plugin hanno bisogno di un aggiornamento. Controlla se hanno una nuova versione</item>
<item quantity="many">%d plugin hanno bisogno di un aggiornamento. Controlla se hanno una nuova versione</item>
</plurals>
<string name="n_plugins_installed">%d plugins installati. Riavvia l\'app per poterli utilizzare</string>
<string name="size_format">dimensione: %s</string>
Expand Down Expand Up @@ -482,8 +492,10 @@
<string name="service_deleted">Servizio eliminato</string>
<string name="service">Servizio</string>
<plurals name="services_format">
<item quantity="zero">%d servizi</item>
<item quantity="one">%d servizio</item>
<item quantity="other">%d servizi</item>
<item quantity="many">%d servizi</item>
</plurals>
<string name="dialog_confirm_action">Confermi di voler procedere?</string>
<string name="browser">Browser</string>
Expand All @@ -492,14 +504,16 @@
<string name="transcoding">Transcoding</string>
<string name="recent">Recente</string>
<plurals name="service_number_format">
<item quantity="zero">%1$d servizi</item>
<item quantity="one">1 servizio</item>
<item quantity="many">%1$d servizi</item>
<item quantity="other">%1$d servizi</item>
</plurals>
<plurals name="device_number_format">
<item quantity="one">1 dispositivo</item>
<item quantity="many">%1$d dispositivi</item>
<item quantity="other">%1$d dispositivi</item>
<item quantity="zero">Nessun dispositivo</item>
<item quantity="one">%d dispositivo</item>
<item quantity="many">%d dispositivi</item>
<item quantity="other">%d dispositivi</item>
</plurals>
<string name="services">Servizi</string>
<string name="add">Aggiungi</string>
Expand All @@ -524,4 +538,5 @@
<string name="devices">Dispositivi</string>
<string name="remote_devices_services_description">I dispositivi remoti sono computer, TV o telefoni su cui sono in esecuzione servizi come Kodi e VLC. Per prima cosa, crea un dispositivo per aggiungere uno o più servizi.</string>
<string name="no_credentials_found">Nessuna credenziale trovata</string>
<string name="invalid_player_found">L\'applicazione che ha provato ad aprire questo link ha un bug, installa un altro media player</string>
</resources>
Loading

0 comments on commit 2821992

Please sign in to comment.