send offline mode to correct page

This commit is contained in:
rebelonion 2024-01-17 00:56:48 -06:00
parent ddde08c61b
commit 4e6842862e
6 changed files with 68 additions and 70 deletions

View file

@ -66,7 +66,7 @@ dependencies {
implementation 'com.google.code.gson:gson:2.10' implementation 'com.google.code.gson:gson:2.10'
implementation 'com.github.Blatzar:NiceHttp:0.4.4' implementation 'com.github.Blatzar:NiceHttp:0.4.4'
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2' 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' implementation 'androidx.webkit:webkit:1.9.0'
// Glide // Glide
@ -115,8 +115,8 @@ dependencies {
implementation 'ca.gosyer:voyager-navigator:1.0.0-rc07' implementation 'ca.gosyer:voyager-navigator:1.0.0-rc07'
implementation 'com.squareup.logcat:logcat:0.1' implementation 'com.squareup.logcat:logcat:0.1'
implementation 'com.github.inorichi.injekt:injekt-core:65b0440' implementation 'com.github.inorichi.injekt:injekt-core:65b0440'
implementation 'com.squareup.okhttp3:logging-interceptor: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.12' implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.11'
implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps' implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps'
implementation 'com.squareup.okio:okio:3.7.0' implementation 'com.squareup.okio:okio:3.7.0'
implementation 'ch.acra:acra-http:5.11.3' implementation 'ch.acra:acra-http:5.11.3'

View file

@ -73,6 +73,9 @@ class MainActivity : AppCompatActivity() {
LangSet.setLocale(this) LangSet.setLocale(this)
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
//get FRAGMENT_CLASS_NAME from intent
val FRAGMENT_CLASS_NAME = intent.getStringExtra("FRAGMENT_CLASS_NAME")
binding = ActivityMainBinding.inflate(layoutInflater) binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
@ -151,7 +154,16 @@ class MainActivity : AppCompatActivity() {
binding.root.doOnAttach { binding.root.doOnAttach {
initActivity(this) initActivity(this)
uiSettings = loadData("ui_settings") ?: uiSettings 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) { if (!uiSettings.immersiveMode) {
binding.includedNavbar.navbarContainer.updateLayoutParams<ViewGroup.MarginLayoutParams> { binding.includedNavbar.navbarContainer.updateLayoutParams<ViewGroup.MarginLayoutParams> {
bottomMargin = navBarHeight bottomMargin = navBarHeight

View file

@ -93,7 +93,7 @@ class OfflineAnimeFragment : Fragment(), OfflineAnimeSearchListener {
val animeUserAvatar = view.findViewById<ShapeableImageView>(R.id.offlineMangaUserAvatar) val animeUserAvatar = view.findViewById<ShapeableImageView>(R.id.offlineMangaUserAvatar)
animeUserAvatar.setSafeOnClickListener { animeUserAvatar.setSafeOnClickListener {
val dialogFragment = val dialogFragment =
SettingsDialogFragment.newInstance2(SettingsDialogFragment.Companion.PageType2.OfflineANIME) SettingsDialogFragment.newInstance(SettingsDialogFragment.Companion.PageType.OfflineANIME)
dialogFragment.show((it.context as AppCompatActivity).supportFragmentManager, "dialog") dialogFragment.show((it.context as AppCompatActivity).supportFragmentManager, "dialog")
} }
if (!uiSettings.immersiveMode) { if (!uiSettings.immersiveMode) {
@ -187,9 +187,9 @@ class OfflineAnimeFragment : Fragment(), OfflineAnimeSearchListener {
val media = val media =
downloadManager.animeDownloadedTypes.firstOrNull { it.title == item.title } downloadManager.animeDownloadedTypes.firstOrNull { it.title == item.title }
media?.let { media?.let {
MediaDetailsActivity.mediaSingleton = getMedia(it)
startActivity( startActivity(
Intent(requireContext(), MediaDetailsActivity::class.java) Intent(requireContext(), MediaDetailsActivity::class.java)
.putExtra("media", getMedia(it))
.putExtra("download", true) .putExtra("download", true)
) )
} ?: run { } ?: run {

View file

@ -86,7 +86,7 @@ class OfflineMangaFragment : Fragment(), OfflineMangaSearchListener {
val animeUserAvatar = view.findViewById<ShapeableImageView>(R.id.offlineMangaUserAvatar) val animeUserAvatar = view.findViewById<ShapeableImageView>(R.id.offlineMangaUserAvatar)
animeUserAvatar.setSafeOnClickListener { animeUserAvatar.setSafeOnClickListener {
val dialogFragment = val dialogFragment =
SettingsDialogFragment.newInstance2(SettingsDialogFragment.Companion.PageType2.OfflineMANGA) SettingsDialogFragment.newInstance(SettingsDialogFragment.Companion.PageType.OfflineMANGA)
dialogFragment.show((it.context as AppCompatActivity).supportFragmentManager, "dialog") dialogFragment.show((it.context as AppCompatActivity).supportFragmentManager, "dialog")
} }
if (!uiSettings.immersiveMode) { if (!uiSettings.immersiveMode) {

View file

@ -74,7 +74,8 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
@SuppressLint("SetTextI18n", "ClickableViewAccessibility") @SuppressLint("SetTextI18n", "ClickableViewAccessibility")
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
LangSet.setLocale(this) 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) ThemeManager(this).applyTheme(MediaSingleton.bitmap)
MediaSingleton.bitmap = null MediaSingleton.bitmap = null
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -533,5 +534,9 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
image.alpha = if (disabled) 0.33f else 1f image.alpha = if (disabled) 0.33f else 1f
} }
} }
companion object {
var mediaSingleton: Media? = null
}
} }

View file

@ -33,12 +33,9 @@ class SettingsDialogFragment : BottomSheetDialogFragment() {
private val binding get() = _binding!! private val binding get() = _binding!!
private lateinit var pageType: PageType private lateinit var pageType: PageType
private lateinit var pageType2: PageType2
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
pageType = arguments?.getSerializable("pageType") as? PageType ?: PageType.HOME 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( override fun onCreateView(
@ -109,57 +106,53 @@ class SettingsDialogFragment : BottomSheetDialogFragment() {
context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE) context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)
?.getBoolean("offlineMode", false) ?: false ?.getBoolean("offlineMode", false) ?: false
binding.settingsDownloads.setOnCheckedChangeListener { _, isChecked -> binding.settingsDownloads.setOnCheckedChangeListener { _, isChecked ->
when (pageType) {
if (!isChecked) { PageType.MANGA -> {
when (pageType2) { val intent = Intent(activity, NoInternet::class.java)
PageType2.OfflineMANGA -> { intent.putExtra(
val intent = Intent(activity, MainActivity::class.java) "FRAGMENT_CLASS_NAME",
intent.putExtra("FRAGMENT_CLASS_NAME", MangaFragment::class.java.name) OfflineMangaFragment::class.java.name
startActivity(intent) )
} 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)
}
} }
} 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 -> { PageType.ANIME -> {
val intent = Intent(activity, NoInternet::class.java) val intent = Intent(activity, NoInternet::class.java)
intent.putExtra( intent.putExtra(
"FRAGMENT_CLASS_NAME", "FRAGMENT_CLASS_NAME",
OfflineAnimeFragment::class.java.name OfflineAnimeFragment::class.java.name
) )
startActivity(intent) startActivity(intent)
} }
PageType.HOME -> { PageType.HOME -> {
val intent = Intent(activity, NoInternet::class.java) val intent = Intent(activity, NoInternet::class.java)
intent.putExtra("FRAGMENT_CLASS_NAME", OfflineFragment::class.java.name) intent.putExtra("FRAGMENT_CLASS_NAME", OfflineFragment::class.java.name)
startActivity(intent) 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() dismiss()
context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.edit() context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.edit()
?.putBoolean("offlineMode", isChecked)?.apply() ?.putBoolean("offlineMode", isChecked)?.apply()
@ -173,11 +166,7 @@ class SettingsDialogFragment : BottomSheetDialogFragment() {
companion object { companion object {
enum class PageType { enum class PageType {
MANGA, ANIME, HOME MANGA, ANIME, HOME, OfflineMANGA, OfflineANIME, OfflineHOME
}
enum class PageType2 {
OfflineMANGA, OfflineANIME, OfflineHOME
} }
fun newInstance(pageType: PageType): SettingsDialogFragment { fun newInstance(pageType: PageType): SettingsDialogFragment {
@ -187,13 +176,5 @@ class SettingsDialogFragment : BottomSheetDialogFragment() {
fragment.arguments = args fragment.arguments = args
return fragment return fragment
} }
fun newInstance2(pageType: PageType2): SettingsDialogFragment {
val fragment = SettingsDialogFragment()
val args = Bundle()
args.putSerializable("pageType", pageType)
fragment.arguments = args
return fragment
}
} }
} }