Skip to content

Instantly share code, notes, and snippets.

View alibahaaa's full-sized avatar
❤️‍🔥
Coding with love and passion

Ali Baha alibahaaa

❤️‍🔥
Coding with love and passion
View GitHub Profile
import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.dsl.module
val appModule = module {
viewModel { MainViewModel(get()) }
}
class MainActivity : AppCompatActivity() {
private val viewModel: MainViewModel by viewModel()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Navigation(viewModel)
}
}
}
@Composable
fun Navigation(viewModel: MainViewModel) {
val navController = rememberNavController()
NavHost(navController = navController, startDestination = Screen.HomeScreen.route) {
composable(route = Screen.HomeScreen.route) {
HomeScreen(
navController = navController,
viewModel = viewModel
)
}
sealed class Intent : UiIntent {
object FetchOrigamiData : Intent()
}
sealed class State : UiState {
object Idle : State()
object Error : State()
object Loading : State()
data class Origami(val origami: List<Entity>) : State()
}
class MainViewModel(
private val getOrigamiUseCase: GetOrigamiUseCase
) : BaseViewModel<Intent,State>() {
override fun createInitialState(): State = State.Idle
override fun handleIntent(intent: Intent) {
when(intent){
Intent.FetchOrigamiData -> getOrigami()
}
@Composable
fun HomeScreen(
navController: NavController,
viewModel: MainViewModel = viewModel()
) {
val uiState = viewModel
.uiState
.collectAsState()
.value
import SwiftUI
@main
struct iOSApp: App {
init(){
startKoin()
}
var body: some Scene {
import SwiftUI
import shared
func startKoin() {
_koin = InjectorKt.doInitKoin().koin
}
private var _koin: Koin_coreKoin?
var koin: Koin_coreKoin {
import Foundation
import shared
enum DataState {
case loading
case result([Entity])
case error
}