Some small UI adjustment to the level UP screen & RollOverlay.
This commit is contained in:
		
							parent
							
								
									fce085f70d
								
							
						
					
					
						commit
						35396b6069
					
				
					 23 changed files with 530 additions and 166 deletions
				
			
		| 
						 | 
				
			
			@ -0,0 +1,58 @@
 | 
			
		|||
package com.pixelized.desktop.lwa
 | 
			
		||||
 | 
			
		||||
import androidx.lifecycle.ViewModel
 | 
			
		||||
import com.pixelized.desktop.lwa.repository.alteration.AlterationRepository
 | 
			
		||||
import com.pixelized.desktop.lwa.repository.campaign.CampaignRepository
 | 
			
		||||
import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository
 | 
			
		||||
import com.pixelized.desktop.lwa.repository.network.NetworkRepository
 | 
			
		||||
import com.pixelized.desktop.lwa.repository.settings.SettingsRepository
 | 
			
		||||
import com.pixelized.shared.lwa.model.campaign.Campaign
 | 
			
		||||
import kotlinx.coroutines.coroutineScope
 | 
			
		||||
import kotlinx.coroutines.flow.combine
 | 
			
		||||
import kotlinx.coroutines.flow.filter
 | 
			
		||||
import kotlinx.coroutines.flow.launchIn
 | 
			
		||||
import kotlinx.coroutines.flow.onEach
 | 
			
		||||
 | 
			
		||||
class DataSyncViewModel(
 | 
			
		||||
    private val characterRepository: CharacterSheetRepository,
 | 
			
		||||
    private val alterationRepository: AlterationRepository,
 | 
			
		||||
    private val campaignRepository: CampaignRepository,
 | 
			
		||||
    private val settingsRepository: SettingsRepository,
 | 
			
		||||
    private val networkRepository: NetworkRepository,
 | 
			
		||||
) : ViewModel() {
 | 
			
		||||
 | 
			
		||||
    fun autoConnect() {
 | 
			
		||||
        val settings = settingsRepository.settings()
 | 
			
		||||
 | 
			
		||||
        if (settings.playerName.isEmpty()) return
 | 
			
		||||
 | 
			
		||||
        networkRepository.connect(
 | 
			
		||||
            host = settings.host,
 | 
			
		||||
            port = settings.port,
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    suspend fun synchronise() = coroutineScope {
 | 
			
		||||
 | 
			
		||||
        networkRepository.status
 | 
			
		||||
            .filter { status -> status == NetworkRepository.Status.CONNECTED }
 | 
			
		||||
            .onEach { campaignRepository.update() }
 | 
			
		||||
            .launchIn(this)
 | 
			
		||||
 | 
			
		||||
        networkRepository.status
 | 
			
		||||
            .filter { status -> status == NetworkRepository.Status.CONNECTED }
 | 
			
		||||
            .combine(campaignRepository.campaignFlow) { _, campaign: Campaign -> campaign }
 | 
			
		||||
            .onEach { campaign ->
 | 
			
		||||
                campaign.characters.keys.forEach { id ->
 | 
			
		||||
                    characterRepository.characterDetail(
 | 
			
		||||
                        characterSheetId = id.characterSheetId,
 | 
			
		||||
                        forceUpdate = true,
 | 
			
		||||
                    )
 | 
			
		||||
                    alterationRepository.updateActiveAlterations(
 | 
			
		||||
                        characterInstanceId = id,
 | 
			
		||||
                    )
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            .launchIn(this)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue