mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-15 05:27:28 +01:00
Migrate History screen to Compose (#6922)
* Migrate History screen to Compose - Migrate screen - Strip logic from presenter into use cases and repository - Setup for other screen being able to migrate to Compose with Theme * Changes from review comments
This commit is contained in:
26
app/src/main/java/eu/kanade/domain/DomainModule.kt
Normal file
26
app/src/main/java/eu/kanade/domain/DomainModule.kt
Normal file
@@ -0,0 +1,26 @@
|
||||
package eu.kanade.domain
|
||||
|
||||
import eu.kanade.data.history.repository.HistoryRepositoryImpl
|
||||
import eu.kanade.domain.history.interactor.DeleteHistoryTable
|
||||
import eu.kanade.domain.history.interactor.GetHistory
|
||||
import eu.kanade.domain.history.interactor.GetNextChapterForManga
|
||||
import eu.kanade.domain.history.interactor.RemoveHistoryById
|
||||
import eu.kanade.domain.history.interactor.RemoveHistoryByMangaId
|
||||
import eu.kanade.domain.history.repository.HistoryRepository
|
||||
import uy.kohesive.injekt.api.InjektModule
|
||||
import uy.kohesive.injekt.api.InjektRegistrar
|
||||
import uy.kohesive.injekt.api.addFactory
|
||||
import uy.kohesive.injekt.api.addSingletonFactory
|
||||
import uy.kohesive.injekt.api.get
|
||||
|
||||
class DomainModule : InjektModule {
|
||||
|
||||
override fun InjektRegistrar.registerInjectables() {
|
||||
addSingletonFactory<HistoryRepository> { HistoryRepositoryImpl(get()) }
|
||||
addFactory { DeleteHistoryTable(get()) }
|
||||
addFactory { GetHistory(get()) }
|
||||
addFactory { GetNextChapterForManga(get()) }
|
||||
addFactory { RemoveHistoryById(get()) }
|
||||
addFactory { RemoveHistoryByMangaId(get()) }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package eu.kanade.domain.history.interactor
|
||||
|
||||
import eu.kanade.domain.history.repository.HistoryRepository
|
||||
|
||||
class DeleteHistoryTable(
|
||||
private val repository: HistoryRepository
|
||||
) {
|
||||
|
||||
suspend fun await(): Boolean {
|
||||
return repository.deleteAllHistory()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package eu.kanade.domain.history.interactor
|
||||
|
||||
import androidx.paging.Pager
|
||||
import androidx.paging.PagingConfig
|
||||
import androidx.paging.PagingData
|
||||
import eu.kanade.data.history.local.HistoryPagingSource
|
||||
import eu.kanade.domain.history.repository.HistoryRepository
|
||||
import eu.kanade.tachiyomi.data.database.models.MangaChapterHistory
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
class GetHistory(
|
||||
private val repository: HistoryRepository
|
||||
) {
|
||||
|
||||
fun subscribe(query: String): Flow<PagingData<MangaChapterHistory>> {
|
||||
return Pager(
|
||||
PagingConfig(pageSize = HistoryPagingSource.PAGE_SIZE)
|
||||
) {
|
||||
repository.getHistory(query)
|
||||
}.flow
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package eu.kanade.domain.history.interactor
|
||||
|
||||
import eu.kanade.domain.history.repository.HistoryRepository
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
|
||||
class GetNextChapterForManga(
|
||||
private val repository: HistoryRepository
|
||||
) {
|
||||
|
||||
suspend fun await(manga: Manga, chapter: Chapter): Chapter? {
|
||||
return repository.getNextChapterForManga(manga, chapter)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package eu.kanade.domain.history.interactor
|
||||
|
||||
import eu.kanade.domain.history.repository.HistoryRepository
|
||||
import eu.kanade.tachiyomi.data.database.models.History
|
||||
import eu.kanade.tachiyomi.data.database.models.HistoryImpl
|
||||
|
||||
class RemoveHistoryById(
|
||||
private val repository: HistoryRepository
|
||||
) {
|
||||
|
||||
suspend fun await(history: History): Boolean {
|
||||
// Workaround for list not freaking out when changing reference varaible
|
||||
val history = HistoryImpl().apply {
|
||||
id = history.id
|
||||
chapter_id = history.chapter_id
|
||||
last_read = history.last_read
|
||||
time_read = history.time_read
|
||||
}
|
||||
return repository.resetHistory(history)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package eu.kanade.domain.history.interactor
|
||||
|
||||
import eu.kanade.domain.history.repository.HistoryRepository
|
||||
|
||||
class RemoveHistoryByMangaId(
|
||||
private val repository: HistoryRepository
|
||||
) {
|
||||
|
||||
suspend fun await(mangaId: Long): Boolean {
|
||||
return repository.resetHistoryByMangaId(mangaId)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package eu.kanade.domain.history.repository
|
||||
|
||||
import eu.kanade.data.history.local.HistoryPagingSource
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.History
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.data.database.models.MangaChapterHistory
|
||||
|
||||
interface HistoryRepository {
|
||||
|
||||
fun getHistory(query: String): HistoryPagingSource
|
||||
|
||||
suspend fun getHistory(limit: Int, page: Int, query: String): List<MangaChapterHistory>
|
||||
|
||||
suspend fun getNextChapterForManga(manga: Manga, chapter: Chapter): Chapter?
|
||||
|
||||
suspend fun resetHistory(history: History): Boolean
|
||||
|
||||
suspend fun resetHistoryByMangaId(mangaId: Long): Boolean
|
||||
|
||||
suspend fun deleteAllHistory(): Boolean
|
||||
}
|
||||
Reference in New Issue
Block a user