Hello everyone, Live-reload keep breaking even in...
# compose-android
p
Hello everyone, Live-reload keep breaking even in simple changes. code is in thread. Any and all suggestion is helpful. Thank you for taking the time to help. Really grateful for that.
Copy code
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
    private val viewmodel by viewModels<RootViewmodel>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContent {
            setupSplashScreen()

            val nav = rememberNavController()

            TelecallerTheme {
                val state by viewmodel.screen.collectAsStateWithLifecycle()

                state?.let { screen ->
                    RootNavigation(nav, screen)
                }
            }
        }
    }

    private fun setupSplashScreen() {
        var keepSplashOpened = true

        lifecycleScope.launch {
            lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
                viewmodel.isLongInScreen.collectLatest {
                    it?.let {
                        keepSplashOpened = false
                    }
                }
            }
        }

        installSplashScreen().setKeepOnScreenCondition {
            keepSplashOpened
        }
    }
}
Copy code
class Dimens(
    val small1: Dp = 4.dp,
    val small2: Dp = 6.dp,
    val small3: Dp = 8.dp,
    val medium1: Dp = 16.dp,
    val medium2: Dp = 18.dp,
    val medium3: Dp = 24.dp,
    val large1: Dp = 32.dp,
    val large2: Dp = 52.dp,
)

private val CompactDimens = Dimens(
    small1 = 4.dp,
    small2 = 6.dp,
    small3 = 8.dp,
    medium1 = 16.dp,
    medium2 = 18.dp,
    medium3 = 24.dp,
)

private val LocalAppDimens = compositionLocalOf {
    CompactDimens
}

val MaterialTheme.dimens
    @ReadOnlyComposable
    @Composable
    get() = LocalAppDimens.current

private val LightColorScheme = lightColorScheme(
    primary = Purple40,
    secondary = PurpleGrey40,
    tertiary = Pink40
)

@Composable
fun TelecallerTheme(
    darkTheme: Boolean = false,
    content: @Composable () -> Unit,
) {
    val context = LocalContext.current
    val componentActivity = context as ComponentActivity
    val activity = LocalActivity.current
    val view = LocalView.current

    DisposableEffect(darkTheme) {
        componentActivity.enableEdgeToEdge(
            statusBarStyle = if (darkTheme) SystemBarStyle.light(
                scrim = Color.Transparent.toArgb(),
                darkScrim = Color.Transparent.toArgb()
            ) else SystemBarStyle.dark(
                scrim = Color.Transparent.toArgb()
            ),
            navigationBarStyle = if (darkTheme) SystemBarStyle.light(
                scrim = Color.Transparent.toArgb(),
                darkScrim = Color.Transparent.toArgb()
            ) else SystemBarStyle.dark(
                scrim = Color.Transparent.toArgb()
            )
        )

        onDispose { }
    }

    if (activity != null) SideEffect {
        val window = activity.window
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
            window.isNavigationBarContrastEnforced = false

        val windowsInsetsController = WindowCompat.getInsetsController(window, view)

        windowsInsetsController.isAppearanceLightStatusBars = !darkTheme
        windowsInsetsController.isAppearanceLightNavigationBars = !darkTheme
    }

    AppThem(content)
}

@Composable
fun AppThem(
    content: @Composable () -> Unit,
) {
    val dimens = remember { CompactDimens }

    CompositionLocalProvider(value = LocalAppDimens provides dimens) {
        MaterialTheme(
            colorScheme = LightColorScheme,
            typography = Typography,
            shapes = Shapes(
                extraSmall = RoundedCornerShape(4.dp),
                small = RoundedCornerShape(8.dp),
                medium = RoundedCornerShape(16.dp),
                large = RoundedCornerShape(32.dp),
                extraLarge = RoundedCornerShape(52.dp)
            ),
            content = content
        )
    }
}
Copy code
@HiltViewModel
class RootViewmodel @Inject constructor(
    private val db: DatastoreRepository,
) : ViewModel() {

    var screen = MutableStateFlow<Screens?>(null)
        private set

    private val _isLogin = MutableStateFlow<Boolean?>(null)
    val isLongInScreen = _isLogin.asStateFlow()

    init {
        viewModelScope.launch {
            isLongInScreen.collectLatest {
                if (it == true) screen.update {
                    Screens.Home
                } else screen.update {
                    Screens.Auth
                }
            }
        }

        viewModelScope.launch {
            db.isLoggedIn().collectLatest {
                _isLogin.value = it
            }
        }
    }
}
making any changes to any composable is breaking live-reload. with same kind of error sample error is shared. I just added some new lines and it broke