From 3d1040b280cfbf8d8bdd654697af793e9391d8e1 Mon Sep 17 00:00:00 2001 From: aayush262 Date: Thu, 18 Apr 2024 01:55:15 +0530 Subject: [PATCH] [skip ci] feat: theme crash fix --- app/src/main/java/ani/dantotsu/Functions.kt | 19 ++++------ .../java/ani/dantotsu/settings/Settings.kt | 4 +-- .../settings/SettingsAboutActivity.kt | 21 +++++++---- .../ani/dantotsu/settings/SettingsActivity.kt | 18 +++++++--- .../ani/dantotsu/settings/SettingsAdapter.kt | 2 +- .../settings/SettingsAnimeActivity.kt | 2 +- .../settings/SettingsCommonActivity.kt | 8 ++--- .../settings/SettingsExtensionsActivity.kt | 22 ++++++------ .../settings/SettingsMangaActivity.kt | 2 +- .../settings/SettingsThemeActivity.kt | 36 ++++++++++++++----- .../settings/UserInterfaceSettingsActivity.kt | 18 +++++----- app/src/main/res/layout/item_repository.xml | 15 ++++++-- app/src/main/res/layout/item_settings.xml | 13 ++++--- .../main/res/layout/item_settings_switch.xml | 4 +-- app/src/main/res/values/strings.xml | 10 ++++-- 15 files changed, 121 insertions(+), 73 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/Functions.kt b/app/src/main/java/ani/dantotsu/Functions.kt index 1b4b6e4a..fc9112ba 100644 --- a/app/src/main/java/ani/dantotsu/Functions.kt +++ b/app/src/main/java/ani/dantotsu/Functions.kt @@ -306,23 +306,18 @@ fun Activity.reloadActivity() { initActivity(this) } -fun Context.restartApp(view: View) { +fun Activity.restartApp() { val mainIntent = Intent.makeRestartActivityTask( packageManager.getLaunchIntentForPackage(this.packageName)!!.component ) val component = ComponentName(this@restartApp.packageName, this@restartApp::class.qualifiedName!!) - Snackbar.make(view, R.string.restart_app, Snackbar.LENGTH_INDEFINITE).apply { - setAction(R.string.do_it) { - this.dismiss() - try { - startActivity(Intent().setComponent(component)) - } catch (anything: Exception) { - startActivity(mainIntent) - } - Runtime.getRuntime().exit(0) - } - show() + try { + startActivity(Intent().setComponent(component)) + } catch (e: Exception) { + startActivity(mainIntent) } + finishAndRemoveTask() + PrefManager.setCustomVal("reload", true) } open class BottomSheetDialogFragment : BottomSheetDialogFragment() { diff --git a/app/src/main/java/ani/dantotsu/settings/Settings.kt b/app/src/main/java/ani/dantotsu/settings/Settings.kt index a4d50ee3..8f319aac 100644 --- a/app/src/main/java/ani/dantotsu/settings/Settings.kt +++ b/app/src/main/java/ani/dantotsu/settings/Settings.kt @@ -11,9 +11,9 @@ data class Settings( val icon : Int, val onClick: ((ItemSettingsBinding) -> Unit)? = null, val onLongClick: (() -> Unit)? = null, - var isChecked : Boolean = false, val switch: ((isChecked:Boolean , view: ItemSettingsSwitchBinding ) -> Unit)? = null, + val attach:((ItemSettingsBinding) -> Unit)? = null, val isVisible: Boolean = true, val isActivity: Boolean = false, - val attach:((ViewGroup) -> Unit)? = null + var isChecked : Boolean = false, ) \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsAboutActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsAboutActivity.kt index 2a3617fa..1c82c194 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsAboutActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsAboutActivity.kt @@ -18,6 +18,7 @@ import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.statusBarHeight import ani.dantotsu.themes.ThemeManager +import ani.dantotsu.util.Logger class SettingsAboutActivity : AppCompatActivity() { private lateinit var binding: ActivitySettingsAboutBinding @@ -42,7 +43,7 @@ class SettingsAboutActivity : AppCompatActivity() { Settings( type = 1, name = getString(R.string.faq), - desc = getString(R.string.faq), + desc = getString(R.string.faq_desc), icon = R.drawable.ic_round_help_24, onClick = { startActivity(Intent(context, FAQActivity::class.java)) @@ -52,7 +53,7 @@ class SettingsAboutActivity : AppCompatActivity() { Settings( type = 2, name = getString(R.string.check_app_updates), - desc = getString(R.string.check_app_updates), + desc = getString(R.string.check_app_updates_desc), icon = R.drawable.ic_round_new_releases_24, isChecked = PrefManager.getVal(PrefName.CheckUpdate), switch = { isChecked, _ -> @@ -63,7 +64,7 @@ class SettingsAboutActivity : AppCompatActivity() { Settings( type = 2, name = getString(R.string.share_username_in_crash_reports), - desc = getString(R.string.share_username_in_crash_reports), + desc = getString(R.string.share_username_in_crash_reports_desc), icon = R.drawable.ic_round_search_24, isChecked = PrefManager.getVal(PrefName.SharedUserID), switch = { isChecked, _ -> @@ -79,13 +80,19 @@ class SettingsAboutActivity : AppCompatActivity() { isChecked = PrefManager.getVal(PrefName.LogToFile), switch = { isChecked, _ -> PrefManager.setVal(PrefName.LogToFile, isChecked) - restartApp(binding.root) + restartApp() }, + attach = { + it.settingsDesc.setOnLongClickListener { + Logger.shareLog(context) + true + } + } ), Settings( type = 1, name = getString(R.string.devs), - desc= getString(R.string.devs), + desc= getString(R.string.devs_desc), icon = R.drawable.ic_round_accessible_forward_24, onClick = { DevelopersDialogFragment().show(supportFragmentManager, "dialog") @@ -94,7 +101,7 @@ class SettingsAboutActivity : AppCompatActivity() { Settings( type = 1, name = getString(R.string.forks), - desc = getString(R.string.forks), + desc = getString(R.string.forks_desc), icon = R.drawable.ic_round_restaurant_24, onClick = { ForksDialogFragment().show(supportFragmentManager, "dialog") @@ -103,7 +110,7 @@ class SettingsAboutActivity : AppCompatActivity() { Settings( type = 1, name = getString(R.string.disclaimer), - desc = getString(R.string.disclaimer), + desc = getString(R.string.disclaimer_desc), icon = R.drawable.ic_round_info_24, onClick = { val text = TextView(context) diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt index 7185b04e..a2420ea1 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt @@ -11,6 +11,7 @@ import android.os.Build.VERSION.SDK_INT import android.os.Bundle import android.view.ViewGroup import android.widget.TextView +import androidx.activity.addCallback import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AppCompatActivity import androidx.core.view.updateLayoutParams @@ -28,6 +29,7 @@ import ani.dantotsu.others.AppUpdater import ani.dantotsu.others.CustomBottomDialog import ani.dantotsu.pop import ani.dantotsu.setSafeOnClickListener +import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.snackString import ani.dantotsu.startMainActivity import ani.dantotsu.statusBarHeight @@ -40,9 +42,6 @@ import kotlin.random.Random class SettingsActivity : AppCompatActivity() { - private val restartMainActivity = object : OnBackPressedCallback(false) { - override fun handleOnBackPressed() = startMainActivity(this@SettingsActivity) - } lateinit var binding: ActivitySettingsBinding private var cursedCounter = 0 @@ -70,7 +69,14 @@ class SettingsActivity : AppCompatActivity() { bottomMargin = navBarHeight } - onBackPressedDispatcher.addCallback(context, restartMainActivity) + onBackPressedDispatcher.addCallback(context){ + if (PrefManager.getCustomVal("reload", false)) { + startMainActivity(context) + PrefManager.setCustomVal("reload", false) + }else{ + finish() + } + } settingsBack.setOnClickListener { onBackPressedDispatcher.onBackPressed() @@ -262,4 +268,8 @@ class SettingsActivity : AppCompatActivity() { ?: "Unknown Architecture" } } + override fun onResume() { + ThemeManager(this).applyTheme() + super.onResume() + } } diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsAdapter.kt b/app/src/main/java/ani/dantotsu/settings/SettingsAdapter.kt index 3d37c055..37b934b9 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsAdapter.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsAdapter.kt @@ -64,7 +64,7 @@ class SettingsAdapter(private val settings: ArrayList) : b.settingsIconRight.visibility = if (settings.isActivity) View.VISIBLE else View.GONE b.attachView.visibility = if (settings.attach != null) View.VISIBLE else View.GONE - settings.attach?.invoke(b.attachView) + settings.attach?.invoke(b) } 2 -> { diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsAnimeActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsAnimeActivity.kt index 7e853ed5..e75758b0 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsAnimeActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsAnimeActivity.kt @@ -100,7 +100,7 @@ class SettingsAnimeActivity: AppCompatActivity(){ isChecked = PrefManager.getVal(PrefName.IncludeAnimeList), switch = { isChecked, _ -> PrefManager.setVal(PrefName.IncludeAnimeList, isChecked) - restartApp(binding.root) + restartApp() } ), ) diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsCommonActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsCommonActivity.kt index 5e1fc7ae..0bbdd406 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsCommonActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsCommonActivity.kt @@ -73,14 +73,14 @@ class SettingsCommonActivity: AppCompatActivity(){ toast(getString(R.string.incorrect_password)) return@passwordAlertDialog } - if (PreferencePackager.unpack(decryptedJson)) restartApp(binding.root) + if (PreferencePackager.unpack(decryptedJson)) restartApp() } else { toast(getString(R.string.password_cannot_be_empty)) } } } else if (name.endsWith(".ani")) { val decryptedJson = jsonString.toString(Charsets.UTF_8) - if (PreferencePackager.unpack(decryptedJson)) restartApp(binding.root) + if (PreferencePackager.unpack(decryptedJson)) restartApp() } else { toast(getString(R.string.unknown_file_type)) } @@ -127,7 +127,7 @@ class SettingsCommonActivity: AppCompatActivity(){ settingsExtensionDns.setOnItemClickListener { _, _, i, _ -> PrefManager.setVal(PrefName.DohProvider, i) settingsExtensionDns.clearFocus() - restartApp(binding.root) + restartApp() } settingsRecyclerView.adapter = SettingsAdapter( @@ -294,7 +294,7 @@ class SettingsCommonActivity: AppCompatActivity(){ isChecked = PrefManager.getVal(PrefName.AdultOnly), switch = {isChecked, _ -> PrefManager.setVal(PrefName.AdultOnly, isChecked) - restartApp(binding.root) + restartApp() }, isVisible = Anilist.adult diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsExtensionsActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsExtensionsActivity.kt index 45a09ad4..3b4d3a06 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsExtensionsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsExtensionsActivity.kt @@ -161,13 +161,12 @@ class SettingsExtensionsActivity: AppCompatActivity() { desc = getString(R.string.anime_add_repository), icon = R.drawable.ic_github, onClick = { - val dialogView = layoutInflater.inflate(R.layout.dialog_user_agent, null) - val editText = - dialogView.findViewById(R.id.userAgentTextBox).apply { + val dialogView = DialogUserAgentBinding.inflate(layoutInflater) + val editText = dialogView.userAgentTextBox.apply { hint = getString(R.string.anime_add_repository) } val alertDialog = AlertDialog.Builder(context, R.style.MyPopup) - .setTitle(R.string.anime_add_repository).setView(dialogView) + .setTitle(R.string.anime_add_repository).setView(dialogView.root) .setPositiveButton(getString(R.string.ok)) { dialog, _ -> if (!editText.text.isNullOrBlank()) processUserInput( editText.text.toString(), @@ -183,8 +182,8 @@ class SettingsExtensionsActivity: AppCompatActivity() { alertDialog.show() alertDialog.window?.setDimAmount(0.8f) }, - attach = { view -> - setExtensionOutput(view, MediaType.ANIME) + attach = { + setExtensionOutput(it.attachView, MediaType.ANIME) } ), Settings( @@ -193,13 +192,12 @@ class SettingsExtensionsActivity: AppCompatActivity() { desc = getString(R.string.manga_add_repository), icon = R.drawable.ic_github, onClick = { - val dialogView = layoutInflater.inflate(R.layout.dialog_user_agent, null) - val editText = - dialogView.findViewById(R.id.userAgentTextBox).apply { + val dialogView = DialogUserAgentBinding.inflate(layoutInflater) + val editText = dialogView.userAgentTextBox.apply { hint = getString(R.string.manga_add_repository) } val alertDialog = AlertDialog.Builder(context, R.style.MyPopup) - .setTitle(R.string.manga_add_repository).setView(dialogView) + .setTitle(R.string.manga_add_repository).setView(dialogView.root) .setPositiveButton(getString(R.string.ok)) { dialog, _ -> if (!editText.text.isNullOrBlank()) processUserInput( editText.text.toString(), @@ -215,8 +213,8 @@ class SettingsExtensionsActivity: AppCompatActivity() { alertDialog.show() alertDialog.window?.setDimAmount(0.8f) }, - attach = { view -> - setExtensionOutput(view, MediaType.MANGA) + attach = { + setExtensionOutput(it.attachView, MediaType.MANGA) } ), Settings( diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsMangaActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsMangaActivity.kt index afa56eb8..5b5a7750 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsMangaActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsMangaActivity.kt @@ -123,7 +123,7 @@ class SettingsMangaActivity: AppCompatActivity(){ isChecked = PrefManager.getVal(PrefName.IncludeMangaList), switch = {isChecked, _ -> PrefManager.setVal(PrefName.IncludeMangaList, isChecked) - restartApp(binding.root) + restartApp() } ), ) diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsThemeActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsThemeActivity.kt index e1fec176..acad1ecd 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsThemeActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsThemeActivity.kt @@ -1,10 +1,13 @@ package ani.dantotsu.settings +import android.content.ComponentName +import android.content.Intent import android.os.Build import android.os.Bundle import android.view.View import android.view.ViewGroup import android.widget.ArrayAdapter +import androidx.activity.addCallback import androidx.appcompat.app.AppCompatActivity import androidx.core.view.updateLayoutParams import androidx.recyclerview.widget.LinearLayoutManager @@ -37,8 +40,21 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi topMargin = statusBarHeight bottomMargin = navBarHeight } - themeSettingsBack.setOnClickListener { onBackPressedDispatcher.onBackPressed() } - + onBackPressedDispatcher.addCallback(context) { + val mainIntent = Intent.makeRestartActivityTask( + packageManager.getLaunchIntentForPackage(packageName)!!.component + ) + val component = ComponentName(packageName, SettingsActivity::class.qualifiedName!!) + try { + startActivity(Intent().setComponent(component)) + } catch (anything: Exception) { + startActivity(mainIntent) + } + finishAndRemoveTask() + } + themeSettingsBack.setOnClickListener { + onBackPressedDispatcher.onBackPressed() + } var previous: View = when (PrefManager.getVal(PrefName.DarkMode)) { 0 -> settingsUiAuto 1 -> settingsUiLight @@ -87,7 +103,7 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi ThemeManager.Companion.Theme.entries[i].theme ) clearFocus() - restartApp(binding.root) + reload() } } @@ -101,7 +117,7 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi isChecked = PrefManager.getVal(PrefName.UseOLED), switch = { isChecked, _ -> PrefManager.setVal(PrefName.UseOLED, isChecked) - restartApp(binding.root) + reload() } ), Settings( @@ -113,7 +129,7 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi switch = { isChecked, _ -> PrefManager.setVal(PrefName.UseMaterialYou, isChecked) if (isChecked) PrefManager.setVal(PrefName.UseCustomTheme, false) - restartApp(binding.root) + reload() }, isVisible = Build.VERSION.SDK_INT > Build.VERSION_CODES.R ), @@ -125,7 +141,6 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi isChecked = PrefManager.getVal(PrefName.UseSourceTheme), switch = { isChecked, _ -> PrefManager.setVal(PrefName.UseSourceTheme, isChecked) - restartApp(binding.root) }, isVisible = Build.VERSION.SDK_INT > Build.VERSION_CODES.R ), @@ -138,7 +153,7 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi switch = { isChecked, _ -> PrefManager.setVal(PrefName.UseCustomTheme, isChecked) if (isChecked) PrefManager.setVal(PrefName.UseMaterialYou, false) - restartApp(binding.root) + reload() }, isVisible = Build.VERSION.SDK_INT > Build.VERSION_CODES.R ), @@ -151,7 +166,7 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi val originalColor: Int = PrefManager.getVal(PrefName.CustomThemeInt) class CustomColorDialog : SimpleColorDialog() { override fun onPositiveButtonClick() { - restartApp(binding.root) + reload() super.onPositiveButtonClick() } } @@ -183,4 +198,9 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi } return true } + fun reload(){ + PrefManager.setCustomVal("reload", true) + restartApp() + } + } \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt index b803fb1b..dfc3cff0 100644 --- a/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt @@ -48,7 +48,7 @@ class UserInterfaceSettingsActivity : AppCompatActivity() { } setPositiveButton("Done") { _, _ -> PrefManager.setVal(PrefName.HomeLayoutShow, set) - restartApp(binding.root) + restartApp() } }.show() dialog.window?.setDimAmount(0.8f) @@ -57,24 +57,24 @@ class UserInterfaceSettingsActivity : AppCompatActivity() { binding.uiSettingsSmallView.isChecked = PrefManager.getVal(PrefName.SmallView) binding.uiSettingsSmallView.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.SmallView, isChecked) - restartApp(binding.root) + restartApp() } binding.uiSettingsImmersive.isChecked = PrefManager.getVal(PrefName.ImmersiveMode) binding.uiSettingsImmersive.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.ImmersiveMode, isChecked) - restartApp(binding.root) + restartApp() } binding.uiSettingsBannerAnimation.isChecked = PrefManager.getVal(PrefName.BannerAnimations) binding.uiSettingsBannerAnimation.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.BannerAnimations, isChecked) - restartApp(binding.root) + restartApp() } binding.uiSettingsLayoutAnimation.isChecked = PrefManager.getVal(PrefName.LayoutAnimations) binding.uiSettingsLayoutAnimation.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.LayoutAnimations, isChecked) - restartApp(binding.root) + restartApp() } binding.uiSettingsTrendingScroller.isChecked = PrefManager.getVal(PrefName.TrendingScroller) @@ -98,22 +98,22 @@ class UserInterfaceSettingsActivity : AppCompatActivity() { mapReverse[PrefManager.getVal(PrefName.AnimationSpeed)] ?: 1f binding.uiSettingsAnimationSpeed.addOnChangeListener { _, value, _ -> PrefManager.setVal(PrefName.AnimationSpeed, map[value] ?: 1f) - restartApp(binding.root) + restartApp() } binding.uiSettingsBlurBanners.isChecked = PrefManager.getVal(PrefName.BlurBanners) binding.uiSettingsBlurBanners.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.BlurBanners, isChecked) - restartApp(binding.root) + restartApp() } binding.uiSettingsBlurRadius.value = (PrefManager.getVal(PrefName.BlurRadius) as Float) binding.uiSettingsBlurRadius.addOnChangeListener { _, value, _ -> PrefManager.setVal(PrefName.BlurRadius, value) - restartApp(binding.root) + restartApp() } binding.uiSettingsBlurSampling.value = (PrefManager.getVal(PrefName.BlurSampling) as Float) binding.uiSettingsBlurSampling.addOnChangeListener { _, value, _ -> PrefManager.setVal(PrefName.BlurSampling, value) - restartApp(binding.root) + restartApp() } } } diff --git a/app/src/main/res/layout/item_repository.xml b/app/src/main/res/layout/item_repository.xml index a49310b6..da3e20fc 100644 --- a/app/src/main/res/layout/item_repository.xml +++ b/app/src/main/res/layout/item_repository.xml @@ -3,8 +3,17 @@ android:layout_width="match_parent" android:layout_height="wrap_content" xmlns:tools="http://schemas.android.com/tools" - android:layout_marginBottom="16dp" - android:orientation="vertical"> + android:layout_marginBottom="8dp" + android:orientation="horizontal"> + diff --git a/app/src/main/res/layout/item_settings.xml b/app/src/main/res/layout/item_settings.xml index 75427311..ae549147 100644 --- a/app/src/main/res/layout/item_settings.xml +++ b/app/src/main/res/layout/item_settings.xml @@ -6,13 +6,13 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:gravity="center_vertical|start" android:orientation="horizontal"> + + + tools:ignore="ContentDescription" + tools:visibility="visible" /> diff --git a/app/src/main/res/layout/item_settings_switch.xml b/app/src/main/res/layout/item_settings_switch.xml index 9ec085b9..b5b4fd75 100644 --- a/app/src/main/res/layout/item_settings_switch.xml +++ b/app/src/main/res/layout/item_settings_switch.xml @@ -6,13 +6,13 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:gravity="center_vertical|start" android:orientation="horizontal"> Search next available source Useful if you are getting Handshake Fails Use Proxy for Timestamps - Always check for App Updates + Check for Updates Author Versions FAQ @@ -716,7 +716,7 @@ Delete all Manga Downloads Delete all Novel Downloads Requires Android 12+ - Share username in crash reports + Share username Pinned Sources Backup and Restore Import Settings @@ -903,4 +903,10 @@ Non quae tempore quo provident laudantium qui illo dolor vel quia dolor et exerc Choose how you watch Choose how you read Learn more about Dantotsu + General questions about Dantotsu + Check Github for app updates + Share username in crash reports + Dantotsu\'s very own unpaid labours + More like Dantotsu + Something to keep in mind