From 992771f46bbf2a785b0ede2a169c328e4bbcc56c Mon Sep 17 00:00:00 2001 From: kimdowoo <asasa0628@gs.cwnu.ac.kr> Date: Thu, 23 Mar 2023 21:27:10 +0900 Subject: [PATCH] =?UTF-8?q?[BUD-36]=20feat=20:=20Buddy=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=ED=99=94=EB=A9=B4=20=EA=B5=AC=ED=98=84=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C=20(#17)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/deploymentTargetDropDown.xml | 8 +- buddy/build.gradle | 4 +- .../buddyvet/buddy/ui/BuddyViewModel.kt | 17 ++-- .../buddy/ui/CompleteRegistrationFragment.kt | 8 +- .../buddy/ui/InputBuddyInfo2Fragment.kt | 48 ---------- .../buddy/ui/InputBuddyInfoFragment.kt | 44 ++++++--- .../layout/fragment_complete_registration.xml | 95 ++++++++++++++++++- .../res/layout/fragment_input_buddy_info.xml | 93 +++++++++++++----- .../res/layout/fragment_input_buddy_info2.xml | 27 ------ .../res/layout/fragment_input_buddy_type.xml | 4 +- buddy/src/main/res/navigation/nav_buddy.xml | 8 -- .../nocapstone/common_ui/BindingAdapter.kt | 7 +- .../src/main/res/drawable/img_calendar.xml | 5 + .../common/domain/usecase/AuthUseCase.kt | 5 +- diary/build.gradle | 6 +- .../onboarding/ui/SplashViewModel.kt | 13 +-- 16 files changed, 233 insertions(+), 159 deletions(-) delete mode 100644 buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/InputBuddyInfo2Fragment.kt delete mode 100644 buddy/src/main/res/layout/fragment_input_buddy_info2.xml create mode 100644 common-ui/src/main/res/drawable/img_calendar.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 61d8a1f..5c76f99 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="deploymentTargetDropDown"> - <targetSelectedWithDropDown> + <runningDeviceTargetSelectedWithDropDown> <Target> - <type value="QUICK_BOOT_TARGET" /> + <type value="RUNNING_DEVICE_TARGET" /> <deviceKey> <Key> <type value="VIRTUAL_DEVICE_PATH" /> @@ -11,7 +11,7 @@ </Key> </deviceKey> </Target> - </targetSelectedWithDropDown> - <timeTargetWasSelectedWithDropDown value="2023-03-21T05:50:26.695170200Z" /> + </runningDeviceTargetSelectedWithDropDown> + <timeTargetWasSelectedWithDropDown value="2023-03-23T12:21:45.633470700Z" /> </component> </project> \ No newline at end of file diff --git a/buddy/build.gradle b/buddy/build.gradle index 3349531..6eb2563 100644 --- a/buddy/build.gradle +++ b/buddy/build.gradle @@ -44,10 +44,8 @@ dependencies { api project(path: ':common-ui') implementation 'io.github.ParkSangGwon:tedimagepicker:1.2.8' - implementation 'de.hdodenhof:circleimageview:3.1.0' - // Navigation api "androidx.navigation:navigation-fragment-ktx:$rootProject.nav_version" api "androidx.navigation:navigation-ui-ktx:$rootProject.nav_version" @@ -55,7 +53,7 @@ dependencies { implementation "com.google.dagger:hilt-android:$rootProject.hiltVersion" kapt "com.google.dagger:hilt-android-compiler:$rootProject.hiltVersion" - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.8.0' testImplementation 'junit:junit:4.13.2' diff --git a/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/BuddyViewModel.kt b/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/BuddyViewModel.kt index 8fbf0ea..740159e 100644 --- a/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/BuddyViewModel.kt +++ b/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/BuddyViewModel.kt @@ -53,8 +53,8 @@ class BuddyViewModel @Inject constructor( _newBuddy.value?.adoptDay = adoptDay } - fun setNeutered(Neutered: String) { - _newBuddy.value?.isNeutered = (Neutered == "예") + fun setNeutered(Neutered: Boolean) { + _newBuddy.value?.isNeutered = Neutered } fun setGender(gender: String) { @@ -66,7 +66,6 @@ class BuddyViewModel @Inject constructor( } fun setSelectImgUri(uri: Uri?) { - _selectImgUri.value = null _selectImgUri.value = uri } @@ -79,10 +78,14 @@ class BuddyViewModel @Inject constructor( fun createBuddy() { viewModelScope.launch { - val jwt = dataStoreUseCase.bearerJsonWebToken.first()!! - val buddyId = buddyUseCase.createBuddy(jwt, _newBuddy.value!!) - if (_selectImgUri.value != null) { - uploadBuddyImg(jwt, buddyId) + try { + val jwt = dataStoreUseCase.bearerJsonWebToken.first()!! + val buddyId = buddyUseCase.createBuddy(jwt, _newBuddy.value!!) + if (_selectImgUri.value != null) { + uploadBuddyImg(jwt, buddyId) + } + } catch (e: Exception) { + Log.d("createBuddy", e.message.toString()) } } } diff --git a/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/CompleteRegistrationFragment.kt b/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/CompleteRegistrationFragment.kt index 39dfee9..0c4ac0c 100644 --- a/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/CompleteRegistrationFragment.kt +++ b/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/CompleteRegistrationFragment.kt @@ -22,12 +22,10 @@ class CompleteRegistrationFragment : Fragment() { private val buddyViewModel: BuddyViewModel by viewModels({ requireActivity() }) - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - // Inflate the layout for this fragment _binding = FragmentCompleteRegistrationBinding.inflate(inflater, container, false) return binding.root } @@ -35,7 +33,13 @@ class CompleteRegistrationFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + binding.apply { + this.viewModel = buddyViewModel + this.lifecycleOwner = viewLifecycleOwner + } + binding.next.setOnClickListener { + buddyViewModel.createBuddy() LoginUtil.startMainActivity(requireActivity(), mainActivityClass) } diff --git a/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/InputBuddyInfo2Fragment.kt b/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/InputBuddyInfo2Fragment.kt deleted file mode 100644 index 28f8101..0000000 --- a/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/InputBuddyInfo2Fragment.kt +++ /dev/null @@ -1,48 +0,0 @@ -package com.nocapstone.buddyvet.buddy.ui - -import android.os.Bundle -import androidx.fragment.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.viewModels -import androidx.navigation.fragment.findNavController -import com.nocapstone.buddyvet.buddy.R -import com.nocapstone.buddyvet.buddy.databinding.FragmentInputBuddyInfo2Binding -import dagger.hilt.android.AndroidEntryPoint - - -@AndroidEntryPoint -class InputBuddyInfo2Fragment : Fragment() { - - private var _binding: FragmentInputBuddyInfo2Binding? = null - private val binding get() = _binding!! - - private val buddyViewModel: BuddyViewModel by viewModels({ requireActivity() }) - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - // Inflate the layout for this fragment - _binding = FragmentInputBuddyInfo2Binding.inflate(inflater, container, false) - return binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - binding.next.setOnClickListener { - findNavController().navigate(R.id.next) - } - - } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - - - -} \ No newline at end of file diff --git a/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/InputBuddyInfoFragment.kt b/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/InputBuddyInfoFragment.kt index 6000fd8..def4514 100644 --- a/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/InputBuddyInfoFragment.kt +++ b/buddy/src/main/java/com/nocapstone/buddyvet/buddy/ui/InputBuddyInfoFragment.kt @@ -1,6 +1,7 @@ package com.nocapstone.buddyvet.buddy.ui import android.os.Bundle +import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View @@ -14,6 +15,8 @@ import com.nocapstone.common_ui.CalendarUtil import com.nocapstone.common_ui.DialogForDatePicker import com.nocapstone.common_ui.R.layout.list_item import dagger.hilt.android.AndroidEntryPoint +import gun0912.tedimagepicker.builder.TedImagePicker +import java.lang.reflect.GenericArrayType @AndroidEntryPoint @@ -22,7 +25,8 @@ class InputBuddyInfoFragment : Fragment() { private var _binding: FragmentInputBuddyInfoBinding? = null private val binding get() = _binding!! private val buddyViewModel: BuddyViewModel by viewModels({ requireActivity() }) - + private val neuteredItem = listOf("예", "아니오") + private val genderListItem = listOf("남자", "여자") override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -34,21 +38,24 @@ class InputBuddyInfoFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val breadAdapter = ArrayAdapter( + val neuteredAdapter = ArrayAdapter( requireContext(), list_item, - listOf("예", "아니오") + neuteredItem ) + val genderAdapter = ArrayAdapter( requireContext(), list_item, - listOf("남자", "여자", "없음") + genderListItem ) with(binding) { + viewModel = buddyViewModel + lifecycleOwner = viewLifecycleOwner genderTv.setAdapter(genderAdapter) - isNeuteredTv.setAdapter(breadAdapter) + isNeuteredTv.setAdapter(neuteredAdapter) birthDayTv.text = CalendarUtil.getTodayDate() adoptDayTv.text = CalendarUtil.getTodayDate() birthDayTv.setOnClickListener { @@ -67,20 +74,35 @@ class InputBuddyInfoFragment : Fragment() { } .build().show() } + imgSelect.setOnClickListener { + TedImagePicker.with(requireContext()) + .start { + buddyViewModel.setSelectImgUri(it) + } + } } binding.next.setOnClickListener { setData() - buddyViewModel findNavController().navigate(R.id.next) } } - private fun setData(){ - with(binding){ - buddyViewModel.setName(nameEt.editText.toString()) - buddyViewModel.setNeutered(isNeuteredTv.text.toString()) - buddyViewModel.setGender(genderTv.text.toString()) + private fun setData() { + with(binding) { + buddyViewModel.setName(nameTv.text.toString()) + buddyViewModel.setNeutered( + when (isNeuteredTv.text.toString()) { + neuteredItem[0] -> true + else -> false + } + ) + buddyViewModel.setGender( + when (genderTv.text.toString()) { + genderListItem[0] -> "M" + else -> "W" + } + ) buddyViewModel.setAdoptDay(adoptDayTv.text.toString()) buddyViewModel.setBirthDay(birthDayTv.text.toString()) } diff --git a/buddy/src/main/res/layout/fragment_complete_registration.xml b/buddy/src/main/res/layout/fragment_complete_registration.xml index d711519..2cf38d4 100644 --- a/buddy/src/main/res/layout/fragment_complete_registration.xml +++ b/buddy/src/main/res/layout/fragment_complete_registration.xml @@ -1,8 +1,15 @@ <?xml version="1.0" encoding="utf-8"?> -<layout xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:android="http://schemas.android.com/apk/res/android" +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> + <data> + + <variable + name="viewModel" + type="com.nocapstone.buddyvet.buddy.ui.BuddyViewModel" /> + </data> + <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" @@ -10,13 +17,95 @@ tools:context="com.nocapstone.buddyvet.buddy.ui.CompleteRegistrationFragment"> + <TextView + android:id="@+id/complete_tv" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="32dp" + android:fontFamily="@font/cafe24_ssurround_air" + android:gravity="center" + android:text="이대로 등록 할까" + android:textColor="@color/black" + android:textSize="32sp" + android:textStyle="bold" + app:layout_constraintTop_toTopOf="parent" /> + + + <de.hdodenhof.circleimageview.CircleImageView + android:id="@+id/profile_iv" + uri="@{viewModel.selectImgUri}" + android:layout_width="65dp" + android:layout_height="65dp" + android:layout_marginTop="32dp" + app:civ_border_overlay="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/complete_tv" /> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="32dp" + android:gravity="center" + android:orientation="vertical" + app:layout_constraintTop_toBottomOf="@id/profile_iv"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="32dp" + android:fontFamily="@font/cafe24_ssurround" + android:text="@{viewModel.newBuddy.name}" + android:textColor="@color/black" + android:textSize="17sp" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="32dp" + android:fontFamily="@font/cafe24_ssurround" + android:text='@{viewModel.newBuddy.gender == "M" ? "남아" : "여아"}' + android:textColor="@color/black" + android:textSize="17sp" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="32dp" + android:fontFamily="@font/cafe24_ssurround" + android:text='@{"중성화 여부 : " + (viewModel.newBuddy.neutered ? "O" : "X")}' + android:textColor="@color/black" + android:textSize="17sp" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="32dp" + android:fontFamily="@font/cafe24_ssurround" + android:text='@{"태어난 날 : " + viewModel.newBuddy.birthDay}' + android:textColor="@color/black" + android:textSize="17sp" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="32dp" + android:fontFamily="@font/cafe24_ssurround" + android:text='@{"가족이 된 날 : " + viewModel.newBuddy.adoptDay}' + android:textColor="@color/black" + android:textSize="17sp" /> + + </LinearLayout> + + <com.google.android.material.button.MaterialButton android:id="@+id/next" style="@style/basic_btn" android:layout_width="match_parent" android:layout_height="50dp" android:layout_marginBottom="@dimen/basic_bottom_btn_margin_non_padding" - android:text="다음" + android:text="등록하기" android:textSize="@dimen/basic_btn_textSize" app:backgroundTint="@color/butter" app:layout_constraintBottom_toBottomOf="parent" /> diff --git a/buddy/src/main/res/layout/fragment_input_buddy_info.xml b/buddy/src/main/res/layout/fragment_input_buddy_info.xml index dce56d8..8d35736 100644 --- a/buddy/src/main/res/layout/fragment_input_buddy_info.xml +++ b/buddy/src/main/res/layout/fragment_input_buddy_info.xml @@ -6,8 +6,10 @@ <data> <variable - name="imageUri" - type="String" /> + name="viewModel" + type="com.nocapstone.buddyvet.buddy.ui.BuddyViewModel" /> + + </data> <androidx.constraintlayout.widget.ConstraintLayout @@ -40,11 +42,10 @@ <de.hdodenhof.circleimageview.CircleImageView android:id="@+id/main_iv" - photoUrl="@{imageUri}" + uri="@{viewModel.selectImgUri}" android:layout_width="65dp" android:layout_height="65dp" - app:civ_border_overlay="true" - tools:src="@drawable/img_person" /> + app:civ_border_overlay="true" /> <ImageView android:layout_width="wrap_content" @@ -67,6 +68,7 @@ app:layout_constraintTop_toBottomOf="@id/img_select"> <com.google.android.material.textfield.TextInputEditText + android:id="@+id/name_tv" android:layout_width="match_parent" android:layout_height="wrap_content" /> @@ -86,15 +88,16 @@ android:layout_height="100dp" android:layout_marginEnd="16dp" android:layout_weight="1" - android:hint="중성화" + android:hint="성별" app:boxStrokeColor="@color/butter" app:hintTextColor="@color/black"> <AutoCompleteTextView - android:id="@+id/isNeutered_tv" + android:id="@+id/gender_tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="none" /> + </com.google.android.material.textfield.TextInputLayout> @@ -103,49 +106,89 @@ android:layout_width="0dp" android:layout_height="100dp" android:layout_weight="1" - android:hint="성별" + android:hint="중성화" app:boxStrokeColor="@color/butter" app:hintTextColor="@color/black"> <AutoCompleteTextView - android:id="@+id/gender_tv" + android:id="@+id/isNeutered_tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="none" /> - </com.google.android.material.textfield.TextInputLayout> + </LinearLayout> + <LinearLayout android:id="@+id/info2_lo" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginStart="8dp" android:layout_marginTop="16dp" android:orientation="horizontal" app:layout_constraintTop_toBottomOf="@+id/info1_lo"> - <TextView - android:id="@+id/adoptDay_tv" + <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginEnd="32dp" android:layout_weight="1" - android:fontFamily="@font/cafe24_ssurround_air" - android:textColor="@color/black" - android:textSize="12sp" - app:layout_constraintStart_toStartOf="@id/title" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/birthDay_tv" + android:gravity="start" + android:orientation="vertical"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + android:text="태어난 날" + android:textSize="17sp" /> + + <TextView + android:id="@+id/adoptDay_tv" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:drawablePadding="16dp" + android:fontFamily="@font/cafe24_ssurround" + android:gravity="end|bottom" + android:textColor="@color/black" + android:textSize="17sp" + app:drawableEndCompat="@drawable/img_calendar" + app:layout_constraintStart_toStartOf="@id/title" + app:layout_constraintTop_toTopOf="parent" /> + + </LinearLayout> + + + <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" - android:fontFamily="@font/cafe24_ssurround_air" - android:textColor="@color/black" - android:textSize="12sp" - app:layout_constraintStart_toStartOf="@id/title" - app:layout_constraintTop_toTopOf="parent" /> + android:gravity="start" + android:orientation="vertical"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + android:text="처음 만난 날" + android:textSize="17sp" /> + + <TextView + android:id="@+id/birthDay_tv" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:drawablePadding="16dp" + android:fontFamily="@font/cafe24_ssurround" + android:gravity="end|bottom" + android:textColor="@color/black" + android:textSize="17sp" + app:drawableEndCompat="@drawable/img_calendar" + app:layout_constraintStart_toStartOf="@id/title" + app:layout_constraintTop_toTopOf="parent" /> + + </LinearLayout> </LinearLayout> diff --git a/buddy/src/main/res/layout/fragment_input_buddy_info2.xml b/buddy/src/main/res/layout/fragment_input_buddy_info2.xml deleted file mode 100644 index e27b327..0000000 --- a/buddy/src/main/res/layout/fragment_input_buddy_info2.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<layout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools"> - - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="match_parent" - android:padding="21dp" - tools:context="com.nocapstone.buddyvet.buddy.ui.InputBuddyInfoFragment"> - - - - <com.google.android.material.button.MaterialButton - android:id="@+id/next" - style="@style/basic_btn" - android:layout_width="match_parent" - android:layout_height="50dp" - android:layout_marginBottom="@dimen/basic_bottom_btn_margin_non_padding" - android:text="다음" - android:textSize="@dimen/basic_btn_textSize" - app:backgroundTint="@color/butter" - app:layout_constraintBottom_toBottomOf="parent" /> - - </androidx.constraintlayout.widget.ConstraintLayout> - -</layout> diff --git a/buddy/src/main/res/layout/fragment_input_buddy_type.xml b/buddy/src/main/res/layout/fragment_input_buddy_type.xml index 6305334..e2c9d3b 100644 --- a/buddy/src/main/res/layout/fragment_input_buddy_type.xml +++ b/buddy/src/main/res/layout/fragment_input_buddy_type.xml @@ -52,7 +52,7 @@ android:layout_height="100dp" android:layout_gravity="center" android:elevation="16dp" - app:cardBackgroundColor="@{viewModel.newBuddy.kind == 'D' ? @color/butter : @color/white}" + app:cardBackgroundColor='@{viewModel.newBuddy.kind.equals("D")? @color/butter : @color/white}' app:cardCornerRadius="50dp"> <ImageView @@ -88,7 +88,7 @@ android:layout_height="100dp" android:layout_gravity="center" android:elevation="16dp" - app:cardBackgroundColor="@{viewModel.newBuddy.kind == 'C' ? @color/butter : @color/white}" + app:cardBackgroundColor='@{viewModel.newBuddy.kind.equals("C")? @color/butter : @color/white}' app:cardCornerRadius="50dp"> diff --git a/buddy/src/main/res/navigation/nav_buddy.xml b/buddy/src/main/res/navigation/nav_buddy.xml index c8251d5..fdc1354 100644 --- a/buddy/src/main/res/navigation/nav_buddy.xml +++ b/buddy/src/main/res/navigation/nav_buddy.xml @@ -20,14 +20,6 @@ android:id="@+id/inputBuddyInfoFragment" android:name="com.nocapstone.buddyvet.buddy.ui.InputBuddyInfoFragment" android:label="InputBuddyInfoFragment" > - <action - android:id="@+id/next" - app:destination="@id/inputBuddyInfo2Fragment" /> - </fragment> - <fragment - android:id="@+id/inputBuddyInfo2Fragment" - android:name="com.nocapstone.buddyvet.buddy.ui.InputBuddyInfo2Fragment" - android:label="InputBuddyInfo2Fragment" > <action android:id="@+id/next" app:destination="@id/completeRegistrationFragment" /> diff --git a/common-ui/src/main/java/com/nocapstone/common_ui/BindingAdapter.kt b/common-ui/src/main/java/com/nocapstone/common_ui/BindingAdapter.kt index f7cbf09..be5c3ec 100644 --- a/common-ui/src/main/java/com/nocapstone/common_ui/BindingAdapter.kt +++ b/common-ui/src/main/java/com/nocapstone/common_ui/BindingAdapter.kt @@ -1,6 +1,8 @@ package com.nocapstone.common_ui +import android.graphics.drawable.Drawable import android.net.Uri +import android.util.Log import android.view.View import android.widget.ImageView import androidx.databinding.BindingAdapter @@ -8,6 +10,9 @@ import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import com.bumptech.glide.Glide +import com.bumptech.glide.request.target.CustomTarget +import com.bumptech.glide.request.transition.Transition +import de.hdodenhof.circleimageview.CircleImageView @BindingAdapter("photoUrl") @@ -22,10 +27,10 @@ fun bindImageView(imageView: ImageView, photoUrl: String?) { fun bindImageView(imageView: ImageView, uri: Uri?) { Glide.with(imageView.context) .load(uri) + .placeholder(R.drawable.img_person) .into(imageView) } - @BindingAdapter("adapter", "submitList", requireAll = true) fun bindViewPager(view: ViewPager2, adapter: RecyclerView.Adapter<*>, submitList: List<Any>?) { if (submitList == null) return diff --git a/common-ui/src/main/res/drawable/img_calendar.xml b/common-ui/src/main/res/drawable/img_calendar.xml new file mode 100644 index 0000000..6141ea6 --- /dev/null +++ b/common-ui/src/main/res/drawable/img_calendar.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#8F8378" + android:viewportHeight="24" android:viewportWidth="24" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M19,4h-1V2h-2v2H8V2H6v2H5C3.89,4 3.01,4.9 3.01,6L3,20c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2V6C21,4.9 20.1,4 19,4zM19,20H5V10h14V20zM9,14H7v-2h2V14zM13,14h-2v-2h2V14zM17,14h-2v-2h2V14zM9,18H7v-2h2V18zM13,18h-2v-2h2V18zM17,18h-2v-2h2V18z"/> +</vector> diff --git a/common/src/main/java/com/nocapstone/common/domain/usecase/AuthUseCase.kt b/common/src/main/java/com/nocapstone/common/domain/usecase/AuthUseCase.kt index 3c3b158..6aba545 100644 --- a/common/src/main/java/com/nocapstone/common/domain/usecase/AuthUseCase.kt +++ b/common/src/main/java/com/nocapstone/common/domain/usecase/AuthUseCase.kt @@ -11,9 +11,8 @@ import javax.inject.Inject class AuthUseCase @Inject constructor( private val authService: AuthService ){ - suspend fun login(token: String, providerType: String= "KAKAO") : Response<LoginResponse> { - val jwt = authService.postToken(LoginRequest(token, providerType)) - return jwt + suspend fun login(token: String, providerType: String = "KAKAO"): Response<LoginResponse> { + return authService.postToken(LoginRequest(token, providerType)) } suspend fun inputUserInfo(token:String , nickname: String){ diff --git a/diary/build.gradle b/diary/build.gradle index d24a073..6b90152 100644 --- a/diary/build.gradle +++ b/diary/build.gradle @@ -39,15 +39,15 @@ android { dependencies { + api project(path: ':common-ui') + api project(path: ':common') + implementation 'io.github.ParkSangGwon:tedimagepicker:1.2.8' // Navigation api "androidx.navigation:navigation-fragment-ktx:$rootProject.nav_version" api "androidx.navigation:navigation-ui-ktx:$rootProject.nav_version" - api project(path: ':common-ui') - api project(path: ':common') - implementation "com.google.dagger:hilt-android:$rootProject.hiltVersion" kapt "com.google.dagger:hilt-android-compiler:$rootProject.hiltVersion" diff --git a/onboarding/src/main/java/com/nocapstone/onboarding/ui/SplashViewModel.kt b/onboarding/src/main/java/com/nocapstone/onboarding/ui/SplashViewModel.kt index 36b516f..dd25d47 100644 --- a/onboarding/src/main/java/com/nocapstone/onboarding/ui/SplashViewModel.kt +++ b/onboarding/src/main/java/com/nocapstone/onboarding/ui/SplashViewModel.kt @@ -1,15 +1,11 @@ package com.nocapstone.onboarding.ui -import android.content.Context -import android.net.Uri import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.nocapstone.common.domain.usecase.AuthUseCase import com.nocapstone.common.domain.usecase.DataStoreUseCase -import com.nocapstone.onboarding.domain.BuddyRequest import dagger.hilt.android.lifecycle.HiltViewModel -import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch import javax.inject.Inject @@ -20,17 +16,11 @@ class SplashViewModel @Inject constructor( private val dataStoreUseCase: DataStoreUseCase ) : ViewModel() { - - - - fun withJsonWebToken(callback: (String?) -> Unit) { viewModelScope.launch { callback.invoke(dataStoreUseCase.bearerJsonWebToken.firstOrNull()) } } - - fun signup(token: String, createCallback: () -> Unit, loginCallback: () -> Unit) { createCallback.invoke() @@ -51,13 +41,12 @@ class SplashViewModel @Inject constructor( // } } - fun postUserInfo(nickname: String) { viewModelScope.launch { try { authUseCase.inputUserInfo(dataStoreUseCase.bearerJsonWebToken.first()!!, nickname) } catch (e: Exception) { - Log.d("postTest", e.message.toString()) + Log.d("nickNameApi", e.message.toString()) } } }