mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Convert Source tab to use Compose (#6987)
* Use Compose in Source tab * Replace hashCode with key function * Add ability to turn off pins moving on top of source list * Changes from review comments
This commit is contained in:
		@@ -6,6 +6,9 @@ import eu.kanade.tachiyomi.source.model.Page
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.SChapter
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.SManga
 | 
			
		||||
import eu.kanade.tachiyomi.source.online.HttpSource
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import kotlinx.coroutines.flow.MutableStateFlow
 | 
			
		||||
import kotlinx.coroutines.flow.update
 | 
			
		||||
import rx.Observable
 | 
			
		||||
 | 
			
		||||
open class SourceManager(private val context: Context) {
 | 
			
		||||
@@ -13,6 +16,9 @@ open class SourceManager(private val context: Context) {
 | 
			
		||||
    private val sourcesMap = mutableMapOf<Long, Source>()
 | 
			
		||||
    private val stubSourcesMap = mutableMapOf<Long, StubSource>()
 | 
			
		||||
 | 
			
		||||
    private val _catalogueSources: MutableStateFlow<List<CatalogueSource>> = MutableStateFlow(listOf())
 | 
			
		||||
    val catalogueSources: Flow<List<CatalogueSource>> = _catalogueSources
 | 
			
		||||
 | 
			
		||||
    init {
 | 
			
		||||
        createInternalSources().forEach { registerSource(it) }
 | 
			
		||||
    }
 | 
			
		||||
@@ -38,10 +44,18 @@ open class SourceManager(private val context: Context) {
 | 
			
		||||
        if (!stubSourcesMap.containsKey(source.id)) {
 | 
			
		||||
            stubSourcesMap[source.id] = StubSource(source.id)
 | 
			
		||||
        }
 | 
			
		||||
        triggerCatalogueSources()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    internal fun unregisterSource(source: Source) {
 | 
			
		||||
        sourcesMap.remove(source.id)
 | 
			
		||||
        triggerCatalogueSources()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun triggerCatalogueSources() {
 | 
			
		||||
        _catalogueSources.update {
 | 
			
		||||
            sourcesMap.values.filterIsInstance<CatalogueSource>()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun createInternalSources(): List<Source> = listOf(
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user