diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt index a0a03e116..85b6c8798 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt @@ -246,8 +246,7 @@ class AppRouter private constructor( } fun openMangaOverrideConfig(manga: Manga) { - val intent = Intent(contextOrNull() ?: return, OverrideConfigActivity::class.java) - .putExtra(KEY_MANGA, ParcelableManga(manga, withDescription = false)) + val intent = overrideEditIntent(contextOrNull() ?: return, manga) startActivity(intent) } @@ -768,6 +767,10 @@ class AppRouter private constructor( .putExtra(KEY_SOURCE, source.name) } + fun overrideEditIntent(context: Context, manga: Manga): Intent = + Intent(context, OverrideConfigActivity::class.java) + .putExtra(KEY_MANGA, ParcelableManga(manga, withDescription = false)) + fun isShareSupported(manga: Manga): Boolean = when { manga.isBroken -> false manga.isLocal -> manga.url.toUri().toFileOrNull() != null diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsMenuProvider.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsMenuProvider.kt index b9745130c..8b0859489 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsMenuProvider.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsMenuProvider.kt @@ -1,9 +1,13 @@ package org.koitharu.kotatsu.details.ui +import android.app.Activity import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View +import androidx.activity.result.ActivityResult +import androidx.activity.result.ActivityResultCallback +import androidx.activity.result.contract.ActivityResultContracts import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.view.MenuProvider import androidx.fragment.app.FragmentActivity @@ -23,7 +27,12 @@ class DetailsMenuProvider( private val viewModel: DetailsViewModel, private val snackbarHost: View, private val appShortcutManager: AppShortcutManager, -) : MenuProvider { +) : MenuProvider, ActivityResultCallback { + + private val activityForResultLauncher = activity.registerForActivityResult( + ActivityResultContracts.StartActivityForResult(), + this, + ) private val router: AppRouter get() = activity.router @@ -98,8 +107,19 @@ class DetailsMenuProvider( } } + R.id.action_edit_override -> { + val intent = AppRouter.overrideEditIntent(activity, manga) + activityForResultLauncher.launch(intent) + } + else -> return false } return true } + + override fun onActivityResult(result: ActivityResult) { + if (result.resultCode == Activity.RESULT_OK) { + viewModel.reload() + } + } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/override/OverrideConfigActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/override/OverrideConfigActivity.kt index 3b8a97495..ecf5df944 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/override/OverrideConfigActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/override/OverrideConfigActivity.kt @@ -45,7 +45,7 @@ class OverrideConfigActivity : BaseActivity(), View viewBinding.buttonResetCover.setOnClickListener(this) viewBinding.layoutName.setEndIconOnClickListener(this) viewModel.data.filterNotNull().observe(this, ::onDataChanged) - viewModel.onSaved.observeEvent(this) { finishAfterTransition() } + viewModel.onSaved.observeEvent(this) { onDataSaved() } viewModel.isLoading.observe(this, ::onLoadingStateChanged) viewModel.onError.observeEvent(this, ::onError) } @@ -120,4 +120,9 @@ class OverrideConfigActivity : BaseActivity(), View viewBinding.textViewError.isVisible = false } } + + private fun onDataSaved() { + setResult(RESULT_OK) + finish() + } } diff --git a/app/src/main/res/menu/opt_details.xml b/app/src/main/res/menu/opt_details.xml index cd15b025c..2c83c1098 100644 --- a/app/src/main/res/menu/opt_details.xml +++ b/app/src/main/res/menu/opt_details.xml @@ -25,6 +25,12 @@ android:visible="false" app:showAsAction="never" /> + +