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 28dfc6f..b11548c 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
@@ -37,7 +37,7 @@ fun request(ctx: Context, method: String, path: String, data: String?, autoRefre
outputStream.write(data.toByteArray())
outputStream.flush()
}
-
+ Log.i("http", responseCode.toString())
if (responseCode == 401) {
if (!autoRefresh || refreshToken == null || !refreshAuthToken(ctx, refreshToken)) {
val intent = Intent(ctx, LoginActivity::class.java)
@@ -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..a804e43 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
@@ -1,8 +1,11 @@
package tech.mercantec.easyeat.helpers
+import android.content.ClipDescription
import android.content.Context
import android.util.Log
import kotlinx.serialization.Serializable
+import tech.mercantec.easyeat.models.Direction
+import tech.mercantec.easyeat.models.Ingredient
import tech.mercantec.easyeat.models.Recipe
@Serializable
data class LoginRequest(val emailUsr: String, val password: String)
@@ -109,12 +112,19 @@ fun changePassword(ctx: Context, oldPassword: String, newPassword: String) {
return requestJson(ctx, "PUT", "/api/User/change-password", request)
}
+
@Serializable
-data class CreateRecipeRequest(val recipe: Recipe)
+data class CreateRecipeRequest(val name: String, val description: String, val directions: List, val ingredients: List)
fun createRecipe(ctx: Context, recipe: Recipe) {
- val request = CreateRecipeRequest(recipe)
-
- return requestJson(ctx, "POST", "/api/recipe/create", request)
+ val request = CreateRecipeRequest(recipe.name, recipe.description, recipe.directions, recipe.ingredients)
+ requestJson(ctx, "POST", "/api/recipe/create", request)
+}
+
+@Serializable
+data class RecipeResponse(val id: Int, val name: String, val description: String)
+
+fun getRecipies(ctx: Context): List {
+ return requestJson>(ctx, "GET", "/api/Recipe/getall", null)
}
diff --git a/app/app/src/main/java/tech/mercantec/easyeat/models/dish.kt b/app/app/src/main/java/tech/mercantec/easyeat/models/dish.kt
index 1b84e3e..dc2f2a3 100644
--- a/app/app/src/main/java/tech/mercantec/easyeat/models/dish.kt
+++ b/app/app/src/main/java/tech/mercantec/easyeat/models/dish.kt
@@ -1,3 +1,3 @@
package tech.mercantec.easyeat.models
-public data class Dish(val name: String, val mainIngredient: String, val expense: Double)
+public data class DishListItem(val id: Int,val name: String, val description: String)
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..e6fdd74 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
@@ -1,5 +1,6 @@
package tech.mercantec.easyeat.ui.dishes
+import android.app.Activity
import android.app.ProgressDialog
import android.content.Context
import android.os.Bundle
@@ -60,16 +61,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()
@@ -92,15 +84,10 @@ class CreateDishActivity : AppCompatActivity() {
Toast.makeText(this, "Password changed successfully", Toast.LENGTH_LONG).show()
}
+ setResult(Activity.RESULT_OK)
finish()
}
}
-
-
-
-
-
-
}
private fun addIngredientRow() {
diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishAdapter.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishAdapter.kt
index cde2497..5b72d04 100644
--- a/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishAdapter.kt
+++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishAdapter.kt
@@ -7,22 +7,20 @@ import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.TextView
import tech.mercantec.easyeat.R
-import tech.mercantec.easyeat.models.Dish
+import tech.mercantec.easyeat.models.DishListItem
-class DishAdapter(context: Context, dishes: Array) :
- ArrayAdapter(context, 0, dishes) {
+class DishAdapter(context: Context, dishes: List) :
+ ArrayAdapter(context, 0, dishes) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val dish = getItem(position)
val view = convertView ?: LayoutInflater.from(context).inflate(R.layout.dish_list_item, parent, false)
val nameTextView = view.findViewById(R.id.dishName)
- val ingredientTextView = view.findViewById(R.id.mainIngredient)
- val expenseTextView = view.findViewById(R.id.expense)
+ val descriptionTextView = view.findViewById(R.id.descriptionTextView)
nameTextView.text = "Name: ${dish?.name}"
- ingredientTextView.text = "Main Ingredient: ${dish?.mainIngredient}"
- expenseTextView.text = "Expense: ${dish?.expense} kr"
+ descriptionTextView.text = "Description: ${dish?.description}"
return view
}
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..2910543 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
@@ -1,21 +1,33 @@
package tech.mercantec.easyeat.ui.dishes
+import android.app.Activity
import android.content.Intent
import android.os.Bundle
+import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.Toast
+import androidx.activity.result.ActivityResultLauncher
+import androidx.activity.result.contract.ActivityResultContracts
import androidx.fragment.app.Fragment
+import androidx.lifecycle.lifecycleScope
+import kotlinx.coroutines.launch
+import tech.mercantec.easyeat.R
import tech.mercantec.easyeat.databinding.FragmentDishesBinding
-import tech.mercantec.easyeat.models.Dish
+import tech.mercantec.easyeat.helpers.ApiRequestException
+import tech.mercantec.easyeat.helpers.RecipeResponse
+import tech.mercantec.easyeat.helpers.getRecipies
+import tech.mercantec.easyeat.helpers.login
+import tech.mercantec.easyeat.models.DishListItem
+import tech.mercantec.easyeat.ui.MainActivity
+import kotlin.concurrent.thread
class DishesFragment : Fragment() {
private var _binding: FragmentDishesBinding? = null
-
- // This property is only valid between onCreateView and
- // onDestroyView.
+ private lateinit var createDishLauncher: ActivityResultLauncher
private val binding get() = _binding!!
override fun onCreateView(
@@ -26,42 +38,72 @@ class DishesFragment : Fragment() {
_binding = FragmentDishesBinding.inflate(inflater, container, false)
val root: View = binding.root
- binding.addDish.setOnClickListener {
- val intent = Intent(requireContext(), CreateDishActivity::class.java)
- startActivity(intent)
- }
+ loadRecipes()
- context?.let { context ->
- binding.dishesList.setOnItemClickListener { parent, view, position, id ->
- val selectedItem = parent.getItemAtPosition(position) as Dish
- Toast.makeText(context, "you selected $selectedItem.name that costs ${selectedItem.expense} kr.", Toast.LENGTH_LONG).show()
+ binding.addDish.setOnClickListener {
+ 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