From 799ddb76e50d368ce6ff47446540388f1fa0c2c6 Mon Sep 17 00:00:00 2001 From: LilleBRG Date: Thu, 8 May 2025 12:12:00 +0200 Subject: [PATCH 1/4] made modal for ai and manual creation of dish --- app/app/src/main/AndroidManifest.xml | 4 +++ .../tech/mercantec/easyeat/helpers/api.kt | 8 +++++ .../tech/mercantec/easyeat/helpers/auth.kt | 14 +++++++-- .../tech/mercantec/easyeat/ui/MainActivity.kt | 5 ---- .../easyeat/ui/dishes/CreateDishAIActivity.kt | 16 ++++++++++ .../easyeat/ui/dishes/CreateDishActivity.kt | 11 +------ .../easyeat/ui/dishes/DishesFragment.kt | 27 +++++++++++++++-- .../main/res/drawable/rounded_background.xml | 4 +++ .../main/res/layout/create_dish_ai_form.xml | 14 +++++++++ .../res/layout/create_dish_modal_dialog.xml | 29 +++++++++++++++++++ .../src/main/res/layout/dish_list_item.xml | 1 + .../main/res/xml/network_security_config.xml | 6 ++++ 12 files changed, 119 insertions(+), 20 deletions(-) create mode 100644 app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/CreateDishAIActivity.kt create mode 100644 app/app/src/main/res/drawable/rounded_background.xml create mode 100644 app/app/src/main/res/layout/create_dish_ai_form.xml create mode 100644 app/app/src/main/res/layout/create_dish_modal_dialog.xml create mode 100644 app/app/src/main/res/xml/network_security_config.xml diff --git a/app/app/src/main/AndroidManifest.xml b/app/app/src/main/AndroidManifest.xml index 18a13cb..69e6466 100644 --- a/app/app/src/main/AndroidManifest.xml +++ b/app/app/src/main/AndroidManifest.xml @@ -44,6 +44,10 @@ android:name=".ui.dishes.CreateDishActivity" android:exported="false" /> + + diff --git a/app/app/src/main/java/tech/mercantec/easyeat/helpers/api.kt b/app/app/src/main/java/tech/mercantec/easyeat/helpers/api.kt index c3297eb..914db0a 100644 --- a/app/app/src/main/java/tech/mercantec/easyeat/helpers/api.kt +++ b/app/app/src/main/java/tech/mercantec/easyeat/helpers/api.kt @@ -87,6 +87,14 @@ inline fun requestJson(ctx: Context, method: String, } } + if (response.body.isBlank()) { + // Return Unit or an empty default value depending on Res + return when (Res::class) { + Unit::class -> Unit as Res + else -> throw ApiRequestException("Expected JSON but got empty response", null) + } + } + try { return Json.decodeFromString(response.body) } catch (e: SerializationException) { diff --git a/app/app/src/main/java/tech/mercantec/easyeat/helpers/auth.kt b/app/app/src/main/java/tech/mercantec/easyeat/helpers/auth.kt index 672be6e..e2bc634 100644 --- a/app/app/src/main/java/tech/mercantec/easyeat/helpers/auth.kt +++ b/app/app/src/main/java/tech/mercantec/easyeat/helpers/auth.kt @@ -114,7 +114,15 @@ data class CreateRecipeRequest(val recipe: Recipe) fun createRecipe(ctx: Context, recipe: Recipe) { val request = CreateRecipeRequest(recipe) - - return requestJson(ctx, "POST", "/api/recipe/create", request) - + Log.i("recipe name:", recipe.name) + Log.i("recipe name:", recipe.description) + for (x in recipe.directions) { + Log.i("recipe name:", x.instructions) + } + for(x in recipe.ingredients){ + Log.i("recipe name:", x.name) + Log.i("recipe name:", x.amount.toString()) + Log.i("recipe name:", x.unit.toString()) + } + requestJson(ctx, "POST", "/api/recipe/create", request) } diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/MainActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/MainActivity.kt index fc948f2..f350625 100644 --- a/app/app/src/main/java/tech/mercantec/easyeat/ui/MainActivity.kt +++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/MainActivity.kt @@ -34,10 +34,5 @@ class MainActivity : AppCompatActivity() { ) setupActionBarWithNavController(navController, appBarConfiguration) navView.setupWithNavController(navController) - - findViewById(tech.mercantec.easyeat.R.id.add_dish).setOnClickListener { - val intent = Intent(this, CreateDishActivity::class.java) - startActivity(intent) - } } } diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/CreateDishAIActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/CreateDishAIActivity.kt new file mode 100644 index 0000000..82133f6 --- /dev/null +++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/CreateDishAIActivity.kt @@ -0,0 +1,16 @@ +package tech.mercantec.easyeat.ui.dishes + +import android.os.Bundle +import android.widget.LinearLayout +import androidx.appcompat.app.AppCompatActivity +import tech.mercantec.easyeat.R + +class CreateDishAIActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.create_dish_ai_form) + + } + +} diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/CreateDishActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/CreateDishActivity.kt index a6d0463..ff22d94 100644 --- a/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/CreateDishActivity.kt +++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/CreateDishActivity.kt @@ -60,16 +60,7 @@ class CreateDishActivity : AppCompatActivity() { ingredients = ingredientList ) - Log.i("recipe name:", recipe.name) - Log.i("recipe name:", recipe.description) - for (x in recipe.directions) { - Log.i("recipe name:", x.instructions) - } - for(x in recipe.ingredients){ - Log.i("recipe name:", x.name) - Log.i("recipe name:", x.amount.toString()) - Log.i("recipe name:", x.unit.toString()) - } + val progressDialog = ProgressDialog(this) progressDialog.setMessage("Loading...") progressDialog.show() diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishesFragment.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishesFragment.kt index d75d028..bed7736 100644 --- a/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishesFragment.kt +++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishesFragment.kt @@ -5,8 +5,10 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Button import android.widget.Toast import androidx.fragment.app.Fragment +import tech.mercantec.easyeat.R import tech.mercantec.easyeat.databinding.FragmentDishesBinding import tech.mercantec.easyeat.models.Dish @@ -27,10 +29,31 @@ class DishesFragment : Fragment() { val root: View = binding.root binding.addDish.setOnClickListener { - val intent = Intent(requireContext(), CreateDishActivity::class.java) - startActivity(intent) + val dialogView = LayoutInflater.from(requireContext()).inflate(R.layout.create_dish_modal_dialog, null) + + val dialog = android.app.AlertDialog.Builder(requireContext()) + .setView(dialogView) + .setCancelable(true) // tap outside to dismiss + .create() + + dialog.window?.setBackgroundDrawableResource(android.R.color.transparent) + + dialogView.findViewById