From a446ad934c248ccdb60746d8f09f79d472275240 Mon Sep 17 00:00:00 2001 From: Reimar Date: Mon, 5 May 2025 13:23:56 +0200 Subject: [PATCH 1/3] Add button to add shopping item --- .../tech/mercantec/easyeat/helpers/api.kt | 4 +- .../ui/shopping_list/ShoppingListFragment.kt | 25 ++++++++ .../layout/dialog_add_to_shopping_list.xml | 63 +++++++++++++++++++ .../res/layout/fragment_shopping_list.xml | 28 +++++++-- app/app/src/main/res/values/strings.xml | 13 ++++ 5 files changed, 126 insertions(+), 7 deletions(-) create mode 100644 app/app/src/main/res/layout/dialog_add_to_shopping_list.xml 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 e9a472d..fd34dc0 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 @@ -39,8 +39,8 @@ fun request(ctx: Context, method: String, path: String, data: String?, autoRefre outputStream.flush() } - if (responseCode == 401 && refreshToken != null) { - if (!autoRefresh || !refreshAuthToken(ctx, refreshToken)) { + if (responseCode == 401) { + if (!autoRefresh || refreshToken == null || !refreshAuthToken(ctx, refreshToken)) { val intent = Intent(ctx, LoginActivity::class.java) intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK ctx.startActivity(intent) diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingListFragment.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingListFragment.kt index 81b5d99..fef40ae 100644 --- a/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingListFragment.kt +++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingListFragment.kt @@ -1,10 +1,14 @@ package tech.mercantec.easyeat.ui.shopping_list +import android.app.AlertDialog import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.Spinner import androidx.fragment.app.Fragment +import tech.mercantec.easyeat.R import tech.mercantec.easyeat.databinding.FragmentShoppingListBinding class ShoppingListFragment : Fragment() { @@ -23,6 +27,27 @@ class ShoppingListFragment : Fragment() { _binding = FragmentShoppingListBinding.inflate(inflater, container, false) val root: View = binding.root + binding.addToShoppingList.setOnClickListener { + val view = requireActivity().layoutInflater.inflate(R.layout.dialog_add_to_shopping_list, null) + + val dialog = AlertDialog.Builder(activity) + .setView(view) + .setPositiveButton(R.string.add_label, { dialog, id -> + + }) + .setNegativeButton(R.string.cancel_label, { dialog, id -> + dialog.cancel() + }) + .create() + + dialog.show() + + val adapter = ArrayAdapter.createFromResource(requireContext(), R.array.units, android.R.layout.simple_spinner_item) + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + + dialog.findViewById(R.id.unit_selector).adapter = adapter + } + return root } diff --git a/app/app/src/main/res/layout/dialog_add_to_shopping_list.xml b/app/app/src/main/res/layout/dialog_add_to_shopping_list.xml new file mode 100644 index 0000000..3d9ae2d --- /dev/null +++ b/app/app/src/main/res/layout/dialog_add_to_shopping_list.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + diff --git a/app/app/src/main/res/layout/fragment_shopping_list.xml b/app/app/src/main/res/layout/fragment_shopping_list.xml index 33133f0..17466ab 100644 --- a/app/app/src/main/res/layout/fragment_shopping_list.xml +++ b/app/app/src/main/res/layout/fragment_shopping_list.xml @@ -1,9 +1,27 @@ - + android:layout_height="match_parent"> - + + + + + diff --git a/app/app/src/main/res/values/strings.xml b/app/app/src/main/res/values/strings.xml index 96753c1..3868279 100644 --- a/app/app/src/main/res/values/strings.xml +++ b/app/app/src/main/res/values/strings.xml @@ -26,4 +26,17 @@ General Ingredients Instructions + Cancel + Add shopping item + Amount + 500 + Name + Beef + + g + kg + ml + dl + l + From 0c1f167e20cf39296db703dd48ef0f279b93af70 Mon Sep 17 00:00:00 2001 From: Reimar Date: Mon, 5 May 2025 13:20:33 +0200 Subject: [PATCH 2/3] Implement updating username/email and changing password and logout --- app/app/src/main/AndroidManifest.xml | 11 ++- .../easyeat/ChangePasswordActivity.kt | 59 ++++++++++++++++ .../mercantec/easyeat/EditProfileActivity.kt | 49 +++++++++++++ .../tech/mercantec/easyeat/helpers/auth.kt | 32 ++++++++- .../easyeat/ui/profile/ProfileFragment.kt | 25 +++++++ .../res/layout/activity_change_password.xml | 68 +++++++++++++++++++ .../main/res/layout/activity_edit_profile.xml | 51 ++++++++++++++ .../src/main/res/layout/activity_login.xml | 6 +- .../src/main/res/layout/fragment_profile.xml | 35 ++++++++-- app/app/src/main/res/values/strings.xml | 6 ++ 10 files changed, 330 insertions(+), 12 deletions(-) create mode 100644 app/app/src/main/java/tech/mercantec/easyeat/ChangePasswordActivity.kt create mode 100644 app/app/src/main/java/tech/mercantec/easyeat/EditProfileActivity.kt create mode 100644 app/app/src/main/res/layout/activity_change_password.xml create mode 100644 app/app/src/main/res/layout/activity_edit_profile.xml diff --git a/app/app/src/main/AndroidManifest.xml b/app/app/src/main/AndroidManifest.xml index b07b3bd..247055f 100644 --- a/app/app/src/main/AndroidManifest.xml +++ b/app/app/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ + + android:name=".CreateDishActivity" + android:exported="false" /> + + + \ No newline at end of file diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ChangePasswordActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/ChangePasswordActivity.kt new file mode 100644 index 0000000..5831967 --- /dev/null +++ b/app/app/src/main/java/tech/mercantec/easyeat/ChangePasswordActivity.kt @@ -0,0 +1,59 @@ +package tech.mercantec.easyeat + +import android.app.ProgressDialog +import android.os.Bundle +import android.widget.Button +import android.widget.EditText +import android.widget.Toast +import androidx.activity.enableEdgeToEdge +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import tech.mercantec.easyeat.helpers.ApiRequestException +import tech.mercantec.easyeat.helpers.changePassword +import kotlin.concurrent.thread + +class ChangePasswordActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_change_password) + + findViewById