Skip to content

Instantly share code, notes, and snippets.

View saurabharora90's full-sized avatar

Saurabh saurabharora90

View GitHub Profile
@saurabharora90
saurabharora90 / is_valid_hashtag_key_state_object.kt.diff
Last active November 5, 2023 16:13
second approach with state object as key
@Composable
private fun PostHashtags(
hashtags: ImmutableList<String>,
onAddHashTag: (String) -> Unit,
modifier: Modifier
) {
- var inputHashTag by remember(hashtags) { mutableStateOf("") }
+ val inputHashTag = remember(hashtags) { mutableStateOf("") }
- val isValidHashtag: Boolean by remember {
+ val isValidHashtag: Boolean by remember(inputHashTag) {
- val isValidHashtag: Boolean by remember {
+ val isValidHashtag: Boolean by remember(hashtags) {
derivedStateOf {
!inputHashTag.contains(" ")
}
}
val isValidHashtag: Boolean by remember {
+ Log.i("Saurabh", "Running remember block")
derivedStateOf {
+ Log.i("Saurabh", "Calculating derivedStateOf")
!inputHashTag.contains(" ")
}
}
@saurabharora90
saurabharora90 / is_valid_hashtag.kt.diff
Last active November 5, 2023 15:31
Add is valid hashtag check
@Composable
private fun PostHashtags(
hashtags: ImmutableList<String>,
onAddHashTag: (String) -> Unit,
modifier: Modifier
) {
var inputHashTag by remember(hashtags) { mutableStateOf("") }
+ val isValidHashtag: Boolean by remember {
+ derivedStateOf {
+ !inputHashTag.contains(" ")
@saurabharora90
saurabharora90 / ex_derived_state_of.kt
Last active November 5, 2023 13:55
Derived State of Blog Example
@Composable
private fun PostHashtags(
hashtags: ImmutableList<String>,
onAddHashTag: (String) -> Unit,
modifier: Modifier
) {
var inputHashTag by remember(hashtags) { mutableStateOf("") }
Column(modifier = modifier) {
OutlinedTextField(
@saurabharora90
saurabharora90 / Speedometer.kt
Created October 15, 2023 11:36
Speedometer in Jetpack Compose
import androidx.annotation.FloatRange
import androidx.compose.animation.core.Animatable
import androidx.compose.animation.core.LinearOutSlowInEasing
import androidx.compose.animation.core.tween
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.requiredSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Slider
var completableList: MutableList<Completable> = ArrayList<Completable>()
for (initializer in appComponent.getInitializers()) {
completableList.add(initializer.initialize(context))
}
Completable.mergeDelayError(completableList)
private val initializedModules = HashSet<Class<out ModuleInitializer>>()
fun getInitializerCompletable(): Completable {
val completableList = mutableListOf<Completable>()
map.forEach { (clazz, moduleInitializer) ->
completableList.addAll(getCompletableForModule(clazz, moduleInitializer))
}
return Completable.concat(completableList)
}
@saurabharora90
saurabharora90 / AppComponent.kt
Last active June 15, 2020 06:15
Updated Dagger Module
interface AppComponent {
@Component.Factory
interface Factory {
fun create(@BindsInstance context: Context): AppComponent
}
.....
class CustomerCareInitializer @Inject constructor(
private val session: UserSession,
private val apiService: ApiService
) : ModuleInitializer {
override fun initialize(context: Context): Completable {
....
}
override fun dependencies(): List<Class<out ModuleInitializer>> {