From e32bfa0cfa9140b6a9c152a3571a3b82bae1e76f Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Wed, 1 May 2024 19:45:37 -0500 Subject: [PATCH] fix: network safety --- .../addons/torrent/TorrentAddonManager.kt | 4 +- .../connections/bakaupdates/MangaUpdates.kt | 7 ++- .../media/anime/SelectorDialogFragment.kt | 55 +++++++++++-------- .../java/ani/dantotsu/others/CrashActivity.kt | 1 - .../imagesearch/ImageSearchViewModel.kt | 6 +- app/src/main/res/layout/activity_crash.xml | 1 + app/src/main/res/layout/item_episode_list.xml | 1 + 7 files changed, 47 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/addons/torrent/TorrentAddonManager.kt b/app/src/main/java/ani/dantotsu/addons/torrent/TorrentAddonManager.kt index cd713bae..11665341 100644 --- a/app/src/main/java/ani/dantotsu/addons/torrent/TorrentAddonManager.kt +++ b/app/src/main/java/ani/dantotsu/addons/torrent/TorrentAddonManager.kt @@ -12,6 +12,8 @@ import ani.dantotsu.addons.AddonManager import ani.dantotsu.addons.LoadResult import ani.dantotsu.addons.AddonInstallReceiver import ani.dantotsu.media.AddonType +import ani.dantotsu.settings.saving.PrefManager +import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.util.Logger import eu.kanade.tachiyomi.extension.InstallStep import kotlinx.coroutines.Dispatchers @@ -70,7 +72,7 @@ class TorrentAddonManager( } override fun isAvailable(): Boolean { - return extension?.extension != null + return extension?.extension != null && PrefManager.getVal(PrefName.TorrentEnabled) } override fun getVersion(): String? { diff --git a/app/src/main/java/ani/dantotsu/connections/bakaupdates/MangaUpdates.kt b/app/src/main/java/ani/dantotsu/connections/bakaupdates/MangaUpdates.kt index ec66cb7c..53a88815 100644 --- a/app/src/main/java/ani/dantotsu/connections/bakaupdates/MangaUpdates.kt +++ b/app/src/main/java/ani/dantotsu/connections/bakaupdates/MangaUpdates.kt @@ -40,7 +40,12 @@ class MangaUpdates { e.printStackTrace() } } - val res = client.post(apiUrl, json = query).parsed() + val res = try { + client.post(apiUrl, json = query).parsed() + } catch (e: Exception) { + Logger.log(e.toString()) + return@tryWithSuspend null + } coroutineScope { res.results?.map { async(Dispatchers.IO) { diff --git a/app/src/main/java/ani/dantotsu/media/anime/SelectorDialogFragment.kt b/app/src/main/java/ani/dantotsu/media/anime/SelectorDialogFragment.kt index a54eabad..a7bd8249 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/SelectorDialogFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/SelectorDialogFragment.kt @@ -271,33 +271,40 @@ class SelectorDialogFragment : BottomSheetDialogFragment() { if (torrentExtension.isAvailable()) { val activity = currActivity() ?: requireActivity() launchIO { - val extension = torrentExtension.extension!!.extension - torrentExtension.torrentHash?.let { - extension.removeTorrent(it) - } - val index = if (url.contains("index=")) { - url.substringAfter("index=").toIntOrNull() ?: 0 - } else 0 - Logger.log("Sending: ${url}, ${video.quality}, $index") - val currentTorrent = extension.addTorrent( - url, video.quality.toString(), "", "", false - ) - torrentExtension.torrentHash = currentTorrent.hash - video.file.url = extension.getLink(currentTorrent, index) - Logger.log("Received: ${video.file.url}") - if (launch == true) { - Intent(activity, ExoplayerView::class.java).apply { - ExoplayerView.media = media - ExoplayerView.initialized = true - startActivity(this) + try { + val extension = torrentExtension.extension!!.extension + torrentExtension.torrentHash?.let { + extension.removeTorrent(it) } - } else { - model.setEpisode( - media.anime!!.episodes!![media.anime.selectedEpisode!!]!!, - "startExo no launch" + val index = if (url.contains("index=")) { + url.substringAfter("index=").toIntOrNull() ?: 0 + } else 0 + Logger.log("Sending: ${url}, ${video.quality}, $index") + val currentTorrent = extension.addTorrent( + url, video.quality.toString(), "", "", false ) + torrentExtension.torrentHash = currentTorrent.hash + video.file.url = extension.getLink(currentTorrent, index) + Logger.log("Received: ${video.file.url}") + if (launch == true) { + Intent(activity, ExoplayerView::class.java).apply { + ExoplayerView.media = media + ExoplayerView.initialized = true + startActivity(this) + } + } else { + model.setEpisode( + media.anime!!.episodes!![media.anime.selectedEpisode!!]!!, + "startExo no launch" + ) + } + dismiss() + } catch (e: Exception) { + Injekt.get().logException(e) + Logger.log(e) + toast("Error starting video") + dismiss() } - dismiss() } } else { try { diff --git a/app/src/main/java/ani/dantotsu/others/CrashActivity.kt b/app/src/main/java/ani/dantotsu/others/CrashActivity.kt index 6067d03d..d6c1f473 100644 --- a/app/src/main/java/ani/dantotsu/others/CrashActivity.kt +++ b/app/src/main/java/ani/dantotsu/others/CrashActivity.kt @@ -1,7 +1,6 @@ package ani.dantotsu.others import android.os.Bundle -import android.text.InputType import android.view.View import android.widget.Button import android.widget.EditText diff --git a/app/src/main/java/ani/dantotsu/others/imagesearch/ImageSearchViewModel.kt b/app/src/main/java/ani/dantotsu/others/imagesearch/ImageSearchViewModel.kt index f82b0821..b4c101c4 100644 --- a/app/src/main/java/ani/dantotsu/others/imagesearch/ImageSearchViewModel.kt +++ b/app/src/main/java/ani/dantotsu/others/imagesearch/ImageSearchViewModel.kt @@ -26,7 +26,11 @@ class ImageSearchViewModel : ViewModel() { ) .build() - val res = client.post(url, requestBody = requestBody).parsed() + val res = try { + client.post(url, requestBody = requestBody).parsed() + } catch (e: Exception) { + SearchResult(error = e.message) + } searchResultLiveData.postValue(res) } diff --git a/app/src/main/res/layout/activity_crash.xml b/app/src/main/res/layout/activity_crash.xml index c13869ad..5561671a 100644 --- a/app/src/main/res/layout/activity_crash.xml +++ b/app/src/main/res/layout/activity_crash.xml @@ -52,6 +52,7 @@ android:inputType="textMultiLine|none" android:textIsSelectable="true" android:focusable="false" + android:textSize="12sp" android:focusableInTouchMode="false" android:padding="16dp" android:textColor="?attr/colorOnBackground" /> diff --git a/app/src/main/res/layout/item_episode_list.xml b/app/src/main/res/layout/item_episode_list.xml index 4a9bbb83..67fe1a68 100644 --- a/app/src/main/res/layout/item_episode_list.xml +++ b/app/src/main/res/layout/item_episode_list.xml @@ -139,6 +139,7 @@ android:layout_height="wrap_content" android:ellipsize="marquee" android:fontFamily="@font/poppins_bold" + android:layout_marginStart="2dp" android:maxLines="5" android:text="@string/empty" app:lineHeight="15sp" />