|
|
|
@ -35,6 +35,7 @@ import eu.kanade.tachiyomi.ui.base.controller.FullComposeController
|
|
|
|
|
import eu.kanade.tachiyomi.util.editCover
|
|
|
|
|
import eu.kanade.tachiyomi.util.lang.launchIO
|
|
|
|
|
import eu.kanade.tachiyomi.util.lang.launchUI
|
|
|
|
|
import eu.kanade.tachiyomi.util.lang.withUIContext
|
|
|
|
|
import eu.kanade.tachiyomi.util.system.logcat
|
|
|
|
|
import eu.kanade.tachiyomi.util.system.toShareIntent
|
|
|
|
|
import eu.kanade.tachiyomi.util.system.toast
|
|
|
|
@ -44,11 +45,12 @@ import kotlinx.coroutines.cancel
|
|
|
|
|
import kotlinx.coroutines.flow.MutableStateFlow
|
|
|
|
|
import kotlinx.coroutines.flow.asStateFlow
|
|
|
|
|
import logcat.LogPriority
|
|
|
|
|
import nucleus.presenter.Presenter
|
|
|
|
|
import uy.kohesive.injekt.Injekt
|
|
|
|
|
import uy.kohesive.injekt.api.get
|
|
|
|
|
import uy.kohesive.injekt.injectLazy
|
|
|
|
|
|
|
|
|
|
class MangaFullCoverDialog : FullComposeController<MangaFullCoverDialog.Presenter> {
|
|
|
|
|
class MangaFullCoverDialog : FullComposeController<MangaFullCoverDialog.MangaFullCoverPresenter> {
|
|
|
|
|
|
|
|
|
|
private val mangaId: Long
|
|
|
|
|
|
|
|
|
@ -61,7 +63,7 @@ class MangaFullCoverDialog : FullComposeController<MangaFullCoverDialog.Presente
|
|
|
|
|
this.mangaId = mangaId
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun createPresenter() = Presenter(mangaId)
|
|
|
|
|
override fun createPresenter() = MangaFullCoverPresenter(mangaId)
|
|
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
|
override fun ComposeContent() {
|
|
|
|
@ -157,10 +159,10 @@ class MangaFullCoverDialog : FullComposeController<MangaFullCoverDialog.Presente
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class Presenter(
|
|
|
|
|
inner class MangaFullCoverPresenter(
|
|
|
|
|
private val mangaId: Long,
|
|
|
|
|
private val getMangaById: GetMangaById = Injekt.get(),
|
|
|
|
|
) : nucleus.presenter.Presenter<MangaFullCoverDialog>() {
|
|
|
|
|
) : Presenter<MangaFullCoverDialog>() {
|
|
|
|
|
|
|
|
|
|
private var presenterScope: CoroutineScope = MainScope()
|
|
|
|
|
|
|
|
|
@ -218,6 +220,7 @@ class MangaFullCoverDialog : FullComposeController<MangaFullCoverDialog.Presente
|
|
|
|
|
fun editCover(context: Context, data: Uri) {
|
|
|
|
|
val manga = manga.value ?: return
|
|
|
|
|
presenterScope.launchIO {
|
|
|
|
|
@Suppress("BlockingMethodInNonBlockingContext")
|
|
|
|
|
context.contentResolver.openInputStream(data)?.use {
|
|
|
|
|
val result = try {
|
|
|
|
|
manga.editCover(context, it, updateManga, coverCache)
|
|
|
|
@ -225,7 +228,7 @@ class MangaFullCoverDialog : FullComposeController<MangaFullCoverDialog.Presente
|
|
|
|
|
view?.onSetCoverError(e)
|
|
|
|
|
false
|
|
|
|
|
}
|
|
|
|
|
launchUI { if (result) view?.onSetCoverSuccess() }
|
|
|
|
|
withUIContext { if (result) view?.onSetCoverSuccess() }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -236,12 +239,13 @@ class MangaFullCoverDialog : FullComposeController<MangaFullCoverDialog.Presente
|
|
|
|
|
try {
|
|
|
|
|
coverCache.deleteCustomCover(mangaId)
|
|
|
|
|
updateManga.awaitUpdateCoverLastModified(mangaId)
|
|
|
|
|
launchUI { view?.onSetCoverSuccess() }
|
|
|
|
|
withUIContext { view?.onSetCoverSuccess() }
|
|
|
|
|
} catch (e: Exception) {
|
|
|
|
|
launchUI { view?.onSetCoverError(e) }
|
|
|
|
|
withUIContext { view?.onSetCoverError(e) }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
companion object {
|
|
|
|
@ -253,3 +257,4 @@ class MangaFullCoverDialog : FullComposeController<MangaFullCoverDialog.Presente
|
|
|
|
|
private const val REQUEST_IMAGE_OPEN = 101
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|