recipe-kt/app/src/main/java/xyz/pixelatedw/recipe/MainActivity.kt

74 lines
1.9 KiB
Kotlin

package xyz.pixelatedw.recipe
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Surface
import androidx.compose.ui.Modifier
import androidx.room.Room
import xyz.pixelatedw.recipe.ui.theme.RecipeTheme
import xyz.pixelatedw.recipe.data.AppDatabase
import xyz.pixelatedw.recipe.data.RecipesView
import xyz.pixelatedw.recipe.ui.components.MainScreen
import xyz.pixelatedw.recipe.utils.parseRecipes
class MainActivity : ComponentActivity() {
val recipeView: RecipesView by viewModels()
lateinit var db: AppDatabase
var importFinished: Boolean = false
var importError: String = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
db = Room.databaseBuilder(
this,
AppDatabase::class.java, "recipes"
).allowMainThreadQueries().build()
val recipes = db.recipeWithTagsDao().getAll()
recipeView.setRecipes(recipes)
enableEdgeToEdge()
setContent {
RecipeTheme {
Surface {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
MainScreen(this, innerPadding, recipeView)
}
}
}
}
}
val sourceChooser =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == RESULT_OK) {
result.data?.data?.let { uri ->
parseRecipes(this, uri)
}
}
else {
importError = "Import cancelled"
}
importFinished = true
}
fun getAppVersion(): String {
val info = this.packageManager.getPackageInfo(packageName, 0)
return if (info.versionName == null) {
"Unknown"
} else {
"v${info.versionName}"
}
}
}