mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Move more models to domain module
This commit is contained in:
		@@ -1,14 +1,14 @@
 | 
			
		||||
package eu.kanade.domain.source.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.model.Pin
 | 
			
		||||
import eu.kanade.domain.source.model.Pins
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.domain.source.repository.SourceRepository
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.source.LocalSource
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import kotlinx.coroutines.flow.combine
 | 
			
		||||
import kotlinx.coroutines.flow.distinctUntilChanged
 | 
			
		||||
import tachiyomi.domain.source.model.Pin
 | 
			
		||||
import tachiyomi.domain.source.model.Pins
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
 | 
			
		||||
class GetEnabledSources(
 | 
			
		||||
    private val repository: SourceRepository,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,11 @@
 | 
			
		||||
package eu.kanade.domain.source.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.domain.source.repository.SourceRepository
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.LocaleHelper
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import kotlinx.coroutines.flow.combine
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
 | 
			
		||||
class GetLanguagesWithSources(
 | 
			
		||||
    private val repository: SourceRepository,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
package eu.kanade.domain.source.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.domain.source.repository.SourceRepository
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import kotlinx.coroutines.flow.combine
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
import java.text.Collator
 | 
			
		||||
import java.util.Collections
 | 
			
		||||
import java.util.Locale
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
package eu.kanade.domain.source.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.model.SourceWithCount
 | 
			
		||||
import eu.kanade.domain.source.repository.SourceRepository
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import tachiyomi.domain.source.model.SourceWithCount
 | 
			
		||||
 | 
			
		||||
class GetSourcesWithNonLibraryManga(
 | 
			
		||||
    private val repository: SourceRepository,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
package eu.kanade.domain.source.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.core.preference.getAndSet
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
 | 
			
		||||
class ToggleSource(
 | 
			
		||||
    private val preferences: SourcePreferences,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
package eu.kanade.domain.source.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.core.preference.getAndSet
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
 | 
			
		||||
class ToggleSourcePin(
 | 
			
		||||
    private val preferences: SourcePreferences,
 | 
			
		||||
 
 | 
			
		||||
@@ -4,77 +4,13 @@ import androidx.compose.ui.graphics.ImageBitmap
 | 
			
		||||
import androidx.compose.ui.graphics.asImageBitmap
 | 
			
		||||
import androidx.core.graphics.drawable.toBitmap
 | 
			
		||||
import eu.kanade.tachiyomi.extension.ExtensionManager
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
import uy.kohesive.injekt.Injekt
 | 
			
		||||
import uy.kohesive.injekt.api.get
 | 
			
		||||
 | 
			
		||||
data class Source(
 | 
			
		||||
    val id: Long,
 | 
			
		||||
    val lang: String,
 | 
			
		||||
    val name: String,
 | 
			
		||||
    val supportsLatest: Boolean,
 | 
			
		||||
    val isStub: Boolean,
 | 
			
		||||
    val pin: Pins = Pins.unpinned,
 | 
			
		||||
    val isUsedLast: Boolean = false,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    val visualName: String
 | 
			
		||||
        get() = when {
 | 
			
		||||
            lang.isEmpty() -> name
 | 
			
		||||
            else -> "$name (${lang.uppercase()})"
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    val icon: ImageBitmap?
 | 
			
		||||
        get() {
 | 
			
		||||
            return Injekt.get<ExtensionManager>().getAppIconForSource(id)
 | 
			
		||||
                ?.toBitmap()
 | 
			
		||||
                ?.asImageBitmap()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    val key: () -> String = {
 | 
			
		||||
        when {
 | 
			
		||||
            isUsedLast -> "$id-lastused"
 | 
			
		||||
            else -> "$id"
 | 
			
		||||
        }
 | 
			
		||||
val Source.icon: ImageBitmap?
 | 
			
		||||
    get() {
 | 
			
		||||
        return Injekt.get<ExtensionManager>().getAppIconForSource(id)
 | 
			
		||||
            ?.toBitmap()
 | 
			
		||||
            ?.asImageBitmap()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sealed class Pin(val code: Int) {
 | 
			
		||||
    object Unpinned : Pin(0b00)
 | 
			
		||||
    object Pinned : Pin(0b01)
 | 
			
		||||
    object Actual : Pin(0b10)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline fun Pins(builder: Pins.PinsBuilder.() -> Unit = {}): Pins {
 | 
			
		||||
    return Pins.PinsBuilder().apply(builder).flags()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fun Pins(vararg pins: Pin) = Pins {
 | 
			
		||||
    pins.forEach { +it }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
data class Pins(val code: Int = Pin.Unpinned.code) {
 | 
			
		||||
 | 
			
		||||
    operator fun contains(pin: Pin): Boolean = pin.code and code == pin.code
 | 
			
		||||
 | 
			
		||||
    operator fun plus(pin: Pin): Pins = Pins(code or pin.code)
 | 
			
		||||
 | 
			
		||||
    operator fun minus(pin: Pin): Pins = Pins(code xor pin.code)
 | 
			
		||||
 | 
			
		||||
    companion object {
 | 
			
		||||
        val unpinned = Pins(Pin.Unpinned)
 | 
			
		||||
 | 
			
		||||
        val pinned = Pins(Pin.Pinned, Pin.Actual)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    class PinsBuilder(var code: Int = 0) {
 | 
			
		||||
        operator fun Pin.unaryPlus() {
 | 
			
		||||
            this@PinsBuilder.code = code or this@PinsBuilder.code
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        operator fun Pin.unaryMinus() {
 | 
			
		||||
            this@PinsBuilder.code = code or this@PinsBuilder.code
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fun flags(): Pins = Pins(code)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +0,0 @@
 | 
			
		||||
package eu.kanade.domain.source.model
 | 
			
		||||
 | 
			
		||||
data class SourceWithCount(
 | 
			
		||||
    val source: Source,
 | 
			
		||||
    val count: Long,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    val id: Long
 | 
			
		||||
        get() = source.id
 | 
			
		||||
 | 
			
		||||
    val name: String
 | 
			
		||||
        get() = source.name
 | 
			
		||||
}
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
package eu.kanade.domain.source.repository
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.domain.source.model.SourcePagingSourceType
 | 
			
		||||
import eu.kanade.domain.source.model.SourceWithCount
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.FilterList
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
import tachiyomi.domain.source.model.SourceWithCount
 | 
			
		||||
 | 
			
		||||
interface SourceRepository {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user