Skip to content

Instantly share code, notes, and snippets.

View aartikov's full-sized avatar

Artur Artikov aartikov

View GitHub Profile
@aartikov
aartikov / DecomposeUtils.kt
Created December 14, 2022 09:27
Creates CoroutineScope for Decompose component
fun ComponentContext.componentCoroutineScope(): CoroutineScope {
val scope = CoroutineScope(SupervisorJob() + Dispatchers.Main.immediate)
if (lifecycle.state != Lifecycle.State.DESTROYED) {
lifecycle.doOnDestroy {
scope.cancel()
}
} else {
scope.cancel()
}
@aartikov
aartikov / DecomposeUtils.kt
Created December 14, 2022 09:29
Converts Decompose Value to StateFlow
fun <T : Any> Value<T>.toStateFlow(lifecycle: Lifecycle): StateFlow<T> {
val state = MutableStateFlow(this.value)
if (lifecycle.state != Lifecycle.State.DESTROYED) {
val observer = { value: T -> state.value = value }
subscribe(observer)
lifecycle.doOnDestroy {
unsubscribe(observer)
}
}
@aartikov
aartikov / App.kt
Created January 10, 2023 21:45
Decompose DI
class App : Application(), KoinProvider {
override lateinit var koin: Koin
private set
override fun onCreate() {
super.onCreate()
koin = createKoin()
}
@aartikov
aartikov / MultiChildStack.kt
Created February 12, 2024 10:51
multiChildStack for Decompose
package ru.mobileup.template.core.utils
import com.arkivanov.decompose.Child
import com.arkivanov.decompose.ComponentContext
import com.arkivanov.decompose.router.stack.ChildStack
import com.arkivanov.decompose.router.stack.StackNavigationSource
import com.arkivanov.decompose.router.stack.childStack
import com.arkivanov.decompose.value.MutableValue
import com.arkivanov.decompose.value.Value
import com.arkivanov.essenty.lifecycle.Lifecycle
@aartikov
aartikov / AppAugmentedFaceNode.kt
Created April 19, 2024 16:57
AugmentedFaceNode for SceneView
package com.example.arcoremask
import com.google.android.filament.Engine
import com.google.android.filament.IndexBuffer
import com.google.android.filament.MaterialInstance
import com.google.android.filament.RenderableManager
import com.google.android.filament.RenderableManager.PrimitiveType
import com.google.android.filament.VertexBuffer
import com.google.android.filament.VertexBuffer.AttributeType
import com.google.android.filament.VertexBuffer.VertexAttribute.POSITION