Skip to content

Commit

Permalink
�feat: 하우스 관리 페이지 (#72)
Browse files Browse the repository at this point in the history
* 셋팅 아이콘 추가

* create manage house fragment and set navigation

* modify invite fragment

* 초대 코드 화면 분기

* remove toast setgravity

* conflict 해결

* add google-service.json

* fix ci error

Co-authored-by: wjdwns <[email protected]>
  • Loading branch information
sujin-kk and wjdwns authored Jun 19, 2022
1 parent 1387be1 commit 1bb5adc
Show file tree
Hide file tree
Showing 19 changed files with 412 additions and 60 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ render.experimental.xml
*.keystore

# Google Services (e.g. APIs or Firebase)
google-services.json
# google-services.json

# Android Profiling
*.hprof
Expand Down
39 changes: 39 additions & 0 deletions app/google-services.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"project_info": {
"project_number": "940546044137",
"project_id": "fairer-def59",
"storage_bucket": "fairer-def59.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:940546044137:android:ac124511669d0ae5ed0078",
"android_client_info": {
"package_name": "com.depromeet.housekeeper"
}
},
"oauth_client": [
{
"client_id": "940546044137-u481k2bgop3vkm173ufufdscgntvgd1f.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyCaAHNuOuFFhzOSDbalhZLTiOaG6O2epEE"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "940546044137-u481k2bgop3vkm173ufufdscgntvgd1f.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.depromeet.housekeeper.model.enums

enum class InviteViewType {
SIGN, SETTING
}
46 changes: 39 additions & 7 deletions app/src/main/java/com/depromeet/housekeeper/ui/InviteFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import android.content.*
import android.content.Context.CLIPBOARD_SERVICE
import android.net.Uri
import android.os.Bundle
import android.view.Gravity
import android.text.SpannableString
import android.text.style.ForegroundColorSpan
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
Expand All @@ -14,10 +15,10 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.navigation.findNavController
import androidx.navigation.fragment.findNavController
import com.depromeet.housekeeper.MainActivity
import androidx.navigation.fragment.navArgs
import com.depromeet.housekeeper.model.enums.InviteViewType
import com.depromeet.housekeeper.R
import com.depromeet.housekeeper.databinding.FragmentInviteBinding
import com.google.firebase.dynamiclinks.DynamicLink
import com.google.firebase.dynamiclinks.ktx.*
import com.google.firebase.ktx.Firebase
import com.kakao.sdk.common.util.KakaoCustomTabsClient
Expand All @@ -31,6 +32,7 @@ class InviteFragment : Fragment() {
lateinit var binding: FragmentInviteBinding
lateinit var clipboard: ClipboardManager
private val viewModel: InviteViewModel by viewModels()
private val navArgs by navArgs<InviteFragmentArgs>()

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
Expand All @@ -47,6 +49,38 @@ class InviteFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initListener()
bindingVm()
}

private fun bindingVm() {
// invite fragment 분기 - 건너뛰기 유무
viewModel.setViewType(navArgs.viewType)
when(viewModel.viewType.value) {
InviteViewType.SIGN -> {
binding.inviteSkipBtn.visibility = View.VISIBLE
}
InviteViewType.SETTING -> {
binding.inviteSkipBtn.visibility = View.GONE
}
}

viewModel.groupName.value.apply {
val format = String.format(getString(R.string.invite_group_name_text), this)
val spannerString = SpannableString(format).apply {
setSpan(
ForegroundColorSpan(requireActivity().getColor(R.color.highlight)),
0,
this.indexOf(""),
SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE
)
}
binding.inviteGroupNameTv.text = spannerString
}

// 유효기간
// TODO: API 호출 필요
val validText = getString(R.string.invite_code_valid_period_text, viewModel.inviteCodeValidPeriod.value)
binding.inviteValidPeriodTv.text = validText
}

private fun initListener() {
Expand All @@ -65,7 +99,7 @@ class InviteFragment : Fragment() {
}

binding.inviteKakaoShareBtn.setOnClickListener {
onKakaoShare(requireContext(),initDynamicLink())
onKakaoShare(requireContext(), initDynamicLink())
}

binding.inviteSkipBtn.setOnClickListener {
Expand All @@ -78,9 +112,7 @@ class InviteFragment : Fragment() {
val clip = ClipData.newPlainText("INVITE_CODE", code.toString())
clipboard.setPrimaryClip(clip)

val toast = Toast.makeText(requireContext(), "코드를 클립보드에 복사했습니다.", Toast.LENGTH_SHORT)
toast.setGravity(Gravity.CENTER, Gravity.CENTER_HORIZONTAL, Gravity.CENTER_VERTICAL)
toast.show()
Toast.makeText(requireContext(), getString(R.string.invite_code_copy_toast_text), Toast.LENGTH_SHORT).show()
}

private fun onKakaoShare(context: Context, uri: Uri) {
Expand Down
15 changes: 15 additions & 0 deletions app/src/main/java/com/depromeet/housekeeper/ui/InviteViewModel.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
package com.depromeet.housekeeper.ui

import androidx.lifecycle.ViewModel
import com.depromeet.housekeeper.model.enums.InviteViewType
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow


class InviteViewModel : ViewModel() {
private val _viewType: MutableStateFlow<InviteViewType> =
MutableStateFlow(InviteViewType.SIGN)
val viewType: StateFlow<InviteViewType>
get() = _viewType

fun setViewType(viewType: InviteViewType) {
_viewType.value = viewType
}

private val _groupName: MutableStateFlow<String> =
MutableStateFlow("즐거운 우리집")
val groupName: StateFlow<String>
Expand All @@ -15,4 +25,9 @@ class InviteViewModel : ViewModel() {
MutableStateFlow("ABCDEFG")
val inviteCode: StateFlow<String>
get() = _inviteCode

private val _inviteCodeValidPeriod: MutableStateFlow<String> =
MutableStateFlow("2022년 6월 20 18시 23분")
val inviteCodeValidPeriod: StateFlow<String>
get() = _inviteCodeValidPeriod
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.depromeet.housekeeper.ui

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.navigation.findNavController
import com.depromeet.housekeeper.R
import com.depromeet.housekeeper.databinding.FragmentManageHouseBinding
import com.depromeet.housekeeper.model.enums.InviteViewType
import com.depromeet.housekeeper.model.enums.SignViewType

class ManageHouseFragment : Fragment() {
lateinit var binding: FragmentManageHouseBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
// Inflate the layout for this fragment
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_manage_house, container, false)
binding.lifecycleOwner = this.viewLifecycleOwner

initListener()

return binding.root
}

private fun initListener() {
binding.manageHouseHeader.apply {
defaultHeaderTitleTv.text = resources.getString(R.string.manage_house_header_title)

defaultHeaderBackBtn.setOnClickListener {
it.findNavController().navigateUp()
}
}

binding.renameHouseRow.setOnClickListener {
it.findNavController().navigate(ManageHouseFragmentDirections.actionManageHouseFragmentToSignNameFragment(viewType = SignViewType.ModifyGroupName, code = null))
}

binding.inviteRow.setOnClickListener {
it.findNavController().navigate(ManageHouseFragmentDirections.actionManageHouseFragmentToInviteFragment(InviteViewType.SETTING))
}

binding.exitHouseRow.setOnClickListener {
// ToDo: 하우스 나가기 API 연동 (hasTeam 정보 필요)
}

}


}
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ class SettingFragment : Fragment() {
}

binding.spaceRow.setOnClickListener {
it.findNavController().navigate(SettingFragmentDirections.actionSettingFragmentToInviteFragment())
it.findNavController().navigate(SettingFragmentDirections.actionSettingFragmentToManageHouseFragment())
}

binding.contactRow.setOnClickListener {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import com.depromeet.housekeeper.R
import com.depromeet.housekeeper.databinding.FragmentSignNameBinding
import com.depromeet.housekeeper.model.enums.InviteViewType
import com.depromeet.housekeeper.model.enums.ProfileViewType
import com.depromeet.housekeeper.model.enums.SignViewType

Expand Down Expand Up @@ -60,8 +61,10 @@ class SignNameFragment : Fragment() {
name = viewModel.inputText.value,viewType = ProfileViewType.Sign))
}
SignViewType.GroupName -> {
findNavController().navigate(R.id.action_signNameFragment_to_inviteFragment)
}
findNavController().navigate(SignNameFragmentDirections.actionSignNameFragmentToInviteFragment(
viewType = InviteViewType.SIGN
))
}
SignViewType.InviteCode -> {
findNavController().navigate(R.id.action_signNameFragment_to_mainFragment)
}
Expand Down
9 changes: 9 additions & 0 deletions app/src/main/res/drawable/ic_account.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="18dp"
android:height="18dp"
android:viewportWidth="18"
android:viewportHeight="18">
<path
android:pathData="M8.9974,0.6665C4.3974,0.6665 0.6641,4.3998 0.6641,8.9998C0.6641,13.5998 4.3974,17.3332 8.9974,17.3332C13.5974,17.3332 17.3307,13.5998 17.3307,8.9998C17.3307,4.3998 13.5974,0.6665 8.9974,0.6665ZM8.9974,3.1665C10.3807,3.1665 11.4974,4.2832 11.4974,5.6665C11.4974,7.0498 10.3807,8.1665 8.9974,8.1665C7.6141,8.1665 6.4974,7.0498 6.4974,5.6665C6.4974,4.2832 7.6141,3.1665 8.9974,3.1665ZM8.9974,14.9998C6.9141,14.9998 5.0724,13.9332 3.9974,12.3165C4.0224,10.6582 7.3307,9.7498 8.9974,9.7498C10.6557,9.7498 13.9724,10.6582 13.9974,12.3165C12.9224,13.9332 11.0807,14.9998 8.9974,14.9998Z"
android:fillColor="#323232"/>
</vector>
12 changes: 6 additions & 6 deletions app/src/main/res/drawable/ic_info.xml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
android:width="18dp"
android:height="18dp"
android:viewportWidth="18"
android:viewportHeight="18">
<path
android:pathData="M7.999,1.333C4.319,1.333 1.332,4.32 1.332,8C1.332,11.68 4.319,14.667 7.999,14.667C11.679,14.667 14.665,11.68 14.665,8C14.665,4.32 11.679,1.333 7.999,1.333ZM8.665,11.333H7.332V7.333H8.665V11.333ZM8.665,6H7.332V4.667H8.665V6Z"
android:fillColor="#D9D9D9"/>
android:pathData="M8.1641,11.4998H9.8307V13.1665H8.1641V11.4998ZM8.1641,4.8332H9.8307V9.8332H8.1641V4.8332ZM8.9891,0.6665C4.3891,0.6665 0.6641,4.3998 0.6641,8.9998C0.6641,13.5998 4.3891,17.3332 8.9891,17.3332C13.5974,17.3332 17.3307,13.5998 17.3307,8.9998C17.3307,4.3998 13.5974,0.6665 8.9891,0.6665ZM8.9974,15.6665C5.3141,15.6665 2.3307,12.6832 2.3307,8.9998C2.3307,5.3165 5.3141,2.3332 8.9974,2.3332C12.6807,2.3332 15.6641,5.3165 15.6641,8.9998C15.6641,12.6832 12.6807,15.6665 8.9974,15.6665Z"
android:fillColor="#323232"/>
</vector>
9 changes: 9 additions & 0 deletions app/src/main/res/drawable/ic_info_fill.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="14dp"
android:height="14dp"
android:viewportWidth="14"
android:viewportHeight="14">
<path
android:pathData="M7.0026,0.3333C3.3226,0.3333 0.3359,3.3199 0.3359,6.9999C0.3359,10.6799 3.3226,13.6666 7.0026,13.6666C10.6826,13.6666 13.6693,10.6799 13.6693,6.9999C13.6693,3.3199 10.6826,0.3333 7.0026,0.3333ZM7.6693,10.3333H6.3359V6.3333H7.6693V10.3333ZM7.6693,4.9999H6.3359V3.6666H7.6693V4.9999Z"
android:fillColor="#D9D9D9"/>
</vector>
21 changes: 21 additions & 0 deletions app/src/main/res/drawable/ic_management.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<path
android:pathData="M13.8906,10.9419C15.0323,11.7169 15.8323,12.7669 15.8323,14.1669V16.6669H19.1656V14.1669C19.1656,12.3502 16.1906,11.2752 13.8906,10.9419Z"
android:fillColor="#323232"
android:fillType="evenOdd"/>
<path
android:pathData="M7.5052,10.0002C9.3462,10.0002 10.8385,8.5078 10.8385,6.6668C10.8385,4.8259 9.3462,3.3335 7.5052,3.3335C5.6643,3.3335 4.1719,4.8259 4.1719,6.6668C4.1719,8.5078 5.6643,10.0002 7.5052,10.0002Z"
android:fillColor="#323232"/>
<path
android:pathData="M12.499,10.0002C14.3406,10.0002 15.8323,8.5085 15.8323,6.6668C15.8323,4.8252 14.3406,3.3335 12.499,3.3335C12.1073,3.3335 11.7406,3.4168 11.3906,3.5335C12.0823,4.3918 12.499,5.4835 12.499,6.6668C12.499,7.8502 12.0823,8.9418 11.3906,9.8002C11.7406,9.9168 12.1073,10.0002 12.499,10.0002Z"
android:fillColor="#323232"
android:fillType="evenOdd"/>
<path
android:pathData="M7.5026,10.8335C5.2776,10.8335 0.8359,11.9502 0.8359,14.1668V16.6668H14.1693V14.1668C14.1693,11.9502 9.7276,10.8335 7.5026,10.8335Z"
android:fillColor="#323232"
android:fillType="evenOdd"/>
</vector>
Loading

0 comments on commit 1bb5adc

Please sign in to comment.