mirror of
https://github.com/openMF/mobile-wallet.git
synced 2026-02-06 11:36:57 +00:00
82 lines
2.7 KiB
Kotlin
82 lines
2.7 KiB
Kotlin
/*
|
|
* Copyright 2024 Mifos Initiative
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
*
|
|
* See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md
|
|
*/
|
|
package org.mifospay
|
|
|
|
import android.os.Bundle
|
|
import androidx.activity.ComponentActivity
|
|
import androidx.activity.compose.setContent
|
|
import androidx.activity.enableEdgeToEdge
|
|
import androidx.compose.runtime.getValue
|
|
import androidx.compose.runtime.mutableStateOf
|
|
import androidx.compose.runtime.setValue
|
|
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
|
import androidx.core.view.WindowCompat
|
|
import androidx.lifecycle.Lifecycle
|
|
import androidx.lifecycle.lifecycleScope
|
|
import androidx.lifecycle.repeatOnLifecycle
|
|
import io.github.vinceglb.filekit.FileKit
|
|
import io.github.vinceglb.filekit.dialogs.init
|
|
import kotlinx.coroutines.flow.collect
|
|
import kotlinx.coroutines.flow.onEach
|
|
import kotlinx.coroutines.launch
|
|
import org.koin.android.ext.android.inject
|
|
import org.koin.androidx.viewmodel.ext.android.viewModel
|
|
import org.mifospay.core.data.util.NetworkMonitor
|
|
import org.mifospay.core.data.util.TimeZoneMonitor
|
|
import org.mifospay.core.ui.utils.ShareUtils
|
|
import org.mifospay.shared.MainUiState
|
|
import org.mifospay.shared.MifosPaySharedApp
|
|
import org.mifospay.shared.MifosPayViewModel
|
|
|
|
class MainActivity : ComponentActivity() {
|
|
private val networkMonitor: NetworkMonitor by inject()
|
|
private val timeZoneMonitor: TimeZoneMonitor by inject()
|
|
private val viewModel: MifosPayViewModel by viewModel()
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
|
|
val splashScreen = installSplashScreen()
|
|
|
|
WindowCompat.setDecorFitsSystemWindows(window, false)
|
|
enableEdgeToEdge()
|
|
|
|
// Initialize FileKit
|
|
FileKit.init(this)
|
|
|
|
var uiState: MainUiState by mutableStateOf(MainUiState.Loading)
|
|
|
|
// Update the uiState
|
|
lifecycleScope.launch {
|
|
lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
|
|
viewModel.uiState
|
|
.onEach { uiState = it }
|
|
.collect()
|
|
}
|
|
}
|
|
|
|
splashScreen.setKeepOnScreenCondition {
|
|
when (uiState) {
|
|
MainUiState.Loading -> true
|
|
is MainUiState.Success -> false
|
|
}
|
|
}
|
|
|
|
ShareUtils.setActivityProvider { return@setActivityProvider this }
|
|
|
|
setContent {
|
|
MifosPaySharedApp(
|
|
networkMonitor = networkMonitor,
|
|
timeZoneMonitor = timeZoneMonitor,
|
|
)
|
|
}
|
|
}
|
|
}
|