fixed offline mode (#124)

This commit is contained in:
aayush262 2024-01-14 03:00:39 +05:30 committed by GitHub
parent e65fa8d565
commit e7631e021e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 88 additions and 81 deletions

View file

@ -154,96 +154,104 @@ class MainActivity : AppCompatActivity() {
bottomMargin = navBarHeight bottomMargin = navBarHeight
} }
} }
val offline = getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)
.getBoolean("offlineMode", false)
if (!isOnline(this)) { if (!isOnline(this)) {
snackString(this@MainActivity.getString(R.string.no_internet_connection)) snackString(this@MainActivity.getString(R.string.no_internet_connection))
startActivity(Intent(this, NoInternet::class.java)) startActivity(Intent(this, NoInternet::class.java))
} else { } else {
val model: AnilistHomeViewModel by viewModels() if (offline){
model.genres.observe(this) { it -> snackString(this@MainActivity.getString(R.string.no_internet_connection))
if (it != null) { startActivity(Intent(this, NoInternet::class.java))
if (it) {
val navbar = binding.includedNavbar.navbar
bottomBar = navbar
navbar.visibility = View.VISIBLE
binding.mainProgressBar.visibility = View.GONE
val mainViewPager = binding.viewpager
mainViewPager.isUserInputEnabled = false
mainViewPager.adapter = ViewPagerAdapter(supportFragmentManager, lifecycle)
mainViewPager.setPageTransformer(ZoomOutPageTransformer(uiSettings))
navbar.setOnTabSelectListener(object :
AnimatedBottomBar.OnTabSelectListener {
override fun onTabSelected(
lastIndex: Int,
lastTab: AnimatedBottomBar.Tab?,
newIndex: Int,
newTab: AnimatedBottomBar.Tab
) {
navbar.animate().translationZ(12f).setDuration(200).start()
selectedOption = newIndex
mainViewPager.setCurrentItem(newIndex, false)
}
})
navbar.selectTabAt(selectedOption)
mainViewPager.post { mainViewPager.setCurrentItem(selectedOption, false) }
} else {
binding.mainProgressBar.visibility = View.GONE
}
}
} }
//Load Data else {
if (!load) { val model: AnilistHomeViewModel by viewModels()
scope.launch(Dispatchers.IO) { model.genres.observe(this) { it ->
model.loadMain(this@MainActivity) if (it != null) {
val id = intent.extras?.getInt("mediaId", 0) if (it) {
val isMAL = intent.extras?.getBoolean("mal") ?: false val navbar = binding.includedNavbar.navbar
val cont = intent.extras?.getBoolean("continue") ?: false bottomBar = navbar
if (id != null && id != 0) { navbar.visibility = View.VISIBLE
val media = withContext(Dispatchers.IO) { binding.mainProgressBar.visibility = View.GONE
Anilist.query.getMedia(id, isMAL) val mainViewPager = binding.viewpager
} mainViewPager.isUserInputEnabled = false
if (media != null) { mainViewPager.adapter = ViewPagerAdapter(supportFragmentManager, lifecycle)
media.cameFromContinue = cont mainViewPager.setPageTransformer(ZoomOutPageTransformer(uiSettings))
startActivity( navbar.setOnTabSelectListener(object :
Intent(this@MainActivity, MediaDetailsActivity::class.java) AnimatedBottomBar.OnTabSelectListener {
.putExtra("media", media as Serializable) override fun onTabSelected(
) lastIndex: Int,
lastTab: AnimatedBottomBar.Tab?,
newIndex: Int,
newTab: AnimatedBottomBar.Tab
) {
navbar.animate().translationZ(12f).setDuration(200).start()
selectedOption = newIndex
mainViewPager.setCurrentItem(newIndex, false)
}
})
navbar.selectTabAt(selectedOption)
mainViewPager.post { mainViewPager.setCurrentItem(selectedOption, false) }
} else { } else {
snackString(this@MainActivity.getString(R.string.anilist_not_found)) binding.mainProgressBar.visibility = View.GONE
} }
} }
delay(500)
startSubscription()
} }
load = true //Load Data
} if (!load) {
scope.launch(Dispatchers.IO) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { model.loadMain(this@MainActivity)
if (loadData<Boolean>("allow_opening_links", this) != true) { val id = intent.extras?.getInt("mediaId", 0)
CustomBottomDialog.newInstance().apply { val isMAL = intent.extras?.getBoolean("mal") ?: false
title = "Allow Dantotsu to automatically open Anilist & MAL Links?" val cont = intent.extras?.getBoolean("continue") ?: false
val md = "Open settings & click +Add Links & select Anilist & Mal urls" if (id != null && id != 0) {
addView(TextView(this@MainActivity).apply { val media = withContext(Dispatchers.IO) {
val markWon = Anilist.query.getMedia(id, isMAL)
Markwon.builder(this@MainActivity) }
.usePlugin(SoftBreakAddsNewLinePlugin.create()).build() if (media != null) {
markWon.setMarkdown(this, md) media.cameFromContinue = cont
})
setNegativeButton(this@MainActivity.getString(R.string.no)) {
saveData("allow_opening_links", true, this@MainActivity)
dismiss()
}
setPositiveButton(this@MainActivity.getString(R.string.yes)) {
saveData("allow_opening_links", true, this@MainActivity)
tryWith(true) {
startActivity( startActivity(
Intent(Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS) Intent(this@MainActivity, MediaDetailsActivity::class.java)
.setData(Uri.parse("package:$packageName")) .putExtra("media", media as Serializable)
) )
} else {
snackString(this@MainActivity.getString(R.string.anilist_not_found))
} }
} }
}.show(supportFragmentManager, "dialog") delay(500)
startSubscription()
}
load = true
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
if (loadData<Boolean>("allow_opening_links", this) != true) {
CustomBottomDialog.newInstance().apply {
title = "Allow Dantotsu to automatically open Anilist & MAL Links?"
val md = "Open settings & click +Add Links & select Anilist & Mal urls"
addView(TextView(this@MainActivity).apply {
val markWon =
Markwon.builder(this@MainActivity)
.usePlugin(SoftBreakAddsNewLinePlugin.create()).build()
markWon.setMarkdown(this, md)
})
setNegativeButton(this@MainActivity.getString(R.string.no)) {
saveData("allow_opening_links", true, this@MainActivity)
dismiss()
}
setPositiveButton(this@MainActivity.getString(R.string.yes)) {
saveData("allow_opening_links", true, this@MainActivity)
tryWith(true) {
startActivity(
Intent(Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS)
.setData(Uri.parse("package:$packageName"))
)
}
}
}.show(supportFragmentManager, "dialog")
}
} }
} }
} }

View file

@ -31,11 +31,10 @@ class OfflineFragment : Fragment() {
offline = requireContext().getSharedPreferences("Dantotsu", Context.MODE_PRIVATE) offline = requireContext().getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)
?.getBoolean("offlineMode", false) ?: false ?.getBoolean("offlineMode", false) ?: false
binding.noInternet.text = binding.noInternet.text =
if (!isOnline(requireContext())) getString(R.string.no_internet) else "OFFLINE MODE" if (offline) "Offline Mode" else getString(R.string.no_internet)
binding.refreshButton.visibility = if (offline) View.GONE else View.VISIBLE
binding.refreshButton.setOnClickListener { binding.refreshButton.setOnClickListener {
println("Offline: $offline") if (isOnline(requireContext())) {
println("Online: ${isOnline(requireContext())}")
if (isOnline(requireContext()) && !offline) {
startMainActivity(requireActivity()) startMainActivity(requireActivity())
} }
} }