Skip to content

Commit

Permalink
Merge pull request #202 from Hous-Release/develop
Browse files Browse the repository at this point in the history
release 1.0.6
  • Loading branch information
KWY0218 authored Feb 26, 2023
2 parents c05053b + d422c46 commit d1c7973
Show file tree
Hide file tree
Showing 54 changed files with 511 additions and 398 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/PR_Builder.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ jobs:
- name: Access Local Properties
env:
HOST_URI: ${{ secrets.HOST_URI }}
HOST_RELEASE_URI: ${{ secrets.HOST_RELEASE_URI }}
KAKAO_NATIVE_APP_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }}
KAKAO_REDIRECT_SCHEME: ${{ secrets.KAKAO_REDIRECT_SCHEME }}
KEYSTORE_PATH: ${{ secrets.KEYSTORE_PATH }}
Expand All @@ -51,6 +52,7 @@ jobs:
STORE_FILE: ${{ secrets.STORE_FILE }}
run: |
echo HOST_URI=\"$HOST_URI\" >> local.properties
echo HOST_RELEASE_URI=\"$HOST_RELEASE_URI\" >> local.properties
echo KAKAO_NATIVE_APP_KEY=\"$KAKAO_NATIVE_APP_KEY\" >> local.properties
echo KAKAO_REDIRECT_SCHEME=\"$KAKAO_REDIRECT_SCHEME\" >> local.properties
echo KEYSTORE_PATH= $KEYSTORE_PATH >> local.properties
Expand Down
18 changes: 12 additions & 6 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,6 @@ android {

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

buildConfigField(
"String",
"HOST_URI",
properties.getProperty("HOST_URI")
)

buildConfigField(
"String",
"KAKAO_NATIVE_APP_KEY",
Expand All @@ -71,6 +65,18 @@ android {
"proguard-rules.pro"
)
signingConfig = signingConfigs.getByName("release")
buildConfigField(
"String",
"HOST_URI",
properties.getProperty("HOST_RELEASE_URI")
)
}
getByName("debug") {
buildConfigField(
"String",
"HOST_URI",
properties.getProperty("HOST_URI")
)
}
}

Expand Down
2 changes: 1 addition & 1 deletion app/src/main/assets/splash.json

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import hous.release.android.util.HousLogEvent.clickLogEvent
import hous.release.android.util.ToastMessageUtil
import hous.release.android.util.binding.BindingFragment
import hous.release.android.util.extension.repeatOnStarted
import hous.release.android.util.extension.setOnSingleClickListener
import hous.release.domain.entity.HomyType
import hous.release.domain.entity.response.Homy

Expand Down Expand Up @@ -66,7 +67,7 @@ class HousFragment : BindingFragment<FragmentHousBinding>(R.layout.fragment_hous
}

private fun initClickListener() {
binding.btnHousEdit.setOnClickListener {
binding.btnHousEdit.setOnSingleClickListener {
startActivity(
Intent(requireContext(), EditHousNameActivity::class.java).apply {
putExtra(ROOM_NAME, viewModel.hous.value.roomName)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import hous.release.android.databinding.ItemHousHomiesBinding
import hous.release.android.util.ItemDiffCallback
import hous.release.android.util.extension.setOnSingleClickListener
import hous.release.domain.entity.response.Homy

class HomiesAdapter(
Expand All @@ -18,7 +19,7 @@ class HomiesAdapter(
fun bind(homy: Homy) {
binding.homy = homy
binding.executePendingBindings()
binding.clHousProfile.setOnClickListener {
binding.clHousProfile.setOnSingleClickListener {
onClickHomie(homy, absoluteAdapterPosition)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
package hous.release.android.presentation.login

import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.view.inputmethod.EditorInfo
import androidx.activity.OnBackPressedCallback
import androidx.activity.viewModels
import dagger.hilt.android.AndroidEntryPoint
import hous.release.android.R
import hous.release.android.databinding.ActivityUserInputBinding
import hous.release.android.presentation.enter_room.EnterRoomActivity
import hous.release.android.util.KeyBoardUtil
import hous.release.android.util.ToastMessageUtil
import hous.release.android.util.binding.BindingActivity
import hous.release.android.util.dialog.DatePickerClickListener
import hous.release.android.util.dialog.DatePickerDialog
import hous.release.android.util.dialog.WarningDialogFragment.Companion.CONFIRM_ACTION
import hous.release.android.util.extension.repeatOnStarted
import hous.release.android.util.extension.setOnSingleClickListener
import kotlin.system.exitProcess

@AndroidEntryPoint
Expand All @@ -23,10 +28,31 @@ class UserInputActivity : BindingActivity<ActivityUserInputBinding>(R.layout.act
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.vm = userInputViewModel
initSignUpCollect()
initNextBtnOnClickListener()
initBackPressedCallback()
initSignUpObserve()
initBirthdayOnClickListener()
initEditTextClearFocus()
initKeyboardNextClickListener()
}

private fun initSignUpCollect() {
repeatOnStarted {
userInputViewModel.isSignUp.collect { success ->
if (success) {
startActivity(Intent(this, EnterRoomActivity::class.java))
finishAffinity()
}
}
}
}

private fun initNextBtnOnClickListener() {
binding.btnUserInputNext.setOnClickListener {
val toEnterRoom = Intent(this, EnterRoomActivity::class.java)
startActivity(toEnterRoom)
finishAffinity()
}
}

private fun initBackPressedCallback() {
Expand All @@ -50,41 +76,41 @@ class UserInputActivity : BindingActivity<ActivityUserInputBinding>(R.layout.act
)
}

private fun initSignUpObserve() {
userInputViewModel.isSignUp.observe(this) {
if (userInputViewModel.isSignUp.value == true) {
val toEnterRoom = Intent(this, EnterRoomActivity::class.java)
startActivity(toEnterRoom)
finishAffinity()
}
}
}

private fun initNextBtnOnClickListener() {
binding.btnUserInputNext.setOnClickListener {
val toEnterRoom = Intent(this, EnterRoomActivity::class.java)
startActivity(toEnterRoom)
finishAffinity()
}
}

private fun initBirthdayOnClickListener() {
binding.etUserInputBirthday.setOnClickListener {
binding.etUserInputBirthday.setOnSingleClickListener {
DatePickerDialog().apply {
arguments = Bundle().apply {
putParcelable(
CONFIRM_ACTION,
DatePickerClickListener(
confirmActionWithDate = { date -> initDate(date) }
confirmActionWithDate = { date ->
userInputViewModel.initSelectedBirthDate(date)
}
)
)
}
}.show(supportFragmentManager, SELECT_BIRTHDAY)
}
}

private fun initDate(date: String) {
userInputViewModel.initSelectedBirthDate(date)
@SuppressLint("ClickableViewAccessibility")
private fun initEditTextClearFocus() {
binding.clUserInput.setOnTouchListener { _, _ ->
KeyBoardUtil.hide(activity = this)
return@setOnTouchListener false
}
}

private fun initKeyboardNextClickListener() {
binding.etUserInputNickname.setOnEditorActionListener { _, actionId, _ ->
var handled = false
if (actionId == EditorInfo.IME_ACTION_NEXT) {
binding.etUserInputBirthday.performClick()
handled = true
}
KeyBoardUtil.hide(activity = this)
handled
}
}

companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package hous.release.android.presentation.login

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import hous.release.domain.entity.SplashState
import hous.release.domain.usecase.InitHousTokenUseCase
import hous.release.domain.usecase.PostSignUpUseCase
import hous.release.domain.usecase.SetSplashStateUseCase
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.launch
import javax.inject.Inject

Expand All @@ -18,27 +19,25 @@ class UserInputViewModel @Inject constructor(
private val initHousTokenUseCase: InitHousTokenUseCase,
private val setSplashStateUseCase: SetSplashStateUseCase
) : ViewModel() {
val nickname = MutableLiveData<String>()
val nickname = MutableStateFlow("")
val birthday = MutableStateFlow("")
val isPrivateBirthday = MutableStateFlow(false)

val birthday = MutableLiveData("")

val isPrivateBirthday = MutableLiveData(false)

private val _isSignUp = MutableLiveData<Boolean>()
val isSignUp: LiveData<Boolean> = _isSignUp
private val _isSignUp = MutableSharedFlow<Boolean>()
val isSignUp = _isSignUp.asSharedFlow()

fun nextOnClick() {
viewModelScope.launch {
postSignUpUseCase(
birthday = requireNotNull(birthday.value),
isPublic = requireNotNull(isPrivateBirthday.value != true),
nickname = requireNotNull(nickname.value)
birthday = birthday.value,
isPublic = !isPrivateBirthday.value,
nickname = nickname.value
).onSuccess { response ->
initHousTokenUseCase(response.token)
setSplashStateUseCase(SplashState.ENTER_ROOM)
_isSignUp.value = true
_isSignUp.emit(true)
}.onFailure {
_isSignUp.value = false
_isSignUp.emit(false)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import hous.release.android.databinding.FragmentOurRuleAddBinding
import hous.release.android.presentation.our_rules.adapter.OurRulesAddAdapter
import hous.release.android.presentation.our_rules.type.ButtonState
import hous.release.android.util.KeyBoardUtil
import hous.release.android.util.ToastMessageUtil
import hous.release.android.util.binding.BindingFragment
import hous.release.android.util.dialog.ConfirmClickListener
import hous.release.android.util.dialog.LoadingDialogFragment
Expand All @@ -37,9 +38,10 @@ class OurRuleAddFragment :
initSaveButtonListener()
initAddRuleButtonListener()
initAdapter()
collectUiState()
collectUiStateAndUiEvent()
}

// // {"status":409,"success":false,"message":"이미 존재하는 규칙입니다."}
override fun onDestroyView() {
super.onDestroyView()
onBackPressedCallback.remove()
Expand All @@ -54,17 +56,36 @@ class OurRuleAddFragment :

private fun hideKeyBoard() = KeyBoardUtil.hide(requireActivity())

private fun collectUiState() {
private fun collectUiStateAndUiEvent() {
repeatOnStarted {
viewModel.uiState.collect { uiState ->
requireNotNull(ourRulesAddAdapter) {
getString(R.string.null_point_exception)
}.submitList(uiState.ourRuleList)
if (viewModel.uiState.value.addedRuleList.isNotEmpty()) {
viewModel.setSaveButtonState(ButtonState.ACTIVE)
} else {
viewModel.setSaveButtonState(ButtonState.INACTIVE)
}
viewModel.uiState.collect(::handelUiState)
}
repeatOnStarted {
viewModel.uiEvent.collect(::handleUiEvent)
}
}

private fun handelUiState(uiState: OurRuleAddUIState) {
requireNotNull(ourRulesAddAdapter) {
getString(R.string.null_point_exception)
}.submitList(uiState.ourRuleList)
if (viewModel.uiState.value.addedRuleList.isNotEmpty()) {
viewModel.setSaveButtonState(ButtonState.ACTIVE)
} else {
viewModel.setSaveButtonState(ButtonState.INACTIVE)
}
}

private fun handleUiEvent(uiEvent: OurRuleAddEvent) {
when (uiEvent) {
is OurRuleAddEvent.DuplicateError -> {
ToastMessageUtil.showToast(
requireContext(),
getString(R.string.our_rule_duplicate_rule)
)
}
is OurRuleAddEvent.AddSuccess -> {
findNavController().popBackStack()
}
}
}
Expand Down Expand Up @@ -94,9 +115,8 @@ class OurRuleAddFragment :
viewLifecycleOwner.lifecycleScope.launch {
val loadingDialogFragment = LoadingDialogFragment()
loadingDialogFragment.show(childFragmentManager, LoadingDialogFragment.TAG)
viewModel.putAddRuleList().join()
viewModel.addRuleList().join()
loadingDialogFragment.dismiss()
findNavController().popBackStack()
}
}
}
Expand Down
Loading

0 comments on commit d1c7973

Please sign in to comment.