diff --git a/app/src/main/java/ani/dantotsu/download/anime/AnimeDownloaderService.kt b/app/src/main/java/ani/dantotsu/download/anime/AnimeDownloaderService.kt index 322c29d4..5d9c7a5b 100644 --- a/app/src/main/java/ani/dantotsu/download/anime/AnimeDownloaderService.kt +++ b/app/src/main/java/ani/dantotsu/download/anime/AnimeDownloaderService.kt @@ -48,14 +48,12 @@ import eu.kanade.tachiyomi.source.model.SChapterImpl import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.Job import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext -import tachiyomi.core.util.lang.launchIO import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import java.io.File @@ -359,7 +357,7 @@ class AnimeDownloaderService : Service() { @OptIn(DelicateCoroutinesApi::class) private fun saveMediaInfo(task: AnimeDownloadTask) { - launchIO { + CoroutineScope(Dispatchers.IO).launch { val directory = File( getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), "${DownloadsManager.animeLocation}/${task.title}" diff --git a/app/src/main/java/ani/dantotsu/download/manga/MangaDownloaderService.kt b/app/src/main/java/ani/dantotsu/download/manga/MangaDownloaderService.kt index 9b884883..92e811bd 100644 --- a/app/src/main/java/ani/dantotsu/download/manga/MangaDownloaderService.kt +++ b/app/src/main/java/ani/dantotsu/download/manga/MangaDownloaderService.kt @@ -40,7 +40,6 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Deferred import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.Job import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.async diff --git a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaAdapter.kt b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaAdapter.kt index c25bb204..746a6b5f 100644 --- a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaAdapter.kt +++ b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaAdapter.kt @@ -1,6 +1,5 @@ package ani.dantotsu.download.manga -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View diff --git a/app/src/main/java/ani/dantotsu/media/AuthorAdapter.kt b/app/src/main/java/ani/dantotsu/media/AuthorAdapter.kt index 431c5ddd..56086b20 100644 --- a/app/src/main/java/ani/dantotsu/media/AuthorAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/AuthorAdapter.kt @@ -1,6 +1,5 @@ package ani.dantotsu.media -import android.annotation.SuppressLint import android.app.Activity import android.content.Intent import android.view.LayoutInflater diff --git a/app/src/main/java/ani/dantotsu/media/CalendarActivity.kt b/app/src/main/java/ani/dantotsu/media/CalendarActivity.kt index 4957e4af..e9179904 100644 --- a/app/src/main/java/ani/dantotsu/media/CalendarActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/CalendarActivity.kt @@ -1,6 +1,5 @@ package ani.dantotsu.media -import android.annotation.SuppressLint import android.os.Bundle import android.util.TypedValue import android.view.View diff --git a/app/src/main/java/ani/dantotsu/media/CharacterAdapter.kt b/app/src/main/java/ani/dantotsu/media/CharacterAdapter.kt index 78eeb273..e82036eb 100644 --- a/app/src/main/java/ani/dantotsu/media/CharacterAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/CharacterAdapter.kt @@ -1,6 +1,5 @@ package ani.dantotsu.media -import android.annotation.SuppressLint import android.app.Activity import android.content.Intent import android.view.LayoutInflater diff --git a/app/src/main/java/ani/dantotsu/media/CharacterDetailsAdapter.kt b/app/src/main/java/ani/dantotsu/media/CharacterDetailsAdapter.kt index 5c78feb0..ec111dc3 100644 --- a/app/src/main/java/ani/dantotsu/media/CharacterDetailsAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/CharacterDetailsAdapter.kt @@ -1,6 +1,5 @@ package ani.dantotsu.media -import android.annotation.SuppressLint import android.app.Activity import android.view.LayoutInflater import android.view.ViewGroup diff --git a/app/src/main/java/ani/dantotsu/media/MediaAdaptor.kt b/app/src/main/java/ani/dantotsu/media/MediaAdaptor.kt index aebd8dbf..78d264ee 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaAdaptor.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaAdaptor.kt @@ -1,8 +1,6 @@ package ani.dantotsu.media import android.annotation.SuppressLint -import android.app.Activity -import android.content.Context import android.content.Intent import android.graphics.Bitmap import android.graphics.Canvas @@ -15,26 +13,25 @@ import android.widget.ImageView import androidx.appcompat.content.res.AppCompatResources import androidx.core.app.ActivityOptionsCompat import androidx.core.content.ContextCompat -import androidx.core.util.Pair import androidx.core.view.ViewCompat import androidx.core.view.isVisible import androidx.core.view.updateLayoutParams import androidx.fragment.app.FragmentActivity import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 -import ani.dantotsu.* +import ani.dantotsu.R +import ani.dantotsu.blurImage +import ani.dantotsu.currActivity import ani.dantotsu.databinding.ItemMediaCompactBinding import ani.dantotsu.databinding.ItemMediaLargeBinding import ani.dantotsu.databinding.ItemMediaPageBinding import ani.dantotsu.databinding.ItemMediaPageSmallBinding +import ani.dantotsu.loadImage +import ani.dantotsu.setAnimation +import ani.dantotsu.setSafeOnClickListener import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName -import com.bumptech.glide.Glide -import com.bumptech.glide.load.engine.DiskCacheStrategy -import com.bumptech.glide.load.model.GlideUrl -import com.bumptech.glide.request.RequestOptions import com.flaviofaria.kenburnsview.RandomTransitionGenerator -import jp.wasabeef.glide.transformations.BlurTransformation import java.io.Serializable @@ -152,25 +149,22 @@ class MediaAdaptor( (if (media.userScore != 0) R.drawable.item_user_score else R.drawable.item_score) ) if (media.anime != null) { - b.itemTotal.text = " " + if ((media.anime.totalEpisodes - ?: 0) != 1 - ) currActivity()!!.getString(R.string.episode_plural) - else currActivity()!!.getString(R.string.episode_singular) + val itemTotal = " " + if ((media.anime.totalEpisodes ?: 0) != 1) currActivity()!!.getString(R.string.episode_plural) else currActivity()!!.getString(R.string.episode_singular) + b.itemTotal.text = itemTotal b.itemCompactTotal.text = if (media.anime.nextAiringEpisode != null) (media.anime.nextAiringEpisode.toString() + " / " + (media.anime.totalEpisodes ?: "??").toString()) else (media.anime.totalEpisodes ?: "??").toString() } else if (media.manga != null) { - b.itemTotal.text = " " + if ((media.manga.totalChapters - ?: 0) != 1 - ) currActivity()!!.getString(R.string.chapter_plural) - else currActivity()!!.getString(R.string.chapter_singular) + val itemTotal = " " + if ((media.manga.totalChapters ?: 0) != 1) currActivity()!!.getString(R.string.chapter_plural) else currActivity()!!.getString(R.string.chapter_singular) + b.itemTotal.text = itemTotal b.itemCompactTotal.text = "${media.manga.totalChapters ?: "??"}" } - @SuppressLint("NotifyDataSetChanged") if (position == mediaList!!.size - 2 && viewPager != null) viewPager.post { + val start = mediaList.size mediaList.addAll(mediaList) - notifyDataSetChanged() + val end = mediaList.size - start + notifyItemRangeInserted(start, end) } } } diff --git a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt index 022ebe2d..a7b8858f 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt @@ -367,6 +367,16 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi navBar.addTab(infoTab) navBar.addTab(watchTab) navBar.addTab(commentTab) + if (model.continueMedia == null && media.cameFromContinue) { + model.continueMedia = PrefManager.getVal(PrefName.ContinueMedia) + selected = 1 + } + if (intent.getStringExtra("FRAGMENT_TO_LOAD") != null) selected = 2 + if (viewPager.currentItem != selected) viewPager.post { + viewPager.setCurrentItem(selected, false) + } + binding.commentInputLayout.isVisible = selected == 2 + navBar.selectTabAt(selected) navBar.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener { override fun onTabSelected( lastIndex: Int, @@ -383,18 +393,6 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi } }) - if (model.continueMedia == null && media.cameFromContinue) { - model.continueMedia = PrefManager.getVal(PrefName.ContinueMedia) - selected = 1 - } - val frag = intent.getStringExtra("FRAGMENT_TO_LOAD") - if (frag != null) { - selected = 2 - } - navBar.selectTabAt(selected) - binding.commentInputLayout.isVisible = selected == 2 - viewPager.setCurrentItem(selected, false) - val live = Refresh.activity.getOrPut(this.hashCode()) { MutableLiveData(true) } live.observe(this) { if (it) { diff --git a/app/src/main/java/ani/dantotsu/media/MediaDetailsViewModel.kt b/app/src/main/java/ani/dantotsu/media/MediaDetailsViewModel.kt index a69ad852..184f32bd 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaDetailsViewModel.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaDetailsViewModel.kt @@ -9,7 +9,6 @@ import androidx.lifecycle.ViewModel import ani.dantotsu.R import ani.dantotsu.connections.anilist.Anilist import ani.dantotsu.currContext -import ani.dantotsu.util.Logger import ani.dantotsu.media.anime.Episode import ani.dantotsu.media.anime.SelectorDialogFragment import ani.dantotsu.media.manga.MangaChapter @@ -29,6 +28,7 @@ import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.snackString import ani.dantotsu.tryWithSuspend +import ani.dantotsu.util.Logger import com.bumptech.glide.load.resource.bitmap.BitmapTransformation import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.MainScope diff --git a/app/src/main/java/ani/dantotsu/media/MediaInfoFragment.kt b/app/src/main/java/ani/dantotsu/media/MediaInfoFragment.kt index ecd0e537..00d3224d 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaInfoFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaInfoFragment.kt @@ -3,7 +3,6 @@ package ani.dantotsu.media import android.animation.ObjectAnimator import android.annotation.SuppressLint import android.content.Intent -import android.net.Uri import android.os.Build import android.os.Bundle import android.os.CountDownTimer @@ -24,10 +23,24 @@ import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager -import ani.dantotsu.* +import ani.dantotsu.R import ani.dantotsu.connections.anilist.Anilist import ani.dantotsu.connections.anilist.GenresViewModel -import ani.dantotsu.databinding.* +import ani.dantotsu.copyToClipboard +import ani.dantotsu.countDown +import ani.dantotsu.currActivity +import ani.dantotsu.databinding.ActivityGenreBinding +import ani.dantotsu.databinding.FragmentMediaInfoBinding +import ani.dantotsu.databinding.ItemChipBinding +import ani.dantotsu.databinding.ItemQuelsBinding +import ani.dantotsu.databinding.ItemTitleChipgroupBinding +import ani.dantotsu.databinding.ItemTitleRecyclerBinding +import ani.dantotsu.databinding.ItemTitleTextBinding +import ani.dantotsu.databinding.ItemTitleTrailerBinding +import ani.dantotsu.loadImage +import ani.dantotsu.navBarHeight +import ani.dantotsu.px +import ani.dantotsu.setSafeOnClickListener import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName import io.noties.markwon.Markwon @@ -39,7 +52,6 @@ import java.io.Serializable import java.net.URLEncoder - class MediaInfoFragment : Fragment() { private var _binding: FragmentMediaInfoBinding? = null private val binding get() = _binding!! diff --git a/app/src/main/java/ani/dantotsu/media/MediaListDialogFragment.kt b/app/src/main/java/ani/dantotsu/media/MediaListDialogFragment.kt index e8c15685..6ac9d7f0 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaListDialogFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaListDialogFragment.kt @@ -1,6 +1,5 @@ package ani.dantotsu.media -import android.annotation.SuppressLint import android.os.Bundle import android.text.InputFilter.LengthFilter import android.view.Gravity @@ -11,11 +10,18 @@ import android.widget.ArrayAdapter import androidx.core.view.updateLayoutParams import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope -import ani.dantotsu.* +import ani.dantotsu.BottomSheetDialogFragment +import ani.dantotsu.DatePickerFragment +import ani.dantotsu.InputFilterMinMax +import ani.dantotsu.R +import ani.dantotsu.Refresh import ani.dantotsu.connections.anilist.Anilist import ani.dantotsu.connections.anilist.api.FuzzyDate import ani.dantotsu.connections.mal.MAL import ani.dantotsu.databinding.BottomSheetMediaListBinding +import ani.dantotsu.navBarHeight +import ani.dantotsu.snackString +import ani.dantotsu.tryWith import com.google.android.material.materialswitch.MaterialSwitch import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/app/src/main/java/ani/dantotsu/media/MediaListDialogSmallFragment.kt b/app/src/main/java/ani/dantotsu/media/MediaListDialogSmallFragment.kt index 8848c125..36ded771 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaListDialogSmallFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaListDialogSmallFragment.kt @@ -1,6 +1,5 @@ package ani.dantotsu.media -import android.annotation.SuppressLint import android.os.Bundle import android.text.InputFilter.LengthFilter import android.view.Gravity @@ -10,11 +9,16 @@ import android.view.ViewGroup import android.widget.ArrayAdapter import androidx.core.view.updateLayoutParams import androidx.lifecycle.lifecycleScope -import ani.dantotsu.* +import ani.dantotsu.BottomSheetDialogFragment +import ani.dantotsu.InputFilterMinMax +import ani.dantotsu.R +import ani.dantotsu.Refresh import ani.dantotsu.connections.anilist.Anilist import ani.dantotsu.connections.mal.MAL import ani.dantotsu.databinding.BottomSheetMediaListSmallBinding +import ani.dantotsu.navBarHeight import ani.dantotsu.others.getSerialized +import ani.dantotsu.snackString import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext diff --git a/app/src/main/java/ani/dantotsu/media/SearchActivity.kt b/app/src/main/java/ani/dantotsu/media/SearchActivity.kt index e1915f22..bb71c46c 100644 --- a/app/src/main/java/ani/dantotsu/media/SearchActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/SearchActivity.kt @@ -12,17 +12,21 @@ import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.ConcatAdapter import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView -import ani.dantotsu.* import ani.dantotsu.connections.anilist.Anilist import ani.dantotsu.connections.anilist.AnilistSearch import ani.dantotsu.connections.anilist.SearchResults import ani.dantotsu.databinding.ActivitySearchBinding +import ani.dantotsu.initActivity +import ani.dantotsu.navBarHeight +import ani.dantotsu.px import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName +import ani.dantotsu.statusBarHeight import ani.dantotsu.themes.ThemeManager import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import java.util.* +import java.util.Timer +import java.util.TimerTask class SearchActivity : AppCompatActivity() { private lateinit var binding: ActivitySearchBinding diff --git a/app/src/main/java/ani/dantotsu/media/SearchAdapter.kt b/app/src/main/java/ani/dantotsu/media/SearchAdapter.kt index 2bfec418..cb590e3a 100644 --- a/app/src/main/java/ani/dantotsu/media/SearchAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/SearchAdapter.kt @@ -15,7 +15,6 @@ import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputMethodManager import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.content.res.AppCompatResources -import androidx.core.content.ContextCompat.startActivity import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.HORIZONTAL @@ -28,7 +27,9 @@ import ani.dantotsu.openLinkInBrowser import ani.dantotsu.others.imagesearch.ImageSearchActivity import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName -import com.google.android.material.checkbox.MaterialCheckBox.* +import com.google.android.material.checkbox.MaterialCheckBox.STATE_CHECKED +import com.google.android.material.checkbox.MaterialCheckBox.STATE_INDETERMINATE +import com.google.android.material.checkbox.MaterialCheckBox.STATE_UNCHECKED import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay diff --git a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt index 2f798a22..792a687c 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt @@ -1,11 +1,9 @@ package ani.dantotsu.media.anime -import android.annotation.SuppressLint import android.content.Intent import android.net.Uri import android.view.LayoutInflater import android.view.View -import ani.dantotsu.settings.FAQActivity import android.view.ViewGroup import android.widget.ArrayAdapter import android.widget.ImageButton @@ -17,20 +15,29 @@ import androidx.core.view.isGone import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.RecyclerView -import ani.dantotsu.* +import ani.dantotsu.FileUrl +import ani.dantotsu.R +import ani.dantotsu.countDown +import ani.dantotsu.currActivity import ani.dantotsu.databinding.DialogLayoutBinding import ani.dantotsu.databinding.ItemAnimeWatchBinding import ani.dantotsu.databinding.ItemChipBinding +import ani.dantotsu.isOnline +import ani.dantotsu.loadImage import ani.dantotsu.media.Media import ani.dantotsu.media.MediaDetailsActivity import ani.dantotsu.media.SourceSearchDialogFragment +import ani.dantotsu.openSettings import ani.dantotsu.others.LanguageMapper import ani.dantotsu.others.webview.CookieCatcher import ani.dantotsu.parsers.AnimeSources import ani.dantotsu.parsers.DynamicAnimeParser import ani.dantotsu.parsers.WatchSources +import ani.dantotsu.px +import ani.dantotsu.settings.FAQActivity import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName +import ani.dantotsu.toast import com.google.android.material.chip.Chip import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource import eu.kanade.tachiyomi.data.notification.Notifications.CHANNEL_SUBSCRIPTION_CHECK diff --git a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt index e6892945..f02a556d 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt @@ -42,6 +42,8 @@ import ani.dantotsu.media.MediaDetailsActivity import ani.dantotsu.media.MediaDetailsViewModel import ani.dantotsu.media.MediaType import ani.dantotsu.navBarHeight +import ani.dantotsu.notifications.subscription.SubscriptionHelper +import ani.dantotsu.notifications.subscription.SubscriptionHelper.Companion.saveSubscription import ani.dantotsu.others.LanguageMapper import ani.dantotsu.parsers.AnimeParser import ani.dantotsu.parsers.AnimeSources @@ -50,8 +52,6 @@ import ani.dantotsu.setNavigationTheme import ani.dantotsu.settings.extensionprefs.AnimeSourcePreferencesFragment import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName -import ani.dantotsu.notifications.subscription.SubscriptionHelper -import ani.dantotsu.notifications.subscription.SubscriptionHelper.Companion.saveSubscription import ani.dantotsu.snackString import com.google.android.material.appbar.AppBarLayout import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource diff --git a/app/src/main/java/ani/dantotsu/media/anime/EpisodeAdapters.kt b/app/src/main/java/ani/dantotsu/media/anime/EpisodeAdapters.kt index 3f06bf4d..21f3e439 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/EpisodeAdapters.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/EpisodeAdapters.kt @@ -1,6 +1,5 @@ package ani.dantotsu.media.anime -import android.annotation.SuppressLint import android.app.AlertDialog import android.view.LayoutInflater import android.view.View 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 57a6b999..292a9660 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/SelectorDialogFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/SelectorDialogFragment.kt @@ -22,21 +22,29 @@ import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import ani.dantotsu.* +import ani.dantotsu.BottomSheetDialogFragment +import ani.dantotsu.R import ani.dantotsu.connections.crashlytics.CrashlyticsInterface +import ani.dantotsu.copyToClipboard +import ani.dantotsu.currActivity import ani.dantotsu.databinding.BottomSheetSelectorBinding import ani.dantotsu.databinding.ItemStreamBinding import ani.dantotsu.databinding.ItemUrlBinding import ani.dantotsu.download.video.Helper +import ani.dantotsu.hideSystemBars import ani.dantotsu.media.Media import ani.dantotsu.media.MediaDetailsViewModel +import ani.dantotsu.navBarHeight import ani.dantotsu.others.Download.download import ani.dantotsu.parsers.Subtitle import ani.dantotsu.parsers.Video import ani.dantotsu.parsers.VideoExtractor import ani.dantotsu.parsers.VideoType +import ani.dantotsu.setSafeOnClickListener import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName +import ani.dantotsu.snackString +import ani.dantotsu.tryWith import ani.dantotsu.util.Logger import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers diff --git a/app/src/main/java/ani/dantotsu/media/anime/SubtitleDialogFragment.kt b/app/src/main/java/ani/dantotsu/media/anime/SubtitleDialogFragment.kt index bc6e8546..a268237e 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/SubtitleDialogFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/SubtitleDialogFragment.kt @@ -1,6 +1,5 @@ package ani.dantotsu.media.anime -import android.app.Activity import android.graphics.Color.TRANSPARENT import android.os.Bundle import android.view.LayoutInflater diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt index 67d9a696..19d039f5 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt @@ -1,6 +1,5 @@ package ani.dantotsu.media.manga -import android.annotation.SuppressLint import android.app.AlertDialog import android.util.TypedValue import android.view.LayoutInflater @@ -17,11 +16,11 @@ import ani.dantotsu.databinding.ItemChapterListBinding import ani.dantotsu.databinding.ItemEpisodeCompactBinding import ani.dantotsu.media.Media import ani.dantotsu.setAnimation +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import java.text.SimpleDateFormat import java.util.Date import java.util.Locale -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch class MangaChapterAdapter( private var type: Int, diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt index 08a9bfb9..6fde9b9c 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt @@ -1,6 +1,5 @@ package ani.dantotsu.media.manga -import android.annotation.SuppressLint import android.app.AlertDialog import android.content.Intent import android.view.LayoutInflater @@ -17,22 +16,29 @@ import androidx.core.view.isGone import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.RecyclerView -import ani.dantotsu.* +import ani.dantotsu.R +import ani.dantotsu.currActivity +import ani.dantotsu.currContext import ani.dantotsu.databinding.DialogLayoutBinding import ani.dantotsu.databinding.ItemAnimeWatchBinding import ani.dantotsu.databinding.ItemChipBinding +import ani.dantotsu.isOnline +import ani.dantotsu.loadImage import ani.dantotsu.media.Media import ani.dantotsu.media.MediaDetailsActivity import ani.dantotsu.media.SourceSearchDialogFragment import ani.dantotsu.media.anime.handleProgress +import ani.dantotsu.openSettings import ani.dantotsu.others.LanguageMapper import ani.dantotsu.others.webview.CookieCatcher import ani.dantotsu.parsers.DynamicMangaParser import ani.dantotsu.parsers.MangaReadSources import ani.dantotsu.parsers.MangaSources +import ani.dantotsu.px import ani.dantotsu.settings.FAQActivity import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName +import ani.dantotsu.toast import com.google.android.material.chip.Chip import eu.kanade.tachiyomi.data.notification.Notifications.CHANNEL_SUBSCRIPTION_CHECK import eu.kanade.tachiyomi.source.online.HttpSource diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt index 4bedaecc..193f5612 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt @@ -43,6 +43,8 @@ import ani.dantotsu.media.MediaDetailsViewModel import ani.dantotsu.media.MediaType import ani.dantotsu.media.manga.mangareader.ChapterLoaderDialog import ani.dantotsu.navBarHeight +import ani.dantotsu.notifications.subscription.SubscriptionHelper +import ani.dantotsu.notifications.subscription.SubscriptionHelper.Companion.saveSubscription import ani.dantotsu.others.LanguageMapper import ani.dantotsu.parsers.DynamicMangaParser import ani.dantotsu.parsers.HMangaSources @@ -52,8 +54,6 @@ import ani.dantotsu.setNavigationTheme import ani.dantotsu.settings.extensionprefs.MangaSourcePreferencesFragment import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName -import ani.dantotsu.notifications.subscription.SubscriptionHelper -import ani.dantotsu.notifications.subscription.SubscriptionHelper.Companion.saveSubscription import ani.dantotsu.snackString import com.google.android.material.appbar.AppBarLayout import eu.kanade.tachiyomi.extension.manga.model.MangaExtension diff --git a/app/src/main/java/ani/dantotsu/media/novel/NovelResponseAdapter.kt b/app/src/main/java/ani/dantotsu/media/novel/NovelResponseAdapter.kt index e523ff29..6633d75c 100644 --- a/app/src/main/java/ani/dantotsu/media/novel/NovelResponseAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/novel/NovelResponseAdapter.kt @@ -1,9 +1,7 @@ package ani.dantotsu.media.novel -import android.util.Log import android.util.TypedValue import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat import androidx.core.view.isVisible diff --git a/app/src/main/java/ani/dantotsu/media/novel/UrlAdapter.kt b/app/src/main/java/ani/dantotsu/media/novel/UrlAdapter.kt index dabd635c..888499f5 100644 --- a/app/src/main/java/ani/dantotsu/media/novel/UrlAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/novel/UrlAdapter.kt @@ -1,6 +1,5 @@ package ani.dantotsu.media.novel -import android.annotation.SuppressLint import android.view.HapticFeedbackConstants import android.view.LayoutInflater import android.view.View diff --git a/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderActivity.kt b/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderActivity.kt index 13712c21..7e21e14d 100644 --- a/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderActivity.kt @@ -59,7 +59,8 @@ import java.io.FileInputStream import java.io.FileOutputStream import java.io.ObjectInputStream import java.io.ObjectOutputStream -import java.util.* +import java.util.Timer +import java.util.TimerTask import kotlin.math.min import kotlin.properties.Delegates diff --git a/app/src/main/java/ani/dantotsu/parsers/AnimeParser.kt b/app/src/main/java/ani/dantotsu/parsers/AnimeParser.kt index 8914c440..e41a7361 100644 --- a/app/src/main/java/ani/dantotsu/parsers/AnimeParser.kt +++ b/app/src/main/java/ani/dantotsu/parsers/AnimeParser.kt @@ -90,14 +90,12 @@ abstract class AnimeParser : BaseParser() { domain = domain.substring(4) } - val extractor: VideoExtractor? = when (domain) { + return when (domain) { else -> { println("$name : No extractor found for: $domain | ${server.embed.url}") null } } - - return extractor } /** diff --git a/app/src/main/java/ani/dantotsu/parsers/AniyomiAdapter.kt b/app/src/main/java/ani/dantotsu/parsers/AniyomiAdapter.kt index 971f750a..f23f83ae 100644 --- a/app/src/main/java/ani/dantotsu/parsers/AniyomiAdapter.kt +++ b/app/src/main/java/ani/dantotsu/parsers/AniyomiAdapter.kt @@ -1,21 +1,9 @@ package ani.dantotsu.parsers -import android.content.ActivityNotFoundException -import android.content.ComponentName -import android.content.ContentResolver -import android.content.ContentValues import android.content.Context -import android.content.Intent -import android.graphics.Bitmap -import android.graphics.BitmapFactory -import android.net.Uri -import android.os.Build -import android.os.Environment -import android.provider.MediaStore import ani.dantotsu.FileUrl import ani.dantotsu.currContext import ani.dantotsu.media.anime.AnimeNameAdapter -import ani.dantotsu.media.anime.ExoplayerView import ani.dantotsu.media.manga.ImageData import ani.dantotsu.media.manga.MangaCache import ani.dantotsu.snackString diff --git a/app/src/main/java/ani/dantotsu/parsers/BaseSources.kt b/app/src/main/java/ani/dantotsu/parsers/BaseSources.kt index 475d681f..1dd000b8 100644 --- a/app/src/main/java/ani/dantotsu/parsers/BaseSources.kt +++ b/app/src/main/java/ani/dantotsu/parsers/BaseSources.kt @@ -1,11 +1,11 @@ package ani.dantotsu.parsers import ani.dantotsu.Lazier -import ani.dantotsu.util.Logger import ani.dantotsu.media.Media import ani.dantotsu.media.anime.Episode import ani.dantotsu.media.manga.MangaChapter import ani.dantotsu.tryWithSuspend +import ani.dantotsu.util.Logger import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.source.model.SManga diff --git a/app/src/main/java/ani/dantotsu/parsers/NovelSources.kt b/app/src/main/java/ani/dantotsu/parsers/NovelSources.kt index 9420feb8..ea35a1b3 100644 --- a/app/src/main/java/ani/dantotsu/parsers/NovelSources.kt +++ b/app/src/main/java/ani/dantotsu/parsers/NovelSources.kt @@ -1,6 +1,5 @@ package ani.dantotsu.parsers -import android.util.Log import ani.dantotsu.Lazier import ani.dantotsu.parsers.novel.DynamicNovelParser import ani.dantotsu.parsers.novel.NovelExtension diff --git a/app/src/main/java/ani/dantotsu/parsers/OfflineMangaParser.kt b/app/src/main/java/ani/dantotsu/parsers/OfflineMangaParser.kt index 25099d78..29149873 100644 --- a/app/src/main/java/ani/dantotsu/parsers/OfflineMangaParser.kt +++ b/app/src/main/java/ani/dantotsu/parsers/OfflineMangaParser.kt @@ -3,8 +3,8 @@ package ani.dantotsu.parsers import android.os.Environment import ani.dantotsu.currContext import ani.dantotsu.download.DownloadsManager -import ani.dantotsu.util.Logger import ani.dantotsu.media.manga.MangaNameAdapter +import ani.dantotsu.util.Logger import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import me.xdrop.fuzzywuzzy.FuzzySearch diff --git a/app/src/main/java/ani/dantotsu/parsers/novel/NovelExtensionGithubApi.kt b/app/src/main/java/ani/dantotsu/parsers/novel/NovelExtensionGithubApi.kt index 9867658e..a209881e 100644 --- a/app/src/main/java/ani/dantotsu/parsers/novel/NovelExtensionGithubApi.kt +++ b/app/src/main/java/ani/dantotsu/parsers/novel/NovelExtensionGithubApi.kt @@ -2,9 +2,9 @@ package ani.dantotsu.parsers.novel import android.content.Context -import ani.dantotsu.util.Logger import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName +import ani.dantotsu.util.Logger import eu.kanade.tachiyomi.extension.ExtensionUpdateNotifier import eu.kanade.tachiyomi.extension.anime.model.AnimeExtension import eu.kanade.tachiyomi.extension.anime.model.AnimeLoadResult diff --git a/app/src/main/java/ani/dantotsu/parsers/novel/NovelExtensionManager.kt b/app/src/main/java/ani/dantotsu/parsers/novel/NovelExtensionManager.kt index d52edd30..e55b238c 100644 --- a/app/src/main/java/ani/dantotsu/parsers/novel/NovelExtensionManager.kt +++ b/app/src/main/java/ani/dantotsu/parsers/novel/NovelExtensionManager.kt @@ -2,8 +2,8 @@ package ani.dantotsu.parsers.novel import android.content.Context import android.graphics.drawable.Drawable -import ani.dantotsu.util.Logger import ani.dantotsu.snackString +import ani.dantotsu.util.Logger import eu.kanade.tachiyomi.extension.InstallStep import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow diff --git a/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt b/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt index c754059b..d5c2f0c7 100644 --- a/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt @@ -9,6 +9,7 @@ import android.view.ViewGroup import android.widget.PopupMenu import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat +import androidx.core.view.isGone import androidx.core.view.updateLayoutParams import androidx.core.view.updateMargins import androidx.fragment.app.Fragment @@ -108,8 +109,7 @@ class ProfileActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedListene } }) val userLevel = intent.getStringExtra("userLVL") ?: "" - binding.followButton.visibility = - if (user.id == Anilist.userid || Anilist.userid == null) View.GONE else View.VISIBLE + binding.followButton.isGone = user.id == Anilist.userid || Anilist.userid == null binding.followButton.text = getString( when { user.isFollowing -> R.string.unfollow diff --git a/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt b/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt index 6c10242d..a92e39e4 100644 --- a/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt @@ -1,27 +1,27 @@ package ani.dantotsu.settings -import android.annotation.SuppressLint import android.app.AlertDialog -import android.os.Build.* -import android.os.Build.VERSION.* import android.os.Bundle import android.text.Editable import android.text.TextWatcher import android.view.View import android.view.ViewGroup -import android.view.WindowManager import android.widget.AutoCompleteTextView import androidx.appcompat.app.AppCompatActivity import androidx.core.view.updateLayoutParams import androidx.fragment.app.Fragment import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.widget.ViewPager2 -import ani.dantotsu.* +import ani.dantotsu.R +import ani.dantotsu.currContext import ani.dantotsu.databinding.ActivityExtensionsBinding +import ani.dantotsu.initActivity +import ani.dantotsu.navBarHeight import ani.dantotsu.others.AndroidBug5497Workaround import ani.dantotsu.others.LanguageMapper import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName +import ani.dantotsu.statusBarHeight import ani.dantotsu.themes.ThemeManager import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator diff --git a/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt index 0149b8ba..e25fb822 100644 --- a/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt @@ -1,11 +1,9 @@ package ani.dantotsu.settings -import android.annotation.SuppressLint import android.app.AlertDialog import android.app.NotificationManager import android.content.Context import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -27,13 +25,13 @@ import androidx.viewpager2.widget.ViewPager2 import ani.dantotsu.R import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.databinding.FragmentAnimeExtensionsBinding -import ani.dantotsu.util.Logger import ani.dantotsu.others.LanguageMapper import ani.dantotsu.parsers.AnimeSources import ani.dantotsu.settings.extensionprefs.AnimeSourcePreferencesFragment import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.snackString +import ani.dantotsu.util.Logger import com.google.android.material.tabs.TabLayout import com.google.android.material.textfield.TextInputLayout import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource diff --git a/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt index 12ee40be..24780ef5 100644 --- a/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt @@ -6,7 +6,6 @@ import android.app.AlertDialog import android.app.NotificationManager import android.content.Context import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup diff --git a/app/src/main/java/ani/dantotsu/settings/InstalledNovelExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/InstalledNovelExtensionsFragment.kt index 05314985..5a35099e 100644 --- a/app/src/main/java/ani/dantotsu/settings/InstalledNovelExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/InstalledNovelExtensionsFragment.kt @@ -1,10 +1,8 @@ package ani.dantotsu.settings -import android.annotation.SuppressLint import android.app.NotificationManager import android.content.Context import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup diff --git a/app/src/main/java/ani/dantotsu/settings/NovelExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/NovelExtensionsFragment.kt index 83b93c9c..05ab9c18 100644 --- a/app/src/main/java/ani/dantotsu/settings/NovelExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/NovelExtensionsFragment.kt @@ -3,7 +3,6 @@ package ani.dantotsu.settings import android.app.NotificationManager import android.content.Context import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup diff --git a/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt index f2a96778..2c8b0e40 100644 --- a/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt @@ -1,7 +1,6 @@ package ani.dantotsu.settings import android.app.AlertDialog -import android.content.Intent import android.os.Bundle import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity @@ -15,7 +14,6 @@ import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.statusBarHeight import ani.dantotsu.themes.ThemeManager -import com.google.android.material.snackbar.Snackbar class UserInterfaceSettingsActivity : AppCompatActivity() { lateinit var binding: ActivityUserInterfaceSettingsBinding diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/manga/MangaExtensionManager.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/manga/MangaExtensionManager.kt index 3557a14f..09fb725d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/manga/MangaExtensionManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/manga/MangaExtensionManager.kt @@ -14,6 +14,7 @@ import eu.kanade.tachiyomi.extension.util.ExtensionInstallReceiver import eu.kanade.tachiyomi.extension.util.ExtensionInstaller import eu.kanade.tachiyomi.extension.util.ExtensionLoader import eu.kanade.tachiyomi.util.preference.plusAssign +import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.async import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow @@ -250,6 +251,7 @@ class MangaExtensionManager( * * @param signature The signature to whitelist. */ + @OptIn(DelicateCoroutinesApi::class) fun trustSignature(signature: String) { val untrustedSignatures = _untrustedExtensionsFlow.value.map { it.signatureHash }.toSet() if (signature !in untrustedSignatures) return diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt index d4af1090..987cfead 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt @@ -165,6 +165,7 @@ internal class ExtensionInstallReceiver : BroadcastReceiver() { }.await() } + @OptIn(DelicateCoroutinesApi::class) private suspend fun getMangaExtensionFromIntent(context: Context, intent: Intent?): MangaLoadResult { val pkgName = getPackageNameFromIntent(intent) if (pkgName == null) { diff --git a/app/src/main/res/layout-land/activity_profile.xml b/app/src/main/res/layout-land/activity_profile.xml index 6af1527b..0aefbb9d 100644 --- a/app/src/main/res/layout-land/activity_profile.xml +++ b/app/src/main/res/layout-land/activity_profile.xml @@ -7,7 +7,7 @@ android:orientation="horizontal"> @@ -292,6 +292,7 @@ android:id="@+id/profileNavBar" android:layout_width="wrap_content" android:layout_height="match_parent" + android:layout_weight="0" android:layout_gravity="center_horizontal|bottom" android:background="?attr/colorSurface" android:padding="0dp"