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,8 +1,8 @@
 | 
			
		||||
package eu.kanade.data.source
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.tachiyomi.source.CatalogueSource
 | 
			
		||||
import eu.kanade.tachiyomi.source.SourceManager
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
import tachiyomi.domain.source.model.SourceData
 | 
			
		||||
 | 
			
		||||
val sourceMapper: (eu.kanade.tachiyomi.source.Source) -> Source = { source ->
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,6 @@
 | 
			
		||||
package eu.kanade.data.source
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.domain.source.model.SourcePagingSourceType
 | 
			
		||||
import eu.kanade.domain.source.model.SourceWithCount
 | 
			
		||||
import eu.kanade.domain.source.repository.SourceRepository
 | 
			
		||||
import eu.kanade.tachiyomi.source.CatalogueSource
 | 
			
		||||
import eu.kanade.tachiyomi.source.LocalSource
 | 
			
		||||
@@ -11,6 +9,8 @@ import eu.kanade.tachiyomi.source.model.FilterList
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import kotlinx.coroutines.flow.map
 | 
			
		||||
import tachiyomi.data.DatabaseHandler
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
import tachiyomi.domain.source.model.SourceWithCount
 | 
			
		||||
 | 
			
		||||
class SourceRepositoryImpl(
 | 
			
		||||
    private val sourceManager: SourceManager,
 | 
			
		||||
 
 | 
			
		||||
@@ -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,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 {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,6 @@ import androidx.compose.ui.platform.LocalContext
 | 
			
		||||
import androidx.compose.ui.res.stringResource
 | 
			
		||||
import androidx.compose.ui.text.style.TextOverflow
 | 
			
		||||
import eu.kanade.domain.source.interactor.SetMigrateSorting
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.presentation.browse.components.BaseSourceItem
 | 
			
		||||
import eu.kanade.presentation.browse.components.SourceIcon
 | 
			
		||||
import eu.kanade.presentation.components.Badge
 | 
			
		||||
@@ -40,6 +39,7 @@ import eu.kanade.presentation.util.topSmallPaddingValues
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.ui.browse.migration.sources.MigrateSourceState
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.copyToClipboard
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun MigrateSourceScreen(
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,6 @@ import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.ui.Modifier
 | 
			
		||||
import androidx.compose.ui.platform.LocalContext
 | 
			
		||||
import androidx.compose.ui.res.stringResource
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.presentation.browse.components.BaseSourceItem
 | 
			
		||||
import eu.kanade.presentation.components.AppBar
 | 
			
		||||
import eu.kanade.presentation.components.EmptyScreen
 | 
			
		||||
@@ -18,6 +17,7 @@ import eu.kanade.presentation.more.settings.widget.SwitchPreferenceWidget
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.ui.browse.source.SourcesFilterState
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.LocaleHelper
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun SourcesFilterScreen(
 | 
			
		||||
 
 | 
			
		||||
@@ -21,8 +21,6 @@ import androidx.compose.ui.Modifier
 | 
			
		||||
import androidx.compose.ui.platform.LocalContext
 | 
			
		||||
import androidx.compose.ui.res.stringResource
 | 
			
		||||
import androidx.compose.ui.unit.dp
 | 
			
		||||
import eu.kanade.domain.source.model.Pin
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.presentation.browse.components.BaseSourceItem
 | 
			
		||||
import eu.kanade.presentation.components.EmptyScreen
 | 
			
		||||
import eu.kanade.presentation.components.LoadingScreen
 | 
			
		||||
@@ -36,6 +34,8 @@ import eu.kanade.tachiyomi.source.LocalSource
 | 
			
		||||
import eu.kanade.tachiyomi.ui.browse.source.SourcesState
 | 
			
		||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreenModel.Listing
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.LocaleHelper
 | 
			
		||||
import tachiyomi.domain.source.model.Pin
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun SourcesScreen(
 | 
			
		||||
 
 | 
			
		||||
@@ -9,10 +9,10 @@ import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.ui.Modifier
 | 
			
		||||
import androidx.compose.ui.platform.LocalContext
 | 
			
		||||
import androidx.compose.ui.text.style.TextOverflow
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.presentation.util.padding
 | 
			
		||||
import eu.kanade.presentation.util.secondaryItemAlpha
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.LocaleHelper
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun BaseSourceItem(
 | 
			
		||||
 
 | 
			
		||||
@@ -27,12 +27,13 @@ import androidx.compose.ui.res.painterResource
 | 
			
		||||
import androidx.compose.ui.unit.dp
 | 
			
		||||
import androidx.core.graphics.drawable.toBitmap
 | 
			
		||||
import coil.compose.AsyncImage
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.domain.source.model.icon
 | 
			
		||||
import eu.kanade.presentation.util.rememberResourceBitmapPainter
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.extension.model.Extension
 | 
			
		||||
import eu.kanade.tachiyomi.source.LocalSource
 | 
			
		||||
import eu.kanade.tachiyomi.util.lang.withIOContext
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
 | 
			
		||||
private val defaultModifier = Modifier
 | 
			
		||||
    .height(40.dp)
 | 
			
		||||
 
 | 
			
		||||
@@ -35,8 +35,6 @@ import cafe.adriel.voyager.core.screen.uniqueScreenKey
 | 
			
		||||
import cafe.adriel.voyager.navigator.LocalNavigator
 | 
			
		||||
import cafe.adriel.voyager.navigator.currentOrThrow
 | 
			
		||||
import eu.kanade.domain.source.interactor.GetSourcesWithNonLibraryManga
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.domain.source.model.SourceWithCount
 | 
			
		||||
import eu.kanade.presentation.browse.components.SourceIcon
 | 
			
		||||
import eu.kanade.presentation.components.AppBar
 | 
			
		||||
import eu.kanade.presentation.components.AppBarActions
 | 
			
		||||
@@ -54,6 +52,8 @@ import eu.kanade.tachiyomi.util.system.toast
 | 
			
		||||
import kotlinx.coroutines.flow.collectLatest
 | 
			
		||||
import kotlinx.coroutines.flow.update
 | 
			
		||||
import tachiyomi.data.Database
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
import tachiyomi.domain.source.model.SourceWithCount
 | 
			
		||||
import uy.kohesive.injekt.Injekt
 | 
			
		||||
import uy.kohesive.injekt.api.get
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,6 @@ import cafe.adriel.voyager.core.model.StateScreenModel
 | 
			
		||||
import cafe.adriel.voyager.core.model.coroutineScope
 | 
			
		||||
import eu.kanade.domain.source.interactor.GetSourcesWithFavoriteCount
 | 
			
		||||
import eu.kanade.domain.source.interactor.SetMigrateSorting
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.util.lang.launchIO
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.logcat
 | 
			
		||||
@@ -16,6 +15,7 @@ import kotlinx.coroutines.flow.onEach
 | 
			
		||||
import kotlinx.coroutines.flow.receiveAsFlow
 | 
			
		||||
import kotlinx.coroutines.flow.update
 | 
			
		||||
import logcat.LogPriority
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
import uy.kohesive.injekt.Injekt
 | 
			
		||||
import uy.kohesive.injekt.api.get
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,13 +5,13 @@ import cafe.adriel.voyager.core.model.coroutineScope
 | 
			
		||||
import eu.kanade.domain.source.interactor.GetLanguagesWithSources
 | 
			
		||||
import eu.kanade.domain.source.interactor.ToggleLanguage
 | 
			
		||||
import eu.kanade.domain.source.interactor.ToggleSource
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import kotlinx.coroutines.flow.catch
 | 
			
		||||
import kotlinx.coroutines.flow.collectLatest
 | 
			
		||||
import kotlinx.coroutines.flow.combine
 | 
			
		||||
import kotlinx.coroutines.flow.update
 | 
			
		||||
import kotlinx.coroutines.launch
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
import uy.kohesive.injekt.Injekt
 | 
			
		||||
import uy.kohesive.injekt.api.get
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,8 +7,6 @@ import eu.kanade.domain.base.BasePreferences
 | 
			
		||||
import eu.kanade.domain.source.interactor.GetEnabledSources
 | 
			
		||||
import eu.kanade.domain.source.interactor.ToggleSource
 | 
			
		||||
import eu.kanade.domain.source.interactor.ToggleSourcePin
 | 
			
		||||
import eu.kanade.domain.source.model.Pin
 | 
			
		||||
import eu.kanade.domain.source.model.Source
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.presentation.browse.SourceUiModel
 | 
			
		||||
import eu.kanade.tachiyomi.util.lang.launchIO
 | 
			
		||||
@@ -19,6 +17,8 @@ import kotlinx.coroutines.flow.collectLatest
 | 
			
		||||
import kotlinx.coroutines.flow.receiveAsFlow
 | 
			
		||||
import kotlinx.coroutines.flow.update
 | 
			
		||||
import logcat.LogPriority
 | 
			
		||||
import tachiyomi.domain.source.model.Pin
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
import uy.kohesive.injekt.Injekt
 | 
			
		||||
import uy.kohesive.injekt.api.get
 | 
			
		||||
import java.util.TreeMap
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										42
									
								
								domain/src/main/java/tachiyomi/domain/source/model/Pin.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								domain/src/main/java/tachiyomi/domain/source/model/Pin.kt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
package tachiyomi.domain.source.model
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										25
									
								
								domain/src/main/java/tachiyomi/domain/source/model/Source.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								domain/src/main/java/tachiyomi/domain/source/model/Source.kt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
package tachiyomi.domain.source.model
 | 
			
		||||
 | 
			
		||||
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 key: () -> String = {
 | 
			
		||||
        when {
 | 
			
		||||
            isUsedLast -> "$id-lastused"
 | 
			
		||||
            else -> "$id"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
package eu.kanade.domain.source.model
 | 
			
		||||
package tachiyomi.domain.source.model
 | 
			
		||||
 | 
			
		||||
data class SourceWithCount(
 | 
			
		||||
    val source: Source,
 | 
			
		||||
		Reference in New Issue
	
	Block a user