diff --git a/android/nyms5/app/build.gradle b/android/nyms5/app/build.gradle index 51cc29d864..735914bff2 100644 --- a/android/nyms5/app/build.gradle +++ b/android/nyms5/app/build.gradle @@ -53,6 +53,8 @@ dependencies { implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' implementation 'androidx.activity:activity-compose:1.5.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4' implementation platform('androidx.compose:compose-bom:2022.10.00') implementation 'androidx.compose.ui:ui' implementation 'androidx.compose.ui:ui-graphics' diff --git a/android/nyms5/app/src/main/java/net/nymtech/nyms5/MainActivity.kt b/android/nyms5/app/src/main/java/net/nymtech/nyms5/MainActivity.kt index 39773de0c6..5c581d7d8c 100644 --- a/android/nyms5/app/src/main/java/net/nymtech/nyms5/MainActivity.kt +++ b/android/nyms5/app/src/main/java/net/nymtech/nyms5/MainActivity.kt @@ -1,9 +1,9 @@ package net.nymtech.nyms5 import android.os.Bundle -import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent +import androidx.activity.viewModels import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface @@ -11,14 +11,24 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import kotlinx.coroutines.launch import net.nymtech.nyms5.ui.theme.Nyms5Theme class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - val result = Socks5().runtest() - Log.i(result, "TEST ****") + val viewModel: MainViewModel by viewModels() + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.STARTED) { + viewModel.uiState.collect { + // Update UI elements + } + } + } setContent { Nyms5Theme { diff --git a/android/nyms5/app/src/main/java/net/nymtech/nyms5/MainViewModel.kt b/android/nyms5/app/src/main/java/net/nymtech/nyms5/MainViewModel.kt new file mode 100644 index 0000000000..76bd05bbad --- /dev/null +++ b/android/nyms5/app/src/main/java/net/nymtech/nyms5/MainViewModel.kt @@ -0,0 +1,26 @@ +package net.nymtech.nyms5 + +import android.util.Log +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch + +class MainViewModel : ViewModel() { + + init { + viewModelScope.launch(Dispatchers.IO) { + val result = Socks5().runtest() + result?.let { Log.d("App", "result: $it") } + } + Log.d("App", "libnyms5 CALLED") + } + + // Expose screen UI state + private val _uiState = MutableStateFlow(false) + val uiState: StateFlow = _uiState.asStateFlow() + +}