Skip to content

Commit

Permalink
Merge branch 'develop' of https://github.com/Fundito/Fundito-Android
Browse files Browse the repository at this point in the history
…into develop
  • Loading branch information
sssungeun committed Jan 2, 2020
2 parents 545325d + 7dc51fc commit 73703df
Show file tree
Hide file tree
Showing 16 changed files with 216 additions and 65 deletions.
2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions app/src/main/java/com/fundito/fundito/broadcast/Broadcast.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package com.fundito.fundito.broadcast

import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.channels.BroadcastChannel
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.ConflatedBroadcastChannel

/**
* Created by mj on 01, January, 2020
*/
@ExperimentalCoroutinesApi
object Broadcast {
val chargeCompleteEvent : BroadcastChannel<Int> = BroadcastChannel(Channel.CONFLATED)
val chargeCompleteEvent : BroadcastChannel<Int> = ConflatedBroadcastChannel()

val fundEvent : BroadcastChannel<Pair<Int,Int>> = ConflatedBroadcastChannel()
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,24 +21,28 @@ import com.fundito.fundito.databinding.DialogLoadingBinding
* Created by mj on 24, December, 2019
*/
fun Fragment.showLoading() {
if(childFragmentManager.findFragmentByTag("Loading") != null) return

val dialog = LoadingDialog()
dialog.show(childFragmentManager, "Loading")
}

fun AppCompatActivity.showLoading() {
if(supportFragmentManager.findFragmentByTag("Loading") != null) return

val dialog = LoadingDialog()
dialog.show(supportFragmentManager, "Loading")
}

fun Fragment.hideLoading() {
childFragmentManager.findFragmentByTag("Loading")?.let {
childFragmentManager.beginTransaction().remove(it).commit()
(it as? LoadingDialog)?.dismiss()
}
}

fun AppCompatActivity.hideLoading() {
supportFragmentManager.findFragmentByTag("Loading")?.let {
supportFragmentManager.beginTransaction().remove(it).commit()
(it as? LoadingDialog)?.dismiss()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ object NetworkClient {
val newRequest = chain.request().newBuilder()
.addHeader("token", SPUtil.accessToken).build()

Timber.e("TOKEN : ${SPUtil.accessToken}")

// Timber.e("TOKEN : ${SPUtil.accessToken}")
Timber.e("${newRequest.method} - ${newRequest.url} \n{\n\t${newRequest.body?.toString()}\n}\n" )

/**
* 2) General Response from Server (Unwrapping data)
Expand All @@ -53,7 +53,7 @@ object NetworkClient {
*/
val rawJson = response.body?.string() ?: "{}"

Timber.e(rawJson)
// Timber.e(rawJson)

/**
* 4) Wrap body with gson
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,16 @@ class ChargeActivity : DaggerAppCompatActivity() {
}
}

private var isLoading = false
private fun observeViewModel() {
mViewModel.apply {

loading.observe(this@ChargeActivity) {
if(isLoading == it) return@observe
isLoading = it
if(it) showLoading() else hideLoading()
}

passwordMatch.observeOnce(this@ChargeActivity) { matched ->

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ import javax.inject.Inject
* Created by mj on 27, December, 2019
*/
class ChargeViewModel @Inject constructor() : ViewModel() {

private val _loading : MutableLiveData<Boolean> = MutableLiveData()
val loading : LiveData<Boolean> = _loading

val chargeMoney : MutableLiveData<Long> = MutableLiveData(0L)

val visiblePlaceHolder = chargeMoney.map {
Expand All @@ -20,21 +24,24 @@ class ChargeViewModel @Inject constructor() : ViewModel() {
private val _passwordMatch : MutableLiveData<Once<Boolean>> = MutableLiveData()
val passwordMatch : LiveData<Once<Boolean>> = _passwordMatch


val cardData = liveData {
_loading.value = true
kotlin.runCatching {
NetworkClient.cardService.getCard()
}.onSuccess {
emit(it)
}
_loading.value = false
}

val funditoMoney = liveData {
_loading.value = true
kotlin.runCatching {
NetworkClient.userService.getFunditoMoney()
}.onSuccess {
it.getOrNull(0)?.let { emit(it.point) }
}
_loading.value = false
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import androidx.lifecycle.observe
import androidx.viewpager2.widget.ViewPager2
import com.fundito.fundito.R
import com.fundito.fundito.common.setVisibilityBinding
import com.fundito.fundito.common.showAlert
import com.fundito.fundito.common.widget.*
import dagger.android.support.DaggerAppCompatActivity
import kotlinx.android.synthetic.main.activity_funding.*
Expand Down Expand Up @@ -105,9 +106,6 @@ class FundingActivity : DaggerAppCompatActivity() {
}
})




}
2 -> {
// startActivity(Intent(this@FundingActivity,MainActivity::class.java).apply { flags = Intent.FLAG_ACTIVITY_CLEAR_TOP })
Expand All @@ -117,9 +115,13 @@ class FundingActivity : DaggerAppCompatActivity() {
}
}

private var isLoading = false
private fun observeViewModel() {
mViewModel.apply {
loading.observe(this@FundingActivity) {
if(isLoading == it) return@observe
isLoading = it

if (it) showLoading() else hideLoading()
}

Expand All @@ -135,6 +137,10 @@ class FundingActivity : DaggerAppCompatActivity() {
keyboardDialog?.onPasswordMatchFailed()
}
}

chargeFail.observeOnce(this@FundingActivity) {
showAlert("펀디토 머니 충전 실패")
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,24 @@ class FundingCompleteFragment : DaggerFragment() {
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
observeViewModel()
}

private fun observeViewModel() {
mViewModel.apply {
store.observe(viewLifecycleOwner) {
storeName.text = it.name
}

inputMoney.observe(viewLifecycleOwner) {
completeCost.text = it.toMoney()
completeCost2.text = "${it.toMoney()}"
}

refundMoney.observe(viewLifecycleOwner) {
additionalCost.text = "(+${it.roundToInt().toMoney()} 원) ${mViewModel.totalMoney.value!!.roundToInt().toMoney()}"
}
}
}

}
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.fundito.fundito.presentation.funding

import androidx.lifecycle.*
import com.fundito.fundito.broadcast.Broadcast
import com.fundito.fundito.common.widget.Once
import com.fundito.fundito.data.service.NetworkClient
import kotlinx.coroutines.launch
import timber.log.Timber
import javax.inject.Inject
import javax.inject.Named

Expand All @@ -21,19 +23,23 @@ class FundingViewModel @Inject constructor(
val loading : LiveData<Boolean> = _loading

val cardData = liveData {
_loading.value = true
kotlin.runCatching {
NetworkClient.cardService.getCard()
}.onSuccess {
emit(it)
}
_loading.value = false
}

val funditoMyMoney = liveData<Int> {
_loading.value = true
kotlin.runCatching {
NetworkClient.userService.getFunditoMoney()
}.onSuccess {
emit(it.getOrNull(0)?.point ?: 0)
}
_loading.value = false
}

val inputMoney = MutableLiveData<Int>()
Expand All @@ -47,29 +53,53 @@ class FundingViewModel @Inject constructor(
}

val store = liveData {
_loading.value = true
kotlin.runCatching {
NetworkClient.storeInfoService.getStoreInfo(storeIdx)
}.onSuccess {
emit(it)
}
_loading.value = false
}

val password = MutableLiveData<String>("")

private val _fundResult : MutableLiveData<Once<Boolean>> = MutableLiveData()
val fundResult : LiveData<Once<Boolean>> = _fundResult

private val _chargeFail : MutableLiveData<Once<Unit>> = MutableLiveData()
val chargeFail : LiveData<Once<Unit>> = _chargeFail

fun onCheckPasswordMatch() {
val password = password.value ?: return
val funditoMoney = funditoMyMoney.value ?: return
val inputMoney = inputMoney.value ?: return

val diff = funditoMoney - inputMoney

viewModelScope.launch {
_loading.value = true
kotlin.runCatching {
if(diff < 0) {
try {
NetworkClient.userService.chargeFunditoMoney(-diff, password)
Broadcast.chargeCompleteEvent.send(-diff)
Timber.e("send charge")
}catch(t: Throwable) {
_chargeFail.value = Once(Unit)
return@runCatching
}
}

NetworkClient.fundingService.fundWithPassword(password,storeIdx,inputMoney)
Broadcast.fundEvent.send(storeIdx to inputMoney)
Timber.e("fund send")
}.onSuccess {
_fundResult.value = Once(true)
}.onFailure {
_fundResult.value = Once(false)
}
_loading.value = false
}
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
package com.fundito.fundito.presentation.main.home

import androidx.lifecycle.*
import com.fundito.fundito.broadcast.Broadcast
import com.fundito.fundito.data.model.Funding
import com.fundito.fundito.data.service.NetworkClient
import com.fundito.fundito.data.service.WifiStoreResponse
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.channels.consumeEach
import kotlinx.coroutines.launch
import timber.log.Timber
import javax.inject.Inject

/**
* Created by mj on 31, December, 2019
*/
@UseExperimental(ExperimentalCoroutinesApi::class)
class HomeViewModel @Inject constructor() : ViewModel() {

val userData = liveData {
Expand All @@ -29,8 +34,6 @@ class HomeViewModel @Inject constructor() : ViewModel() {
private val _connectedStoreTimeLineItem : MutableLiveData<Funding> = MutableLiveData()
val connectedStoreTimeLineItem : LiveData<Funding> = _connectedStoreTimeLineItem



fun onWifiStateChanged(ssid : String) {
if(!ssid.isBlank()) {

Expand All @@ -45,7 +48,6 @@ class HomeViewModel @Inject constructor() : ViewModel() {
it.second.getOrNull(0)?.let {
_connectedStoreTimeLineItem.value = it
}

}.onFailure {
_storeConnectWithWifi.value = false
}
Expand All @@ -55,4 +57,21 @@ class HomeViewModel @Inject constructor() : ViewModel() {
_storeConnectWithWifi.value = true
}
}

init {
viewModelScope.launch {
Broadcast.fundEvent.openSubscription().consumeEach {
Timber.e("밤ㄴ이ㅓㅁ")
if(it.first == connectedStoreData.value?.storeIdx) {
kotlin.runCatching {
NetworkClient.storeInfoService.listStoreFundingTimeLine(it.first)[0]
}.onSuccess {
_connectedStoreTimeLineItem.value = it
}
}
}
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class RecentFundingAdapter : ListAdapter<RecentFundingItem, RecentFundingAdapter
binding.money.text = item.second.fundingMoney.toMoney() + ""
binding.refundMoney.text = buildSpannedString {
append("회수금액 ")
color(GlobalApp.getColor(R.color.colorPrimary)){ append("${item.second.rewardMoney.toMoney()}원 (${item.second.rewardPercent}%)") }
color(GlobalApp.getColor(R.color.blueberry_two)){ append("${item.second.rewardMoney.toMoney()}원 (${item.second.rewardPercent}%)") }
}
binding.time.text = "${cal[Calendar.HOUR_OF_DAY]}:${cal[Calendar.MINUTE]}"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import com.fundito.fundito.presentation.store.StoreDetailActivity
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.tabs.TabLayout
import dagger.android.support.DaggerFragment
import kotlinx.coroutines.channels.consumeEach
import kotlinx.coroutines.launch
import javax.inject.Inject
import kotlin.math.roundToInt
Expand Down Expand Up @@ -148,7 +149,7 @@ class StatusFragment : DaggerFragment(), HasDefaultViewModelProviderFactory {
override fun onSlide(bottomSheet: View, slideOffset: Float) {
mBinding.bottomSheet1.remain.text = "${((mViewModel.funditoMoney.value?:0) * slideOffset).roundToLong().toMoney()}"
mBinding.bottomSheet1.funding.text = "${((mViewModel.fundingData.value?.totalFundedMoney?:0) * slideOffset).roundToLong().toMoney()}"
mBinding.bottomSheet1.maxReturnPrice.text = "${((mViewModel.fundingData.value?.totalRewardPercent?:0) * slideOffset).roundToLong().toMoney()}"
mBinding.bottomSheet1.maxReturnPrice.text = "${((mViewModel.fundingData.value?.totalGetMoney ?: 0) * slideOffset).roundToLong().toMoney()}"
}

override fun onStateChanged(bottomSheet: View, newState: Int) {
Expand Down Expand Up @@ -361,9 +362,10 @@ class StatusFragment : DaggerFragment(), HasDefaultViewModelProviderFactory {

private fun listenBroadcast() {
lifecycleScope.launch {
for(e in Broadcast.chargeCompleteEvent.openSubscription()) {
Broadcast.chargeCompleteEvent.openSubscription().consumeEach {

mViewModel.getFunditoMoney()
mBinding.bottomSheet1.remain.text = e.toMoney() + ""
mBinding.bottomSheet1.remain.text = it.toMoney() + ""
}
}
}
Expand Down
Loading

0 comments on commit 73703df

Please sign in to comment.