From b8fa54539fbbcd6c084cfe7e1250cfd1cac550d6 Mon Sep 17 00:00:00 2001 From: Reimar Date: Tue, 6 May 2025 14:31:04 +0200 Subject: [PATCH 1/2] Don't return user object when updating profile --- backend/API/DBAccess/UserDBAccess.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/API/DBAccess/UserDBAccess.cs b/backend/API/DBAccess/UserDBAccess.cs index 9118433..ac7711c 100644 --- a/backend/API/DBAccess/UserDBAccess.cs +++ b/backend/API/DBAccess/UserDBAccess.cs @@ -77,7 +77,7 @@ namespace API.DBAccess bool saved = await _context.SaveChangesAsync() == 1; - if (saved) { return new OkObjectResult(user); } + if (saved) { return new OkObjectResult(true); } return new ConflictObjectResult(new { message = "Could not save to database" }); } From 87b5fbb014bbe41fe8fe38c2aa09608cc6b3863c Mon Sep 17 00:00:00 2001 From: Reimar Date: Tue, 6 May 2025 14:37:48 +0200 Subject: [PATCH 2/2] Update profile page immediately as user info has changed --- .../tech/mercantec/easyeat/helpers/auth.kt | 2 +- .../easyeat/ui/profile/EditProfileActivity.kt | 6 ++++ .../easyeat/ui/profile/ProfileFragment.kt | 35 ++++++++++++++++--- .../src/main/res/layout/fragment_profile.xml | 3 +- 4 files changed, 39 insertions(+), 7 deletions(-) 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 7d483c0..01849c9 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 @@ -98,7 +98,7 @@ data class UpdateUserRequest(val userName: String, val email: String) fun updateUser(ctx: Context, username: String, email: String) { val request = UpdateUserRequest(username, email) - return requestJson(ctx, "PUT", "/api/User/update", request) + requestJson(ctx, "PUT", "/api/User/update", request) } @Serializable diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/profile/EditProfileActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/profile/EditProfileActivity.kt index acf8a4c..ff78d51 100644 --- a/app/app/src/main/java/tech/mercantec/easyeat/ui/profile/EditProfileActivity.kt +++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/profile/EditProfileActivity.kt @@ -1,6 +1,7 @@ package tech.mercantec.easyeat.ui.profile import android.app.ProgressDialog +import android.content.Intent import android.os.Bundle import android.widget.Button import android.widget.EditText @@ -43,6 +44,11 @@ class EditProfileActivity : AppCompatActivity() { } } + val intent = Intent() + intent.putExtra("username", username) + intent.putExtra("email", email) + setResult(RESULT_OK, intent) + finish() } } diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/profile/ProfileFragment.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/profile/ProfileFragment.kt index 6f735f5..7c8e27c 100644 --- a/app/app/src/main/java/tech/mercantec/easyeat/ui/profile/ProfileFragment.kt +++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/profile/ProfileFragment.kt @@ -1,11 +1,15 @@ package tech.mercantec.easyeat.ui.profile +import android.app.Activity import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast +import androidx.activity.result.ActivityResultLauncher +import androidx.activity.result.contract.ActivityResultContracts +import androidx.core.view.children import androidx.fragment.app.Fragment import tech.mercantec.easyeat.ui.auth.WelcomeActivity import tech.mercantec.easyeat.databinding.FragmentProfileBinding @@ -16,8 +20,25 @@ import tech.mercantec.easyeat.helpers.logout import kotlin.concurrent.thread class ProfileFragment : Fragment() { + private lateinit var launcher: ActivityResultLauncher + private lateinit var binding: FragmentProfileBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + launcher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.data == null || it.resultCode != Activity.RESULT_OK) return@registerForActivityResult + + binding.username.text = it.data!!.getStringExtra("username") + binding.email.text = it.data!!.getStringExtra("email") + } + } + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { - val binding = FragmentProfileBinding.inflate(inflater, container, false) + binding = FragmentProfileBinding.inflate(inflater, container, false) + + binding.layout.children.forEach { it.visibility = View.GONE } + binding.loading.visibility = View.VISIBLE thread { val userInfo: UserInfoResponse @@ -29,6 +50,11 @@ class ProfileFragment : Fragment() { } return@thread + } finally { + activity?.runOnUiThread { + binding.layout.children.forEach { it.visibility = View.VISIBLE } + binding.loading.visibility = View.GONE + } } activity?.runOnUiThread { @@ -37,9 +63,10 @@ class ProfileFragment : Fragment() { binding.editProfile.setOnClickListener { val intent = Intent(activity, EditProfileActivity::class.java) - intent.putExtra("username", userInfo.userName) - intent.putExtra("email", userInfo.email) - startActivity(intent) + intent.putExtra("username", binding.username.text) + intent.putExtra("email", binding.email.text) + + launcher.launch(intent) } } } diff --git a/app/app/src/main/res/layout/fragment_profile.xml b/app/app/src/main/res/layout/fragment_profile.xml index f2708c8..be15d10 100644 --- a/app/app/src/main/res/layout/fragment_profile.xml +++ b/app/app/src/main/res/layout/fragment_profile.xml @@ -1,6 +1,7 @@