2025-08-07 10:28:56 +03:00
|
|
|
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
|
2025-08-07 16:47:41 +03:00
|
|
|
import androidx.activity.viewModels
|
2025-08-07 10:28:56 +03:00
|
|
|
import androidx.compose.foundation.layout.fillMaxSize
|
|
|
|
|
import androidx.compose.material3.Scaffold
|
|
|
|
|
import androidx.compose.material3.Surface
|
|
|
|
|
import androidx.compose.ui.Modifier
|
2025-08-09 18:09:09 +03:00
|
|
|
import androidx.room.Room
|
2026-02-22 00:47:44 +02:00
|
|
|
import xyz.pixelatedw.recipe.ui.theme.RecipeTheme
|
2025-08-09 18:09:09 +03:00
|
|
|
import xyz.pixelatedw.recipe.data.AppDatabase
|
2025-08-08 23:21:33 +03:00
|
|
|
import xyz.pixelatedw.recipe.data.RecipesView
|
|
|
|
|
import xyz.pixelatedw.recipe.ui.components.MainScreen
|
2025-09-10 00:57:18 +03:00
|
|
|
import xyz.pixelatedw.recipe.utils.parseRecipes
|
2025-08-07 16:47:41 +03:00
|
|
|
|
2025-08-07 10:28:56 +03:00
|
|
|
class MainActivity : ComponentActivity() {
|
2026-02-22 00:47:44 +02:00
|
|
|
val recipeView: RecipesView by viewModels()
|
2025-08-31 01:11:04 +03:00
|
|
|
lateinit var db: AppDatabase
|
2025-08-07 16:47:41 +03:00
|
|
|
|
2026-02-28 13:56:57 +02:00
|
|
|
var importFinished: Boolean = false
|
|
|
|
|
var importError: String = ""
|
|
|
|
|
|
2025-08-07 10:28:56 +03:00
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
|
|
2025-08-09 18:09:09 +03:00
|
|
|
db = Room.databaseBuilder(
|
|
|
|
|
this,
|
|
|
|
|
AppDatabase::class.java, "recipes"
|
|
|
|
|
).allowMainThreadQueries().build()
|
|
|
|
|
|
|
|
|
|
val recipes = db.recipeWithTagsDao().getAll()
|
|
|
|
|
recipeView.setRecipes(recipes)
|
2025-08-07 10:28:56 +03:00
|
|
|
|
2025-08-08 23:21:33 +03:00
|
|
|
enableEdgeToEdge()
|
2025-08-09 13:21:06 +03:00
|
|
|
|
2025-08-08 23:21:33 +03:00
|
|
|
setContent {
|
2025-08-07 16:47:41 +03:00
|
|
|
RecipeTheme {
|
2025-08-07 10:28:56 +03:00
|
|
|
Surface {
|
|
|
|
|
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
|
2025-08-09 18:09:09 +03:00
|
|
|
MainScreen(this, innerPadding, recipeView)
|
2025-08-07 10:28:56 +03:00
|
|
|
}
|
2025-08-07 16:47:41 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-08-07 10:28:56 +03:00
|
|
|
}
|
2025-08-07 16:47:41 +03:00
|
|
|
|
2025-08-09 18:09:09 +03:00
|
|
|
val sourceChooser =
|
|
|
|
|
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
|
|
|
|
|
if (result.resultCode == RESULT_OK) {
|
|
|
|
|
result.data?.data?.let { uri ->
|
2026-02-22 00:47:44 +02:00
|
|
|
parseRecipes(this, uri)
|
2026-02-28 13:56:57 +02:00
|
|
|
importError = ""
|
2025-08-07 16:47:41 +03:00
|
|
|
}
|
|
|
|
|
}
|
2026-02-28 13:56:57 +02:00
|
|
|
else {
|
|
|
|
|
importError = "Failed to import recipes (${result.resultCode})"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
importFinished = true
|
2025-08-09 18:09:09 +03:00
|
|
|
}
|
2026-02-28 13:56:57 +02:00
|
|
|
|
|
|
|
|
fun getAppVersion(): String {
|
|
|
|
|
val info = this.packageManager.getPackageInfo(packageName, 0)
|
|
|
|
|
return if (info.versionName == null) {
|
|
|
|
|
"Unknown"
|
|
|
|
|
} else {
|
|
|
|
|
"v${info.versionName}"
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-08-07 10:28:56 +03:00
|
|
|
}
|