diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/data/remote/IntroApi.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/data/remote/IntroApi.kt index 47643db..1a15bd6 100644 --- a/Aos/app/src/main/java/com/avengers/nibobnebob/data/remote/IntroApi.kt +++ b/Aos/app/src/main/java/com/avengers/nibobnebob/data/remote/IntroApi.kt @@ -10,7 +10,7 @@ import retrofit2.http.POST interface IntroApi { - @POST("/api/user") + @POST("api/user") suspend fun signup( @Body params: DetailSignupRequest ): Response diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/data/remote/ValidationApi.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/data/remote/ValidationApi.kt index b77d1b2..8823d9c 100644 --- a/Aos/app/src/main/java/com/avengers/nibobnebob/data/remote/ValidationApi.kt +++ b/Aos/app/src/main/java/com/avengers/nibobnebob/data/remote/ValidationApi.kt @@ -8,12 +8,12 @@ import retrofit2.http.Path interface ValidationApi { - @GET("/api/user/nickname/{nickname}/exists") + @GET("api/user/nickname/{nickname}/exists") suspend fun nickValidation( @Path("nickname") nickname: String ): Response> - @GET("/api/user/email/{email}/exists") + @GET("api/user/email/{email}/exists") suspend fun emailValidation( @Path("email") email: String ): Response> diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/customview/CalendarDatePicker.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/customview/CalendarDatePicker.kt new file mode 100644 index 0000000..3faca08 --- /dev/null +++ b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/customview/CalendarDatePicker.kt @@ -0,0 +1,27 @@ +package com.avengers.nibobnebob.presentation.customview + + +import androidx.fragment.app.FragmentManager +import com.avengers.nibobnebob.presentation.ui.toDateString +import com.google.android.material.datepicker.MaterialDatePicker + +class CalendarDatePicker( + private val onSelectDateListener: (String) -> Unit +) { + private val datePicker = MaterialDatePicker.Builder.datePicker() + .setTitleText("생일을 고르세요") + .setSelection(MaterialDatePicker.todayInUtcMilliseconds()) + .build() + + init{ + datePicker.addOnPositiveButtonClickListener { + onSelectDateListener(it.toDateString()) + } + } + + fun show(fragmentManager: FragmentManager){ + datePicker.show(fragmentManager,"") + } +} + + diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/customview/RestaurantBottomSheet.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/customview/RestaurantBottomSheet.kt new file mode 100644 index 0000000..37ced25 --- /dev/null +++ b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/customview/RestaurantBottomSheet.kt @@ -0,0 +1,55 @@ +package com.avengers.nibobnebob.presentation.customview + +import android.content.Context +import android.view.LayoutInflater +import com.avengers.nibobnebob.R +import com.avengers.nibobnebob.databinding.BottomSheetRestaurantBinding +import com.avengers.nibobnebob.presentation.ui.main.home.model.UiMarkerData +import com.google.android.material.bottomsheet.BottomSheetDialog + + +class RestaurantBottomSheet( + context: Context, + private val data: UiMarkerData, + private val onClickAddWishRestaurant: (Int, Boolean) -> Boolean, + private val onClickAddMyRestaurant: (Int) -> Unit, + private val onClickGoReview: (Int) -> Unit +): BottomSheetDialog(context) { + + private var binding: BottomSheetRestaurantBinding + private var isWishState = data.isInWishList + + init{ + binding = BottomSheetRestaurantBinding.inflate(LayoutInflater.from(context)) + setContentView(binding.root) + binding.item = data + setBottomSheetListener() + } + + private fun setBottomSheetListener(){ + binding.btnAddMyRestaurant.setOnClickListener { + onClickAddMyRestaurant(data.id) + dismiss() + } + + binding.btnAddWishRestaurant.setOnClickListener { + val result = onClickAddWishRestaurant(data.id, data.isInWishList) + + if (result) { + isWishState = !isWishState + + if (isWishState) { + binding.btnAddWishRestaurant.setBackgroundResource(R.drawable.ic_star_full) + } else { + binding.btnAddWishRestaurant.setBackgroundResource(R.drawable.ic_star_border) + } + } + } + + binding.btnGoReview.setOnClickListener { + onClickGoReview(data.id) + dismiss() + } + } + +} diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/DataExtensions.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/DataExtensions.kt new file mode 100644 index 0000000..671dfb8 --- /dev/null +++ b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/DataExtensions.kt @@ -0,0 +1,13 @@ +package com.avengers.nibobnebob.presentation.ui + +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale +import java.util.TimeZone + +internal fun Long.toDateString(): String { + val dateFormat = SimpleDateFormat("yyyy/MM/dd", Locale.getDefault()) + dateFormat.timeZone = TimeZone.getTimeZone("UTC") + val date = Date(this) + return dateFormat.format(date) +} \ No newline at end of file diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/UiExtensions.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/UiExtensions.kt new file mode 100644 index 0000000..8544693 --- /dev/null +++ b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/UiExtensions.kt @@ -0,0 +1,54 @@ +package com.avengers.nibobnebob.presentation.ui + +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import android.location.LocationManager +import android.provider.Settings +import android.view.View +import android.view.inputmethod.InputMethodManager +import android.widget.Toast +import androidx.core.content.ContextCompat + +internal fun Context.hideKeyboard(view: View) { + val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + imm.hideSoftInputFromWindow(view.windowToken, 0) +} + +internal fun Context.requestLocationPermission( + permissionList: Array, + onLauncherStart: () -> Unit, + onTrackingChangeListener: (Boolean) -> Unit +) { + var permissionFlag = false + permissionList.forEach { permission -> + permissionFlag = ContextCompat.checkSelfPermission( + this, + permission + ) == PackageManager.PERMISSION_GRANTED + } + + if (permissionFlag) { + checkLocationIsOn(){ + onTrackingChangeListener(it) + } + } else { + onLauncherStart() + Toast.makeText(this, "위치권한을 허용해주세요", Toast.LENGTH_SHORT).show() + } +} + + +internal fun Context.checkLocationIsOn( + onTrackingChangeListener: (Boolean) -> Unit +) { + val locationManager = + getSystemService(Context.LOCATION_SERVICE) as LocationManager + if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { + onTrackingChangeListener(true) + } else { + startActivity(Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)) + Toast.makeText(this, "휴대폰 GPS를 켜주세요", Toast.LENGTH_SHORT).show() + onTrackingChangeListener(false) + } +} \ No newline at end of file diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/intro/signup/DetailSignupFragment.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/intro/signup/DetailSignupFragment.kt index 8087c1b..973e56e 100644 --- a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/intro/signup/DetailSignupFragment.kt +++ b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/intro/signup/DetailSignupFragment.kt @@ -2,9 +2,7 @@ package com.avengers.nibobnebob.presentation.ui.intro.signup import android.os.Bundle import android.view.View -import android.widget.TextView import androidx.core.content.ContextCompat -import androidx.databinding.BindingAdapter import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels import androidx.navigation.NavController @@ -13,10 +11,9 @@ import androidx.navigation.fragment.navArgs import com.avengers.nibobnebob.R import com.avengers.nibobnebob.databinding.FragmentDetailSignupBinding import com.avengers.nibobnebob.presentation.base.BaseFragment +import com.avengers.nibobnebob.presentation.customview.CalendarDatePicker import com.avengers.nibobnebob.presentation.ui.intro.IntroViewModel -import com.avengers.nibobnebob.presentation.util.showCalendarDatePicker import com.google.android.material.textfield.MaterialAutoCompleteTextView -import com.google.android.material.textfield.TextInputLayout import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint @@ -65,9 +62,9 @@ class DetailSignupFragment : private fun setDateBtnListener() { binding.tilBirth.setEndIconOnClickListener { - showCalendarDatePicker(parentFragmentManager) { + CalendarDatePicker{ viewModel.setBirth(it) - } + }.show(parentFragmentManager) } } diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/intro/signup/DetailSignupViewModel.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/intro/signup/DetailSignupViewModel.kt index 5b1feb8..3adc044 100644 --- a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/intro/signup/DetailSignupViewModel.kt +++ b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/intro/signup/DetailSignupViewModel.kt @@ -6,7 +6,7 @@ import com.avengers.nibobnebob.data.model.BaseState import com.avengers.nibobnebob.data.model.request.DetailSignupRequest import com.avengers.nibobnebob.data.repository.IntroRepository import com.avengers.nibobnebob.data.repository.ValidationRepository -import com.avengers.nibobnebob.presentation.util.Validation +import com.avengers.nibobnebob.presentation.util.ValidationUtil import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -95,7 +95,7 @@ class DetailSignupViewModel @Inject constructor( private fun observeBirth() { birth.onEach { - if (Validation.checkBirth(it) || it.isBlank()) { + if (ValidationUtil.checkBirth(it) || it.isBlank()) { _uiState.update { state -> state.copy( birthState = InputState.Empty diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/main/home/HomeFragment.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/main/home/HomeFragment.kt index 15fc0f6..535e132 100644 --- a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/main/home/HomeFragment.kt +++ b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/main/home/HomeFragment.kt @@ -1,17 +1,10 @@ package com.avengers.nibobnebob.presentation.ui.main.home import android.Manifest -import android.content.Context -import android.content.Intent -import android.content.pm.PackageManager -import android.location.LocationManager import android.os.Bundle -import android.provider.Settings import android.view.View import android.widget.ImageButton -import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts -import androidx.core.content.ContextCompat import androidx.databinding.BindingAdapter import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels @@ -21,10 +14,12 @@ import com.avengers.nibobnebob.NavGraphDirections import com.avengers.nibobnebob.R import com.avengers.nibobnebob.databinding.FragmentHomeBinding import com.avengers.nibobnebob.presentation.base.BaseFragment +import com.avengers.nibobnebob.presentation.customview.RestaurantBottomSheet +import com.avengers.nibobnebob.presentation.ui.checkLocationIsOn import com.avengers.nibobnebob.presentation.ui.main.MainViewModel import com.avengers.nibobnebob.presentation.ui.main.home.adapter.HomeFilterAdapter import com.avengers.nibobnebob.presentation.ui.main.home.model.UiMarkerData -import com.avengers.nibobnebob.presentation.util.restaurantSheet +import com.avengers.nibobnebob.presentation.ui.requestLocationPermission import com.naver.maps.geometry.LatLng import com.naver.maps.map.LocationTrackingMode import com.naver.maps.map.MapFragment @@ -107,16 +102,17 @@ class HomeFragment : BaseFragment(R.layout.fragment_home), } } - private fun initEventObserver(){ + private fun initEventObserver() { repeatOnStarted { - viewModel.events.collect{ - when(it){ + viewModel.events.collect { + when (it) { is HomeEvents.NavigateToSearchRestaurant -> findNavController().toSearchRestaurant() is HomeEvents.SetNewMarkers -> { - viewModel.uiState.value.markerList.forEach { data -> + viewModel.uiState.value.markerList.forEach { data -> setMarker(data) } } + is HomeEvents.RemoveMarkers -> removeAllMarker() else -> {} } @@ -128,7 +124,14 @@ class HomeFragment : BaseFragment(R.layout.fragment_home), repeatOnStarted { viewModel.uiState.collect { when (it.locationTrackingState) { - is TrackingState.TryOn -> requestLocationPermission() + is TrackingState.TryOn -> { + requireContext().requestLocationPermission( + locationPermissionList, + ::startPermissionLauncher, + ::onTrackingChangeListener + ) + } + is TrackingState.On -> naverMap.locationTrackingMode = LocationTrackingMode.Follow @@ -139,41 +142,21 @@ class HomeFragment : BaseFragment(R.layout.fragment_home), } } - private fun requestLocationPermission() { - var permissionFlag = false - locationPermissionList.forEach { permission -> - permissionFlag = ContextCompat.checkSelfPermission( - requireContext(), - permission - ) == PackageManager.PERMISSION_GRANTED - } - - if (permissionFlag) { - checkLocationIsOn() - } else { - requestPermissionLauncher.launch(locationPermissionList) - Toast.makeText(requireContext(), "위치권한을 허용해주세요", Toast.LENGTH_SHORT).show() - } + private fun startPermissionLauncher() { + requestPermissionLauncher.launch(locationPermissionList) } private val requestPermissionLauncher = registerForActivityResult( ActivityResultContracts.RequestMultiplePermissions() ) { resultMap -> val isAllGranted = locationPermissionList.all { resultMap[it] == true } - if (isAllGranted) checkLocationIsOn() + if (isAllGranted) requireContext().checkLocationIsOn(::onTrackingChangeListener) else viewModel.trackingOff() } - private fun checkLocationIsOn() { - val locationManager = - requireContext().getSystemService(Context.LOCATION_SERVICE) as LocationManager - if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { - viewModel.trackingOn() - } else { - startActivity(Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)) - Toast.makeText(requireContext(), "휴대폰 GPS를 켜주세요", Toast.LENGTH_SHORT).show() - viewModel.trackingOff() - } + private fun onTrackingChangeListener(state: Boolean) { + if (state) viewModel.trackingOn() + else viewModel.trackingOff() } // todo markerData model을 정의하여, 파라미터로 해당 데이터를 삽입 @@ -185,13 +168,14 @@ class HomeFragment : BaseFragment(R.layout.fragment_home), marker.map = naverMap marker.setOnClickListener { - restaurantSheet( + val bottomSheet = RestaurantBottomSheet( context = requireContext(), data = data, onClickAddWishRestaurant = ::addWishTest, onClickAddMyRestaurant = ::addRestaurantTest, onClickGoReview = ::goReviewTest - ).show() + ) + bottomSheet.show() true } @@ -199,7 +183,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home), } // todo 모든 marker 데이터 markerList 에 저장해 놨다가, remove 다음 방식으로 진행 - private fun removeAllMarker(){ + private fun removeAllMarker() { markerList.forEach { it.map = null } diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/main/mypage/edit/EditProfileFragment.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/main/mypage/edit/EditProfileFragment.kt index 311bef4..1ecf690 100644 --- a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/main/mypage/edit/EditProfileFragment.kt +++ b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/ui/main/mypage/edit/EditProfileFragment.kt @@ -9,10 +9,10 @@ import androidx.navigation.Navigation import com.avengers.nibobnebob.R import com.avengers.nibobnebob.databinding.FragmentEditProfileBinding import com.avengers.nibobnebob.presentation.base.BaseFragment +import com.avengers.nibobnebob.presentation.customview.CalendarDatePicker import com.avengers.nibobnebob.presentation.ui.main.MainViewModel import com.avengers.nibobnebob.presentation.ui.main.mypage.share.MyPageSharedUiEvent import com.avengers.nibobnebob.presentation.ui.main.mypage.share.MyPageSharedViewModel -import com.avengers.nibobnebob.presentation.util.showCalendarDatePicker import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.collectLatest @@ -76,9 +76,9 @@ class EditProfileFragment : private fun setDateBtnListener() { binding.tilBirth.setEndIconOnClickListener { - showCalendarDatePicker(parentFragmentManager) { + CalendarDatePicker{ viewModel.setBirth(it) - } + }.show(parentFragmentManager) } } diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/BottomSheetManager.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/BottomSheetManager.kt deleted file mode 100644 index af1b550..0000000 --- a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/BottomSheetManager.kt +++ /dev/null @@ -1,50 +0,0 @@ -package com.avengers.nibobnebob.presentation.util - -import android.content.Context -import android.view.LayoutInflater -import com.avengers.nibobnebob.R -import com.avengers.nibobnebob.databinding.BottomSheetRestaurantBinding -import com.avengers.nibobnebob.presentation.ui.main.home.model.UiMarkerData -import com.google.android.material.bottomsheet.BottomSheetDialog - - -internal fun restaurantSheet( - context: Context, - data: UiMarkerData, - onClickAddWishRestaurant: (Int, Boolean) -> Boolean, - onClickAddMyRestaurant: (Int) -> Unit, - onClickGoReview: (Int) -> Unit -): BottomSheetDialog { - val dialog = BottomSheetDialog(context) - val binding = BottomSheetRestaurantBinding.inflate(LayoutInflater.from(context)) - dialog.setContentView(binding.root) - binding.item = data - - var isWishState = data.isInWishList - - binding.btnAddMyRestaurant.setOnClickListener { - onClickAddMyRestaurant(data.id) - dialog.dismiss() - } - - binding.btnAddWishRestaurant.setOnClickListener { - val result = onClickAddWishRestaurant(data.id, data.isInWishList) - - if (result) { - isWishState = !isWishState - - if (isWishState) { - binding.btnAddWishRestaurant.setBackgroundResource(R.drawable.ic_star_full) - } else { - binding.btnAddWishRestaurant.setBackgroundResource(R.drawable.ic_star_border) - } - } - } - - binding.btnGoReview.setOnClickListener { - onClickGoReview(data.id) - dialog.dismiss() - } - - return dialog -} \ No newline at end of file diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/Constants.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/Constants.kt index bdc74b2..e59dfbe 100644 --- a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/Constants.kt +++ b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/Constants.kt @@ -2,12 +2,15 @@ package com.avengers.nibobnebob.presentation.util object Constants { const val APP_NAME = "NibobNebob" - const val BASE_URL = "http://223.130.162.237:8000/" + const val BASE_URL = "https://www.nibobnebob.site:8000/" + const val AUTO_LOGIN = "AUTOLOGIN" const val ACCESS = "Access" + const val ACCESS_TOKEN = "ACCESSTOKEN" const val REFRESH_TOKEN = "REFRESHTOKEN" const val NAVER_TOKEN = "NAVERTOKEN" + const val AUTHORIZATION = "authorization" const val BEARER = "Bearer" const val MY_LIST = "마이 리스트" diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/DatePicker.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/DatePicker.kt deleted file mode 100644 index 2bae1ce..0000000 --- a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/DatePicker.kt +++ /dev/null @@ -1,33 +0,0 @@ -package com.avengers.nibobnebob.presentation.util - - -import androidx.fragment.app.FragmentManager -import com.google.android.material.datepicker.MaterialDatePicker -import java.text.SimpleDateFormat -import java.util.Date -import java.util.Locale -import java.util.TimeZone - - -fun showCalendarDatePicker( - fragmentManager: FragmentManager, - onSelectDateListener: (String) -> Unit -) { - val datePicker = MaterialDatePicker.Builder.datePicker() - .setTitleText("생일을 고르세요") - .setSelection(MaterialDatePicker.todayInUtcMilliseconds()) - .build() - - datePicker.addOnPositiveButtonClickListener { - onSelectDateListener(it.toDateString()) - } - - datePicker.show(fragmentManager, "") -} - -private fun Long.toDateString(): String { - val dateFormat = SimpleDateFormat("yyyy/MM/dd", Locale.getDefault()) - dateFormat.timeZone = TimeZone.getTimeZone("UTC") - val date = Date(this) - return dateFormat.format(date) -} \ No newline at end of file diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/HideKeyBoard.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/HideKeyBoard.kt deleted file mode 100644 index ee60b7e..0000000 --- a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/HideKeyBoard.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.avengers.nibobnebob.presentation.util - -import android.content.Context -import android.view.View -import android.view.inputmethod.InputMethodManager - -fun Context.hideKeyboard(view: View) { - val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager - imm.hideSoftInputFromWindow(view.windowToken, 0) -} \ No newline at end of file diff --git a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/Validation.kt b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/ValidationUtil.kt similarity index 89% rename from Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/Validation.kt rename to Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/ValidationUtil.kt index d3b5217..eb3b3f3 100644 --- a/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/Validation.kt +++ b/Aos/app/src/main/java/com/avengers/nibobnebob/presentation/util/ValidationUtil.kt @@ -1,6 +1,6 @@ package com.avengers.nibobnebob.presentation.util -object Validation { +object ValidationUtil { private val birthRegex = Regex("""^\d{4}/\d{2}/\d{2}${'$'}""") diff --git a/Aos/app/src/main/res/values/themes.xml b/Aos/app/src/main/res/values/themes.xml index d943736..ca98718 100644 --- a/Aos/app/src/main/res/values/themes.xml +++ b/Aos/app/src/main/res/values/themes.xml @@ -3,6 +3,7 @@