Action to open online version of saved manga
This commit is contained in:
@@ -86,4 +86,6 @@ class DetailsInteractor @Inject constructor(
|
||||
subject
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun findLocal(seed: Manga) = localMangaRepository.getRemoteManga(seed)
|
||||
}
|
||||
|
||||
@@ -137,7 +137,9 @@ class DetailsActivity :
|
||||
this,
|
||||
MenuInvalidator(viewBinding.toolbarChapters ?: this),
|
||||
)
|
||||
viewModel.favouriteCategories.observe(this, MenuInvalidator(this))
|
||||
val menuInvalidator = MenuInvalidator(this)
|
||||
viewModel.favouriteCategories.observe(this, menuInvalidator)
|
||||
viewModel.remoteManga.observe(this, menuInvalidator)
|
||||
viewModel.branches.observe(this) {
|
||||
viewBinding.buttonDropdown.isVisible = it.size > 1
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ class DetailsMenuProvider(
|
||||
menu.findItem(R.id.action_browser).isVisible = manga?.source != MangaSource.LOCAL
|
||||
menu.findItem(R.id.action_shortcut).isVisible = ShortcutManagerCompat.isRequestPinShortcutSupported(activity)
|
||||
menu.findItem(R.id.action_scrobbling).isVisible = viewModel.isScrobblingAvailable
|
||||
menu.findItem(R.id.action_online).isVisible = viewModel.remoteManga.value != null
|
||||
menu.findItem(R.id.action_favourite).setIcon(
|
||||
if (viewModel.favouriteCategories.value) R.drawable.ic_heart else R.drawable.ic_heart_outline,
|
||||
)
|
||||
@@ -88,6 +89,12 @@ class DetailsMenuProvider(
|
||||
}
|
||||
}
|
||||
|
||||
R.id.action_online -> {
|
||||
viewModel.remoteManga.value?.let {
|
||||
activity.startActivity(DetailsActivity.newIntent(activity, it))
|
||||
}
|
||||
}
|
||||
|
||||
R.id.action_related -> {
|
||||
viewModel.manga.value?.let {
|
||||
activity.startActivity(MultiSearchActivity.newIntent(activity, it.title))
|
||||
|
||||
@@ -94,6 +94,8 @@ class DetailsViewModel @Inject constructor(
|
||||
val favouriteCategories = interactor.observeIsFavourite(mangaId)
|
||||
.stateIn(viewModelScope + Dispatchers.Default, SharingStarted.Eagerly, false)
|
||||
|
||||
val remoteManga = MutableStateFlow<Manga?>(null)
|
||||
|
||||
val newChaptersCount = details.flatMapLatest { d ->
|
||||
if (d?.isLocal == false) {
|
||||
interactor.observeNewChapters(mangaId)
|
||||
@@ -213,6 +215,10 @@ class DetailsViewModel @Inject constructor(
|
||||
progressUpdateUseCase(manga.toManga())
|
||||
}
|
||||
}
|
||||
launchJob(Dispatchers.Default) {
|
||||
val manga = details.firstOrNull { it != null && it.isLocal } ?: return@launchJob
|
||||
remoteManga.value = interactor.findLocal(manga.toManga())
|
||||
}
|
||||
}
|
||||
|
||||
fun reload() {
|
||||
|
||||
Reference in New Issue
Block a user