Skip to content

Commit

Permalink
Merge pull request #34 from hometerview/6/03_wrote_review
Browse files Browse the repository at this point in the history
[마이페이지 화면 - 03] 내가 작성한 집터뷰 화면
  • Loading branch information
likppi10 authored Aug 29, 2022
2 parents f192ad8 + 7045bb0 commit 124e438
Show file tree
Hide file tree
Showing 39 changed files with 1,547 additions and 41 deletions.
12 changes: 12 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,18 @@
android:usesCleartextTraffic="true"
tools:targetApi="31"
>
<activity
android:name=".ui.withdrawal.WithdrawalActivity"
android:exported="false"
/>
<activity
android:name=".ui.manageaccount.ManageAccountActivity"
android:exported="false"
/>
<activity
android:name=".ui.myreviews.MyReviewsActivity"
android:exported="false"
/>
<activity
android:name=".ui.updatenickname.UpdateNicknameActivity"
android:exported="false"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,24 @@ import com.ftw.domain.usecase.buildingreview.GetBuildingReviewsUseCase
import com.ftw.domain.usecase.login.LoginUseCase
import com.ftw.domain.usecase.review.GetLocationReviewsUseCase
import com.ftw.domain.usecase.searchaddressbuilding.GetSearchAddressBuildingUseCase
import com.ftw.domain.usecase.myreviews.GetMyReviewsUseCase
import com.ftw.hometerview.dispatcher.Dispatcher
import com.ftw.hometerview.ui.buildingreview.BuildingReviewViewModel
import com.ftw.hometerview.ui.main.MainViewModel
import com.ftw.hometerview.ui.main.home.review.LocationReviewListViewModel
import com.ftw.hometerview.ui.manageaccount.ManageAccountViewModel
import com.ftw.hometerview.ui.searchaddressbuilding.SearchAddressBuildingViewModel
import com.ftw.hometerview.ui.searchcompanyresult.SearchCompanyResultViewModel
import com.ftw.hometerview.ui.splash.SplashViewModel
import com.ftw.hometerview.ui.updatenickname.UpdateNicknameViewModel
import com.ftw.hometerview.ui.myreviews.MyReviewsViewModel
import com.ftw.hometerview.ui.withdrawal.WithdrawalViewModel
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.scopes.ActivityScoped
import dagger.hilt.android.scopes.FragmentScoped
import javax.inject.Named

@Module
Expand Down Expand Up @@ -92,4 +97,32 @@ class ActivityViewModelModule {
dispatcher
)
}

@Provides
@ActivityScoped
fun provideMyReviewsViewModel(
dispatcher: Dispatcher,
getMyReviewsUseCase: GetMyReviewsUseCase
): MyReviewsViewModel {
return MyReviewsViewModel(
dispatcher,
getMyReviewsUseCase
)
}

@Provides
@ActivityScoped
fun provideManageAccountViewModel(): ManageAccountViewModel {
return ManageAccountViewModel()
}

@Provides
@ActivityScoped
fun provideWithdrawalViewModel(
dispatcher: Dispatcher
): WithdrawalViewModel {
return WithdrawalViewModel(
dispatcher
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,5 @@ class MainFragmentViewModelModule {
getFavoriteReviewsUseCase
)
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.ftw.hometerview.di.usecase

import com.ftw.domain.usecase.myreviews.GetMyReviewsUseCase
import com.ftw.domain.usecase.myreviews.GetMyReviewsUseCaseImpl
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
class MyReviewsUseCaseModule {
@Provides
@Singleton
fun provideGetMyReviewsUseCase(): GetMyReviewsUseCase {
return GetMyReviewsUseCaseImpl()
}
}
41 changes: 41 additions & 0 deletions app/src/main/java/com/ftw/hometerview/ui/dialog/LogoutDialog.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.ftw.hometerview.ui.dialog

import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import com.ftw.hometerview.databinding.DialogLogoutBinding

class LogoutDialog() : DialogFragment() {
private var _binding: DialogLogoutBinding? = null
private val binding get() = _binding!!

interface Listener {
fun onClickLogoutFromLogoutDialog()
}

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = DialogLogoutBinding.inflate(inflater, container, false)
val view = binding.root
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
binding.logoutSelect.setOnClickListener {
(parentFragment as? Listener)?.onClickLogoutFromLogoutDialog()
}
binding.logoutCancle.setOnClickListener {
dismiss()
}
return view
}

override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,17 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.ftw.hometerview.R
import com.ftw.hometerview.databinding.FragmentMyPageBinding
import com.ftw.hometerview.ui.dialog.LogoutDialog
import com.ftw.hometerview.ui.login.LoginActivity
import com.ftw.hometerview.ui.manageaccount.ManageAccountActivity
import com.ftw.hometerview.ui.updatenickname.UpdateNicknameActivity
import com.ftw.hometerview.ui.myreviews.MyReviewsActivity
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import javax.inject.Inject

@AndroidEntryPoint
class MyPageFragment : Fragment() {
class MyPageFragment : Fragment(), LogoutDialog.Listener {

private lateinit var updateNicknameLauncher: ActivityResultLauncher<Intent>

Expand Down Expand Up @@ -72,9 +76,10 @@ class MyPageFragment : Fragment() {
viewModel.event.collect { event ->
when (event) {
MyPageViewModel.Event.None -> {}
is MyPageViewModel.Event.onClickUpdateNickname -> {
updateNicknameActivity(event.nickname)
}
is MyPageViewModel.Event.OnClickUpdateNickname -> updateNicknameActivity(event.nickname)
MyPageViewModel.Event.OnClickWrittenReview -> writtenReviewActivity()
MyPageViewModel.Event.OnClickManageAccount -> manageAccountActivity()
MyPageViewModel.Event.OnClickLogout -> onClickLogoutDialog()
}
}
}
Expand Down Expand Up @@ -130,6 +135,26 @@ class MyPageFragment : Fragment() {
updateNicknameLauncher.launch(UpdateNicknameActivity.newIntent(requireContext(), nickname))
}

private fun writtenReviewActivity() {
startActivity(MyReviewsActivity.newIntent(requireContext()))
}

private fun manageAccountActivity() {
startActivity(ManageAccountActivity.newIntent(requireContext()))
}

private fun onClickLogoutDialog(){
val logoutDialog = LogoutDialog()
logoutDialog.show(childFragmentManager, "CustomDialog")
}

override fun onClickLogoutFromLogoutDialog(){
requireActivity().apply {
finish()
startActivity(LoginActivity.newIntent(requireContext()))
}
}

private fun setLauncher() {
updateNicknameLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ class MyPageViewModel (

sealed class Event {
object None : Event()
class onClickUpdateNickname(val nickname: String) : Event()
class OnClickUpdateNickname(val nickname: String) : Event()
object OnClickWrittenReview : Event()
object OnClickManageAccount : Event()
object OnClickLogout : Event()
}

private val _user: MutableStateFlow<User> = MutableStateFlow(User.NONE)
Expand All @@ -39,7 +42,22 @@ class MyPageViewModel (
}

fun onClickUpdateNickname() {
_event.value = Event.onClickUpdateNickname(user.value.nickName)
_event.value = Event.OnClickUpdateNickname(user.value.nickName)
_event.value = Event.None
}

fun onClickWrittenReview() {
_event.value = Event.OnClickWrittenReview
_event.value = Event.None
}

fun onClickManageAccount() {
_event.value = Event.OnClickManageAccount
_event.value = Event.None
}

fun onClickLogout() {
_event.value = Event.OnClickLogout
_event.value = Event.None
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.ftw.hometerview.ui.manageaccount

import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.ftw.hometerview.R
import com.ftw.hometerview.databinding.ActivityManageAccountBinding
import com.ftw.hometerview.ui.withdrawal.WithdrawalActivity
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import javax.inject.Inject

@AndroidEntryPoint
class ManageAccountActivity : AppCompatActivity() {

companion object {
fun newIntent(context: Context): Intent {
return Intent(context, ManageAccountActivity::class.java)
}
}

@Inject
lateinit var viewModel: ManageAccountViewModel

private lateinit var binding: ActivityManageAccountBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView<ActivityManageAccountBinding>(
this,
R.layout.activity_manage_account
).apply {
viewModel = this@ManageAccountActivity.viewModel
}
observe()
}


private fun observe() {
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.event.collect { event ->
when (event) {
ManageAccountViewModel.Event.None -> {}
ManageAccountViewModel.Event.onClickServiceUseTerms -> onClickServiceUseTerms()
ManageAccountViewModel.Event.onClickUseUserInfo -> onClickUseUserInfo()
ManageAccountViewModel.Event.onClickLocationForService -> onClickLocationForService()
ManageAccountViewModel.Event.onClickOpenSourceLibrary -> onClickOpenSourceLibrary()
ManageAccountViewModel.Event.onClickWithdrawal -> onClickWithdrawal()
}
}
}
}
}

private fun onClickServiceUseTerms() { }
private fun onClickUseUserInfo() { }
private fun onClickLocationForService() { }
private fun onClickOpenSourceLibrary() { }
private fun onClickWithdrawal() {
startActivity(WithdrawalActivity.newIntent(this))
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.ftw.hometerview.ui.manageaccount

import kotlinx.coroutines.flow.*

class ManageAccountViewModel() {

sealed class Event {
object None : Event()
object onClickServiceUseTerms : Event()
object onClickUseUserInfo : Event()
object onClickLocationForService : Event()
object onClickOpenSourceLibrary : Event()
object onClickWithdrawal : Event()
}

private val _event: MutableStateFlow<Event> = MutableStateFlow(Event.None)
val event: StateFlow<Event> = _event.asStateFlow()

fun onClickServiceUseTerms() {
_event.value = Event.onClickServiceUseTerms
_event.value = Event.None
}
fun onClickUseUserInfo() {
_event.value = Event.onClickUseUserInfo
_event.value = Event.None
}
fun onClickLocationForService() {
_event.value = Event.onClickLocationForService
_event.value = Event.None
}
fun onClickOpenSourceLibrary() {
_event.value = Event.onClickOpenSourceLibrary
_event.value = Event.None
}
fun onClickWithdrawal() {
_event.value = Event.onClickWithdrawal
_event.value = Event.None
}
}
Loading

0 comments on commit 124e438

Please sign in to comment.