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