From 4e6842862e5cee90cf2bbe76cad6387d21500f21 Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Wed, 17 Jan 2024 00:56:48 -0600 Subject: [PATCH] send offline mode to correct page --- app/build.gradle | 6 +- .../main/java/ani/dantotsu/MainActivity.kt | 14 ++- .../download/anime/OfflineAnimeFragment.kt | 4 +- .../download/manga/OfflineMangaFragment.kt | 2 +- .../dantotsu/media/MediaDetailsActivity.kt | 7 +- .../settings/SettingsDialogFragment.kt | 105 +++++++----------- 6 files changed, 68 insertions(+), 70 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 423d99f2..2c064aa9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -66,7 +66,7 @@ dependencies { implementation 'com.google.code.gson:gson:2.10' implementation 'com.github.Blatzar:NiceHttp:0.4.4' implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2' - implementation 'androidx.preference:preference:1.2.1' + implementation 'androidx.preference:preference-ktx:1.2.1' implementation 'androidx.webkit:webkit:1.9.0' // Glide @@ -115,8 +115,8 @@ dependencies { implementation 'ca.gosyer:voyager-navigator:1.0.0-rc07' implementation 'com.squareup.logcat:logcat:0.1' implementation 'com.github.inorichi.injekt:injekt-core:65b0440' - implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.12' - implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.12' + implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.11' + implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.11' implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps' implementation 'com.squareup.okio:okio:3.7.0' implementation 'ch.acra:acra-http:5.11.3' diff --git a/app/src/main/java/ani/dantotsu/MainActivity.kt b/app/src/main/java/ani/dantotsu/MainActivity.kt index a82367b5..e9de20dd 100644 --- a/app/src/main/java/ani/dantotsu/MainActivity.kt +++ b/app/src/main/java/ani/dantotsu/MainActivity.kt @@ -73,6 +73,9 @@ class MainActivity : AppCompatActivity() { LangSet.setLocale(this) super.onCreate(savedInstanceState) + //get FRAGMENT_CLASS_NAME from intent + val FRAGMENT_CLASS_NAME = intent.getStringExtra("FRAGMENT_CLASS_NAME") + binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) @@ -151,7 +154,16 @@ class MainActivity : AppCompatActivity() { binding.root.doOnAttach { initActivity(this) uiSettings = loadData("ui_settings") ?: uiSettings - selectedOption = uiSettings.defaultStartUpTab + selectedOption = if (FRAGMENT_CLASS_NAME != null) { + when (FRAGMENT_CLASS_NAME) { + AnimeFragment::class.java.name -> 0 + HomeFragment::class.java.name -> 1 + MangaFragment::class.java.name -> 2 + else -> 1 + } + } else { + uiSettings.defaultStartUpTab + } if (!uiSettings.immersiveMode) { binding.includedNavbar.navbarContainer.updateLayoutParams { bottomMargin = navBarHeight diff --git a/app/src/main/java/ani/dantotsu/download/anime/OfflineAnimeFragment.kt b/app/src/main/java/ani/dantotsu/download/anime/OfflineAnimeFragment.kt index db30a085..dc1e9a68 100644 --- a/app/src/main/java/ani/dantotsu/download/anime/OfflineAnimeFragment.kt +++ b/app/src/main/java/ani/dantotsu/download/anime/OfflineAnimeFragment.kt @@ -93,7 +93,7 @@ class OfflineAnimeFragment : Fragment(), OfflineAnimeSearchListener { val animeUserAvatar = view.findViewById(R.id.offlineMangaUserAvatar) animeUserAvatar.setSafeOnClickListener { val dialogFragment = - SettingsDialogFragment.newInstance2(SettingsDialogFragment.Companion.PageType2.OfflineANIME) + SettingsDialogFragment.newInstance(SettingsDialogFragment.Companion.PageType.OfflineANIME) dialogFragment.show((it.context as AppCompatActivity).supportFragmentManager, "dialog") } if (!uiSettings.immersiveMode) { @@ -187,9 +187,9 @@ class OfflineAnimeFragment : Fragment(), OfflineAnimeSearchListener { val media = downloadManager.animeDownloadedTypes.firstOrNull { it.title == item.title } media?.let { + MediaDetailsActivity.mediaSingleton = getMedia(it) startActivity( Intent(requireContext(), MediaDetailsActivity::class.java) - .putExtra("media", getMedia(it)) .putExtra("download", true) ) } ?: run { diff --git a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt index 099c3e58..3b19846e 100644 --- a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt +++ b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt @@ -86,7 +86,7 @@ class OfflineMangaFragment : Fragment(), OfflineMangaSearchListener { val animeUserAvatar = view.findViewById(R.id.offlineMangaUserAvatar) animeUserAvatar.setSafeOnClickListener { val dialogFragment = - SettingsDialogFragment.newInstance2(SettingsDialogFragment.Companion.PageType2.OfflineMANGA) + SettingsDialogFragment.newInstance(SettingsDialogFragment.Companion.PageType.OfflineMANGA) dialogFragment.show((it.context as AppCompatActivity).supportFragmentManager, "dialog") } if (!uiSettings.immersiveMode) { diff --git a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt index 7cf8b2b6..3952e2cc 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt @@ -74,7 +74,8 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi @SuppressLint("SetTextI18n", "ClickableViewAccessibility") override fun onCreate(savedInstanceState: Bundle?) { LangSet.setLocale(this) - var media: Media = intent.getSerialized("media") ?: return + var media: Media = intent.getSerialized("media") ?: mediaSingleton ?: return + mediaSingleton = null ThemeManager(this).applyTheme(MediaSingleton.bitmap) MediaSingleton.bitmap = null super.onCreate(savedInstanceState) @@ -533,5 +534,9 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi image.alpha = if (disabled) 0.33f else 1f } } + + companion object { + var mediaSingleton: Media? = null + } } diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt b/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt index 45ab6d87..48341259 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt @@ -33,12 +33,9 @@ class SettingsDialogFragment : BottomSheetDialogFragment() { private val binding get() = _binding!! private lateinit var pageType: PageType - private lateinit var pageType2: PageType2 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) pageType = arguments?.getSerializable("pageType") as? PageType ?: PageType.HOME - pageType2 = arguments?.getSerializable("pageType2") as? PageType2 - ?: PageType2.OfflineMANGA // changed when offline home page comes } override fun onCreateView( @@ -109,57 +106,53 @@ class SettingsDialogFragment : BottomSheetDialogFragment() { context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE) ?.getBoolean("offlineMode", false) ?: false binding.settingsDownloads.setOnCheckedChangeListener { _, isChecked -> - - if (!isChecked) { - when (pageType2) { - PageType2.OfflineMANGA -> { - val intent = Intent(activity, MainActivity::class.java) - intent.putExtra("FRAGMENT_CLASS_NAME", MangaFragment::class.java.name) - startActivity(intent) - } - - PageType2.OfflineHOME -> { //no offline home for now - val intent = Intent(activity, MainActivity::class.java) - intent.putExtra( - "FRAGMENT_CLASS_NAME", - if (Anilist.token != null) HomeFragment::class.java.name else LoginFragment::class.java.name - ) - startActivity(intent) - } - - PageType2.OfflineANIME -> { //no offline anime for now - val intent = Intent(activity, MainActivity::class.java) - intent.putExtra("FRAGMENT_CLASS_NAME", AnimeFragment::class.java.name) - startActivity(intent) - } + when (pageType) { + PageType.MANGA -> { + val intent = Intent(activity, NoInternet::class.java) + intent.putExtra( + "FRAGMENT_CLASS_NAME", + OfflineMangaFragment::class.java.name + ) + startActivity(intent) } - } else { - when (pageType) { - PageType.MANGA -> { - val intent = Intent(activity, NoInternet::class.java) - intent.putExtra( - "FRAGMENT_CLASS_NAME", - OfflineMangaFragment::class.java.name - ) - startActivity(intent) - } - PageType.ANIME -> { - val intent = Intent(activity, NoInternet::class.java) - intent.putExtra( - "FRAGMENT_CLASS_NAME", - OfflineAnimeFragment::class.java.name - ) - startActivity(intent) - } + PageType.ANIME -> { + val intent = Intent(activity, NoInternet::class.java) + intent.putExtra( + "FRAGMENT_CLASS_NAME", + OfflineAnimeFragment::class.java.name + ) + startActivity(intent) + } - PageType.HOME -> { - val intent = Intent(activity, NoInternet::class.java) - intent.putExtra("FRAGMENT_CLASS_NAME", OfflineFragment::class.java.name) - startActivity(intent) - } + PageType.HOME -> { + val intent = Intent(activity, NoInternet::class.java) + intent.putExtra("FRAGMENT_CLASS_NAME", OfflineFragment::class.java.name) + startActivity(intent) + } + + PageType.OfflineMANGA -> { + val intent = Intent(activity, MainActivity::class.java) + intent.putExtra("FRAGMENT_CLASS_NAME", MangaFragment::class.java.name) + startActivity(intent) + } + + PageType.OfflineHOME -> { + val intent = Intent(activity, MainActivity::class.java) + intent.putExtra( + "FRAGMENT_CLASS_NAME", + if (Anilist.token != null) HomeFragment::class.java.name else LoginFragment::class.java.name + ) + startActivity(intent) + } + + PageType.OfflineANIME -> { + val intent = Intent(activity, MainActivity::class.java) + intent.putExtra("FRAGMENT_CLASS_NAME", AnimeFragment::class.java.name) + startActivity(intent) } } + dismiss() context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.edit() ?.putBoolean("offlineMode", isChecked)?.apply() @@ -173,11 +166,7 @@ class SettingsDialogFragment : BottomSheetDialogFragment() { companion object { enum class PageType { - MANGA, ANIME, HOME - } - - enum class PageType2 { - OfflineMANGA, OfflineANIME, OfflineHOME + MANGA, ANIME, HOME, OfflineMANGA, OfflineANIME, OfflineHOME } fun newInstance(pageType: PageType): SettingsDialogFragment { @@ -187,13 +176,5 @@ class SettingsDialogFragment : BottomSheetDialogFragment() { fragment.arguments = args return fragment } - - fun newInstance2(pageType: PageType2): SettingsDialogFragment { - val fragment = SettingsDialogFragment() - val args = Bundle() - args.putSerializable("pageType", pageType) - fragment.arguments = args - return fragment - } } } \ No newline at end of file