Bump version to 0.5.0
This commit is contained in:
		
							parent
							
								
									ee81f9082d
								
							
						
					
					
						commit
						81f71a9aec
					
				
					 6 changed files with 38 additions and 2 deletions
				
			
		| 
						 | 
					@ -31,7 +31,7 @@ android {
 | 
				
			||||||
        applicationId = "com.pixelized.rplexicon"
 | 
					        applicationId = "com.pixelized.rplexicon"
 | 
				
			||||||
        minSdk = 26
 | 
					        minSdk = 26
 | 
				
			||||||
        targetSdk = 34
 | 
					        targetSdk = 34
 | 
				
			||||||
        versionName = "0.5.0-beta"
 | 
					        versionName = "0.5.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
 | 
					        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
 | 
				
			||||||
        vectorDrawables {
 | 
					        vectorDrawables {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,11 @@
 | 
				
			||||||
package com.pixelized.rplexicon.model
 | 
					package com.pixelized.rplexicon.model
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.annotation.Keep
 | 
				
			||||||
 | 
					import com.google.firebase.database.IgnoreExtraProperties
 | 
				
			||||||
import com.google.firebase.database.PropertyName
 | 
					import com.google.firebase.database.PropertyName
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Keep
 | 
				
			||||||
 | 
					@IgnoreExtraProperties
 | 
				
			||||||
data class CharacterSheetFire(
 | 
					data class CharacterSheetFire(
 | 
				
			||||||
    @get:PropertyName(HIT_POINT)
 | 
					    @get:PropertyName(HIT_POINT)
 | 
				
			||||||
    @set:PropertyName(HIT_POINT)
 | 
					    @set:PropertyName(HIT_POINT)
 | 
				
			||||||
| 
						 | 
					@ -59,6 +63,8 @@ data class CharacterSheetFire(
 | 
				
			||||||
    @set:PropertyName("${SPELL_SLOT_LEVEL_X}9")
 | 
					    @set:PropertyName("${SPELL_SLOT_LEVEL_X}9")
 | 
				
			||||||
    var spell9: Int? = null,
 | 
					    var spell9: Int? = null,
 | 
				
			||||||
) {
 | 
					) {
 | 
				
			||||||
 | 
					    @Keep
 | 
				
			||||||
 | 
					    @IgnoreExtraProperties
 | 
				
			||||||
    data class HitPoint(
 | 
					    data class HitPoint(
 | 
				
			||||||
        @get:PropertyName("additional")
 | 
					        @get:PropertyName("additional")
 | 
				
			||||||
        @set:PropertyName("additional")
 | 
					        @set:PropertyName("additional")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,6 +43,7 @@ class FirebaseRepository @Inject constructor(
 | 
				
			||||||
                    val value = try {
 | 
					                    val value = try {
 | 
				
			||||||
                        dataSnapshot.getValue(CharacterSheetFire::class.java)
 | 
					                        dataSnapshot.getValue(CharacterSheetFire::class.java)
 | 
				
			||||||
                    } catch (exception: Exception) {
 | 
					                    } catch (exception: Exception) {
 | 
				
			||||||
 | 
					                        Log.e(TAG, "Failed to parse value.", exception)
 | 
				
			||||||
                        _error.tryEmit(exception)
 | 
					                        _error.tryEmit(exception)
 | 
				
			||||||
                        null
 | 
					                        null
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
| 
						 | 
					@ -52,7 +53,7 @@ class FirebaseRepository @Inject constructor(
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                override fun onCancelled(error: DatabaseError) {
 | 
					                override fun onCancelled(error: DatabaseError) {
 | 
				
			||||||
                    Log.w(TAG, "Failed to read value.", error.toException())
 | 
					                    Log.e(TAG, "Failed to read value.", error.toException())
 | 
				
			||||||
                    cancel()
 | 
					                    cancel()
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,9 @@ import kotlinx.coroutines.flow.SharedFlow
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Stable
 | 
					@Stable
 | 
				
			||||||
sealed class FetchErrorUio {
 | 
					sealed class FetchErrorUio {
 | 
				
			||||||
 | 
					    @Stable
 | 
				
			||||||
 | 
					    data class Firebase(val exception: Exception) : FetchErrorUio()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Stable
 | 
					    @Stable
 | 
				
			||||||
    data object Structure : FetchErrorUio()
 | 
					    data object Structure : FetchErrorUio()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,6 +42,8 @@ fun HandleFetchError(
 | 
				
			||||||
    LaunchedEffect(key1 = "HandleFetchError") {
 | 
					    LaunchedEffect(key1 = "HandleFetchError") {
 | 
				
			||||||
        errors.collect { error ->
 | 
					        errors.collect { error ->
 | 
				
			||||||
            when (error) {
 | 
					            when (error) {
 | 
				
			||||||
 | 
					                is FetchErrorUio.Firebase -> Unit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                is FetchErrorUio.Structure -> currentOnStructureError.value.invoke(
 | 
					                is FetchErrorUio.Structure -> currentOnStructureError.value.invoke(
 | 
				
			||||||
                    context, snack, error,
 | 
					                    context, snack, error,
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,6 +35,7 @@ import androidx.compose.material3.Surface
 | 
				
			||||||
import androidx.compose.material3.Text
 | 
					import androidx.compose.material3.Text
 | 
				
			||||||
import androidx.compose.material3.TopAppBar
 | 
					import androidx.compose.material3.TopAppBar
 | 
				
			||||||
import androidx.compose.runtime.Composable
 | 
					import androidx.compose.runtime.Composable
 | 
				
			||||||
 | 
					import androidx.compose.runtime.LaunchedEffect
 | 
				
			||||||
import androidx.compose.runtime.rememberCoroutineScope
 | 
					import androidx.compose.runtime.rememberCoroutineScope
 | 
				
			||||||
import androidx.compose.ui.Alignment
 | 
					import androidx.compose.ui.Alignment
 | 
				
			||||||
import androidx.compose.ui.Modifier
 | 
					import androidx.compose.ui.Modifier
 | 
				
			||||||
| 
						 | 
					@ -48,6 +49,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider
 | 
				
			||||||
import androidx.compose.ui.unit.dp
 | 
					import androidx.compose.ui.unit.dp
 | 
				
			||||||
import androidx.hilt.navigation.compose.hiltViewModel
 | 
					import androidx.hilt.navigation.compose.hiltViewModel
 | 
				
			||||||
import com.pixelized.rplexicon.LocalRollOverlay
 | 
					import com.pixelized.rplexicon.LocalRollOverlay
 | 
				
			||||||
 | 
					import com.pixelized.rplexicon.LocalSnack
 | 
				
			||||||
import com.pixelized.rplexicon.NO_WINDOW_INSETS
 | 
					import com.pixelized.rplexicon.NO_WINDOW_INSETS
 | 
				
			||||||
import com.pixelized.rplexicon.R
 | 
					import com.pixelized.rplexicon.R
 | 
				
			||||||
import com.pixelized.rplexicon.ui.composable.IndicatorStep
 | 
					import com.pixelized.rplexicon.ui.composable.IndicatorStep
 | 
				
			||||||
| 
						 | 
					@ -83,6 +85,7 @@ fun CharacterSheetScreen(
 | 
				
			||||||
    spellsViewModel: SpellsActionViewModel = hiltViewModel(),
 | 
					    spellsViewModel: SpellsActionViewModel = hiltViewModel(),
 | 
				
			||||||
    alterationsViewModel: AlterationViewModel = hiltViewModel(),
 | 
					    alterationsViewModel: AlterationViewModel = hiltViewModel(),
 | 
				
			||||||
) {
 | 
					) {
 | 
				
			||||||
 | 
					    val snack = LocalSnack.current
 | 
				
			||||||
    val screen = LocalScreenNavHost.current
 | 
					    val screen = LocalScreenNavHost.current
 | 
				
			||||||
    val overlay = LocalRollOverlay.current
 | 
					    val overlay = LocalRollOverlay.current
 | 
				
			||||||
    val scope = rememberCoroutineScope()
 | 
					    val scope = rememberCoroutineScope()
 | 
				
			||||||
| 
						 | 
					@ -158,6 +161,14 @@ fun CharacterSheetScreen(
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        LaunchedEffect(key1 = "Error") {
 | 
				
			||||||
 | 
					            viewModel.errors.collect { error ->
 | 
				
			||||||
 | 
					                snack.showSnackbar(
 | 
				
			||||||
 | 
					                    message = error.exception.localizedMessage ?: ""
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        BackHandler(enabled = sheetState.isVisible) {
 | 
					        BackHandler(enabled = sheetState.isVisible) {
 | 
				
			||||||
            scope.launch { sheetState.hide() }
 | 
					            scope.launch { sheetState.hide() }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,14 +5,18 @@ import androidx.compose.runtime.State
 | 
				
			||||||
import androidx.compose.runtime.mutableStateOf
 | 
					import androidx.compose.runtime.mutableStateOf
 | 
				
			||||||
import androidx.lifecycle.ViewModel
 | 
					import androidx.lifecycle.ViewModel
 | 
				
			||||||
import androidx.lifecycle.viewModelScope
 | 
					import androidx.lifecycle.viewModelScope
 | 
				
			||||||
 | 
					import com.pixelized.rplexicon.repository.authentication.FirebaseRepository
 | 
				
			||||||
import com.pixelized.rplexicon.repository.data.ActionRepository
 | 
					import com.pixelized.rplexicon.repository.data.ActionRepository
 | 
				
			||||||
import com.pixelized.rplexicon.repository.data.AlterationRepository
 | 
					import com.pixelized.rplexicon.repository.data.AlterationRepository
 | 
				
			||||||
import com.pixelized.rplexicon.repository.data.CharacterSheetRepository
 | 
					import com.pixelized.rplexicon.repository.data.CharacterSheetRepository
 | 
				
			||||||
import com.pixelized.rplexicon.repository.data.SpellRepository
 | 
					import com.pixelized.rplexicon.repository.data.SpellRepository
 | 
				
			||||||
 | 
					import com.pixelized.rplexicon.ui.composable.error.FetchErrorUio
 | 
				
			||||||
import dagger.hilt.android.lifecycle.HiltViewModel
 | 
					import dagger.hilt.android.lifecycle.HiltViewModel
 | 
				
			||||||
import kotlinx.coroutines.async
 | 
					import kotlinx.coroutines.async
 | 
				
			||||||
import kotlinx.coroutines.awaitAll
 | 
					import kotlinx.coroutines.awaitAll
 | 
				
			||||||
import kotlinx.coroutines.coroutineScope
 | 
					import kotlinx.coroutines.coroutineScope
 | 
				
			||||||
 | 
					import kotlinx.coroutines.flow.MutableSharedFlow
 | 
				
			||||||
 | 
					import kotlinx.coroutines.flow.SharedFlow
 | 
				
			||||||
import kotlinx.coroutines.launch
 | 
					import kotlinx.coroutines.launch
 | 
				
			||||||
import javax.inject.Inject
 | 
					import javax.inject.Inject
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,15 +26,24 @@ class CharacterSheetViewModel @Inject constructor(
 | 
				
			||||||
    private val alterationRepository: AlterationRepository,
 | 
					    private val alterationRepository: AlterationRepository,
 | 
				
			||||||
    private val actionRepository: ActionRepository,
 | 
					    private val actionRepository: ActionRepository,
 | 
				
			||||||
    private val spellRepository: SpellRepository,
 | 
					    private val spellRepository: SpellRepository,
 | 
				
			||||||
 | 
					    private val firebaseRepository: FirebaseRepository,
 | 
				
			||||||
) : ViewModel() {
 | 
					) : ViewModel() {
 | 
				
			||||||
    private val _isLoading = mutableStateOf(false)
 | 
					    private val _isLoading = mutableStateOf(false)
 | 
				
			||||||
    val isLoading: State<Boolean> get() = _isLoading
 | 
					    val isLoading: State<Boolean> get() = _isLoading
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private val _error = MutableSharedFlow<FetchErrorUio.Firebase>()
 | 
				
			||||||
 | 
					    val errors: SharedFlow<FetchErrorUio.Firebase> get() = _error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    init {
 | 
					    init {
 | 
				
			||||||
        viewModelScope.launch {
 | 
					        viewModelScope.launch {
 | 
				
			||||||
            launch {
 | 
					            launch {
 | 
				
			||||||
                update(force = false)
 | 
					                update(force = false)
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            launch {
 | 
				
			||||||
 | 
					                firebaseRepository.error.collect { exception ->
 | 
				
			||||||
 | 
					                    _error.emit(FetchErrorUio.Firebase(exception = exception))
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue