diff --git a/app/app/src/main/AndroidManifest.xml b/app/app/src/main/AndroidManifest.xml
index b07b3bd..18a13cb 100644
--- a/app/app/src/main/AndroidManifest.xml
+++ b/app/app/src/main/AndroidManifest.xml
@@ -1,6 +1,7 @@
+
+ android:name=".ui.dishes.CreateDishActivity"
+ android:exported="false" />
+
+
+
\ No newline at end of file
diff --git a/app/app/src/main/java/tech/mercantec/easyeat/SplashActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/SplashActivity.kt
index d6141ce..796f462 100644
--- a/app/app/src/main/java/tech/mercantec/easyeat/SplashActivity.kt
+++ b/app/app/src/main/java/tech/mercantec/easyeat/SplashActivity.kt
@@ -4,6 +4,8 @@ import android.app.Activity
import android.content.Intent
import android.os.Bundle
import tech.mercantec.easyeat.helpers.isLoggedIn
+import tech.mercantec.easyeat.ui.MainActivity
+import tech.mercantec.easyeat.ui.auth.WelcomeActivity
class SplashActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
@@ -17,4 +19,4 @@ class SplashActivity : Activity() {
startActivity(Intent(this, MainActivity::class.java))
}
-}
\ No newline at end of file
+}
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..c3297eb 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
@@ -3,7 +3,6 @@ package tech.mercantec.easyeat.helpers
import android.content.Context
import android.content.Intent
import android.util.Log
-import android.widget.Toast
import kotlinx.serialization.Serializable
import kotlinx.serialization.SerializationException
import tech.mercantec.easyeat.BuildConfig
@@ -11,7 +10,7 @@ import java.net.HttpURLConnection
import java.net.URL
import kotlinx.serialization.json.*
import kotlinx.serialization.serializer
-import tech.mercantec.easyeat.LoginActivity
+import tech.mercantec.easyeat.ui.auth.LoginActivity
import java.io.IOException
class ApiRequestException(message: String, cause: Throwable?) : Exception(message, cause)
@@ -39,8 +38,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/helpers/auth.kt b/app/app/src/main/java/tech/mercantec/easyeat/helpers/auth.kt
index 6e5e54b..7d483c0 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
@@ -24,6 +24,16 @@ fun login(ctx: Context, email: String, password: String) {
}
}
+fun logout(ctx: Context) {
+ with (ctx.getSharedPreferences("easyeat", Context.MODE_PRIVATE).edit()) {
+ remove("user-id")
+ remove("username")
+ remove("auth-token")
+ remove("refresh-token")
+ apply()
+ }
+}
+
@Serializable
data class CreateUserRequest(val email: String, val userName: String, val password: String)
@@ -79,7 +89,23 @@ fun isLoggedIn(ctx: Context): Boolean {
data class UserInfoResponse(val id: Int, val userName: String, val email: String)
fun getUserInfo(ctx: Context): UserInfoResponse {
- val response = requestJson(ctx, "GET", "/api/User/get", null)
-
- return response
+ return requestJson(ctx, "GET", "/api/User/get", null)
+}
+
+@Serializable
+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)
+}
+
+@Serializable
+data class ChangePasswordRequest(val oldPassword: String, val newPassword: String)
+
+fun changePassword(ctx: Context, oldPassword: String, newPassword: String) {
+ val request = ChangePasswordRequest(oldPassword, newPassword)
+
+ return requestJson(ctx, "PUT", "/api/User/change-password", request)
}
diff --git a/app/app/src/main/java/tech/mercantec/easyeat/MainActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/MainActivity.kt
similarity index 70%
rename from app/app/src/main/java/tech/mercantec/easyeat/MainActivity.kt
rename to app/app/src/main/java/tech/mercantec/easyeat/ui/MainActivity.kt
index 8675456..fc948f2 100644
--- a/app/app/src/main/java/tech/mercantec/easyeat/MainActivity.kt
+++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/MainActivity.kt
@@ -1,9 +1,7 @@
-package tech.mercantec.easyeat
+package tech.mercantec.easyeat.ui
import android.content.Intent
import android.os.Bundle
-import android.widget.ListView
-import android.widget.Toast
import com.google.android.material.bottomnavigation.BottomNavigationView
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.findNavController
@@ -12,10 +10,7 @@ import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import com.google.android.material.floatingactionbutton.FloatingActionButton
import tech.mercantec.easyeat.databinding.ActivityMainBinding
-import tech.mercantec.easyeat.helpers.getUserInfo
-import tech.mercantec.easyeat.models.Dish
-import tech.mercantec.easyeat.ui.dishes.DishAdapter
-import kotlin.concurrent.thread
+import tech.mercantec.easyeat.ui.dishes.CreateDishActivity
class MainActivity : AppCompatActivity() {
@@ -29,16 +24,18 @@ class MainActivity : AppCompatActivity() {
val navView: BottomNavigationView = binding.navView
- val navController = findNavController(R.id.nav_host_fragment_activity_main)
+ val navController = findNavController(tech.mercantec.easyeat.R.id.nav_host_fragment_activity_main)
val appBarConfiguration = AppBarConfiguration(
setOf(
- R.id.navigation_dishes, R.id.navigation_shopping_list, R.id.navigation_profile
+ tech.mercantec.easyeat.R.id.navigation_dishes,
+ tech.mercantec.easyeat.R.id.navigation_shopping_list,
+ tech.mercantec.easyeat.R.id.navigation_profile
)
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
- findViewById(R.id.add_dish).setOnClickListener {
+ 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/LoginActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/auth/LoginActivity.kt
similarity index 93%
rename from app/app/src/main/java/tech/mercantec/easyeat/LoginActivity.kt
rename to app/app/src/main/java/tech/mercantec/easyeat/ui/auth/LoginActivity.kt
index a56504a..8512270 100644
--- a/app/app/src/main/java/tech/mercantec/easyeat/LoginActivity.kt
+++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/auth/LoginActivity.kt
@@ -1,4 +1,4 @@
-package tech.mercantec.easyeat
+package tech.mercantec.easyeat.ui.auth
import android.app.ProgressDialog
import android.content.Intent
@@ -7,6 +7,8 @@ import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
+import tech.mercantec.easyeat.ui.MainActivity
+import tech.mercantec.easyeat.R
import tech.mercantec.easyeat.helpers.ApiRequestException
import tech.mercantec.easyeat.helpers.login
import kotlin.concurrent.thread
diff --git a/app/app/src/main/java/tech/mercantec/easyeat/RegisterActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/auth/RegisterActivity.kt
similarity index 96%
rename from app/app/src/main/java/tech/mercantec/easyeat/RegisterActivity.kt
rename to app/app/src/main/java/tech/mercantec/easyeat/ui/auth/RegisterActivity.kt
index d3c0037..ecc7b0c 100644
--- a/app/app/src/main/java/tech/mercantec/easyeat/RegisterActivity.kt
+++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/auth/RegisterActivity.kt
@@ -1,4 +1,4 @@
-package tech.mercantec.easyeat
+package tech.mercantec.easyeat.ui.auth
import android.app.ProgressDialog
import android.content.Intent
@@ -7,6 +7,7 @@ import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
+import tech.mercantec.easyeat.R
import tech.mercantec.easyeat.helpers.ApiRequestException
import tech.mercantec.easyeat.helpers.register
import kotlin.concurrent.thread
diff --git a/app/app/src/main/java/tech/mercantec/easyeat/WelcomeActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/auth/WelcomeActivity.kt
similarity index 80%
rename from app/app/src/main/java/tech/mercantec/easyeat/WelcomeActivity.kt
rename to app/app/src/main/java/tech/mercantec/easyeat/ui/auth/WelcomeActivity.kt
index a43f389..41cc1ed 100644
--- a/app/app/src/main/java/tech/mercantec/easyeat/WelcomeActivity.kt
+++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/auth/WelcomeActivity.kt
@@ -1,12 +1,10 @@
-package tech.mercantec.easyeat
+package tech.mercantec.easyeat.ui.auth
import android.content.Intent
import android.os.Bundle
import android.widget.Button
-import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
-import androidx.core.view.ViewCompat
-import androidx.core.view.WindowInsetsCompat
+import tech.mercantec.easyeat.R
class WelcomeActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
diff --git a/app/app/src/main/java/tech/mercantec/easyeat/CreateDishActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/CreateDishActivity.kt
similarity index 97%
rename from app/app/src/main/java/tech/mercantec/easyeat/CreateDishActivity.kt
rename to app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/CreateDishActivity.kt
index d3038e4..52666df 100644
--- a/app/app/src/main/java/tech/mercantec/easyeat/CreateDishActivity.kt
+++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/CreateDishActivity.kt
@@ -1,4 +1,4 @@
-package tech.mercantec.easyeat
+package tech.mercantec.easyeat.ui.dishes
import android.os.Bundle
import android.util.Log
@@ -10,7 +10,7 @@ import android.widget.ImageButton
import android.widget.LinearLayout
import android.widget.Spinner
import androidx.appcompat.app.AppCompatActivity
-import androidx.core.content.ContentProviderCompat.requireContext
+import tech.mercantec.easyeat.R
import tech.mercantec.easyeat.models.Ingredient
class CreateDishActivity : AppCompatActivity() {
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 72feca8..d75d028 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
@@ -7,7 +7,6 @@ import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
-import tech.mercantec.easyeat.CreateDishActivity
import tech.mercantec.easyeat.databinding.FragmentDishesBinding
import tech.mercantec.easyeat.models.Dish
diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/profile/ChangePasswordActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/profile/ChangePasswordActivity.kt
new file mode 100644
index 0000000..15e3738
--- /dev/null
+++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/profile/ChangePasswordActivity.kt
@@ -0,0 +1,57 @@
+package tech.mercantec.easyeat.ui.profile
+
+import android.app.ProgressDialog
+import android.os.Bundle
+import android.widget.Button
+import android.widget.EditText
+import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
+import tech.mercantec.easyeat.R
+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