diff --git a/app/src/main/java/org/hydev/wearsync/MainActivity.kt b/app/src/main/java/org/hydev/wearsync/MainActivity.kt index 92d9308..d6492a9 100644 --- a/app/src/main/java/org/hydev/wearsync/MainActivity.kt +++ b/app/src/main/java/org/hydev/wearsync/MainActivity.kt @@ -8,8 +8,7 @@ import android.view.Menu import android.view.MenuItem import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity -import com.influxdb.client.domain.WritePrecision -import com.influxdb.client.kotlin.InfluxDBClientKotlinFactory +import com.influxdb.client.kotlin.InfluxDBClientKotlin import kotlinx.coroutines.* import kotlinx.coroutines.flow.consumeAsFlow import org.hydev.wearsync.ActivityPermissions.Companion.hasPermissions @@ -24,6 +23,7 @@ import java.util.* class MainActivity : AppCompatActivity() { lateinit var binding: ActivityMainBinding + lateinit var influx: InfluxDBClientKotlin val enableBluetoothRequest = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { if (it.resultCode != RESULT_OK) ensureBluetooth() @@ -43,12 +43,32 @@ class MainActivity : AppCompatActivity() setContentView(binding.root) setSupportActionBar(binding.toolbar) - if (!hasPermissions()) act() + if (!hasPermissions()) permissionCallback.launch(intent()) + else afterPermissions() + } + + val permissionCallback = actCallback { afterPermissions() } + fun afterPermissions() { + scope.launch { + // Open settings if influx database is inaccessible + if (runCatching { prefs.influxPing() }.isFailure) settingsCallback.launch(intent()) + else afterSettings() + } + } + + val settingsCallback = actCallback { afterSettings() } + fun afterSettings() { + // Create client + influx = prefs.createInflux() // Scan for devices - act() - binding.content.tvDevice.text = "Configured Device: $chosenDevice" + connectCallback.launch(intent()) + } + val connectCallback = actCallback { + // Start collection + binding.content.tvDevice.text = "Configured Device: ${prefs.chosenDevice}" + binding.content.tvValue.text = "Service started!" startCollect() }