diff --git a/app/src/main/java/com/devkor/kodaero/ApiService.kt b/app/src/main/java/com/devkor/kodaero/ApiService.kt index c756d21..f587d25 100644 --- a/app/src/main/java/com/devkor/kodaero/ApiService.kt +++ b/app/src/main/java/com/devkor/kodaero/ApiService.kt @@ -9,6 +9,8 @@ import retrofit2.http.PATCH import retrofit2.http.POST import retrofit2.http.Path import retrofit2.http.Query +import android.os.Parcelable +import kotlinx.parcelize.Parcelize data class ApiResponse( val statusCode: Int, @@ -148,6 +150,7 @@ data class UserTokens( val refreshToken: String ) +@Parcelize data class UserInfo( val username: String, val email: String, @@ -156,7 +159,7 @@ data class UserInfo( val role: String, val level: String, val categoryCount: Int -) +) : Parcelable data class BuildingListResponse( val list: List diff --git a/app/src/main/java/com/devkor/kodaero/EditNameFragment.kt b/app/src/main/java/com/devkor/kodaero/EditNameFragment.kt index c82eb92..3afc335 100644 --- a/app/src/main/java/com/devkor/kodaero/EditNameFragment.kt +++ b/app/src/main/java/com/devkor/kodaero/EditNameFragment.kt @@ -3,6 +3,7 @@ package com.devkor.kodaero import android.content.Context import android.content.Intent import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -10,6 +11,7 @@ import android.view.inputmethod.InputMethodManager import android.widget.Toast import androidx.activity.addCallback import androidx.fragment.app.Fragment +import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import com.devkor.kodaero.databinding.FragmentEditNameBinding @@ -67,12 +69,7 @@ class EditNameFragment : Fragment() { viewModel.editUserName(newUsername) - TokenManager.clearTokensAndUserInfo() - - val splashIntent = Intent(requireActivity(), SplashActivity::class.java) - startActivity(splashIntent) - - requireActivity().finish() + checkTokensAndFetchUserInfo() } binding.editNameNoButton.setOnClickListener { @@ -95,6 +92,35 @@ class EditNameFragment : Fragment() { inputMethodManager.hideSoftInputFromWindow(binding.editNameText.windowToken, 0) } + private fun checkTokensAndFetchUserInfo() { + val accessToken = TokenManager.getAccessToken() + val refreshToken = TokenManager.getRefreshToken() + + if (accessToken != null && refreshToken != null) { + viewModel.fetchUserInfo() + + viewModel.userInfo.observe(viewLifecycleOwner, Observer { userInfo -> + if (userInfo != null) { + TokenManager.saveUserInfo(userInfo) + + val bundle = Bundle().apply { + putParcelable("userInfo", userInfo) + } + + val mypageFragment = MypageFragment().apply { + arguments = bundle + } + + val transaction = requireActivity().supportFragmentManager.beginTransaction() + requireActivity().supportFragmentManager.popBackStack() + transaction.add(R.id.main_container, mypageFragment) + transaction.addToBackStack("MypageFragment") + transaction.commit() + } + }) + } + } + override fun onDestroyView() { super.onDestroyView() _binding = null diff --git a/app/src/main/java/com/devkor/kodaero/MypageFragment.kt b/app/src/main/java/com/devkor/kodaero/MypageFragment.kt index 10cc257..4017b87 100644 --- a/app/src/main/java/com/devkor/kodaero/MypageFragment.kt +++ b/app/src/main/java/com/devkor/kodaero/MypageFragment.kt @@ -23,7 +23,7 @@ class MypageFragment : Fragment() { _binding = FragmentMypageBinding.inflate(inflater, container, false) val view = binding.root - val userInfo = TokenManager.getUserInfo() + val userInfo = arguments?.getParcelable("userInfo") ?: TokenManager.getUserInfo() userInfo?.let { binding.username.text = it.username @@ -149,4 +149,5 @@ class MypageFragment : Fragment() { val mainActivity = activity as? MainActivity mainActivity?.binding?.bottomNavigationView?.selectedItemId = R.id.fragment_home } + } diff --git a/app/src/main/res/layout/fragment_building_detail.xml b/app/src/main/res/layout/fragment_building_detail.xml index dc31d2a..1bd4ab8 100644 --- a/app/src/main/res/layout/fragment_building_detail.xml +++ b/app/src/main/res/layout/fragment_building_detail.xml @@ -90,7 +90,8 @@ android:id="@+id/show_operating_time_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="5dp" + android:paddingVertical="5dp" + android:paddingEnd="10dp" app:layout_constraintTop_toBottomOf="@id/building_detail_address" app:layout_constraintStart_toEndOf="@id/building_detail_guideline1"> @@ -140,7 +141,6 @@ android:id="@+id/building_detail_operating_time_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="5dp" android:orientation="vertical" android:visibility="gone" app:layout_constraintTop_toBottomOf="@id/show_operating_time_layout" @@ -224,7 +224,7 @@ android:id="@+id/building_detail_facility_types" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginTop="10dp" + android:layout_marginTop="5dp" android:orientation="horizontal" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" tools:listitem="@layout/item_building_detail_types" @@ -316,9 +316,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintTop_toBottomOf="@+id/building_detail_boundary" - app:layout_constraintVertical_bias="0.5"> + app:layout_constraintTop_toBottomOf="@+id/building_detail_boundary">