Skip to content

Commit

Permalink
Merge pull request #55 from iamport/feat/refactoring
Browse files Browse the repository at this point in the history
refactoring : sdk kotlin dsl 반영 및 databinding 삭제
  • Loading branch information
kjh5833 authored Jul 28, 2022
2 parents 07ddb18 + 22a6977 commit 69c9f8c
Show file tree
Hide file tree
Showing 27 changed files with 546 additions and 516 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -84,3 +84,5 @@ lint/outputs/
lint/tmp/
# lint/reports/
.DS_Store

buildSrc/build
4 changes: 3 additions & 1 deletion .idea/compiler.xml

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

14 changes: 1 addition & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,20 +40,7 @@
```gradle
implementation 'com.github.iamport:iamport-android:vX.Y.Z'
```
>
[Set DataBinding][6]
```gradle
android {
...
buildFeatures {
...
dataBinding true
}
}
```

[5]: https://github.com/iamport/iamport-android/releases
[6]: https://developer.android.com/jetpack/androidx/releases/databinding

### KOTLIN usage

Expand All @@ -72,6 +59,7 @@ class BaseApplication : Application() {
// DI 로 koin 을 사용하시는 경우
// 생성된 koinApplication 을 파라미터로 넘겨주셔야 합니다
// 참고 : 코틀린 1.5.0 이상 및 Koin 2.2.2 를 사용하시는 분들은 2.2.3 으로 업데이트 하시기 바랍니다.
// 참고 : v1.2.0 부터 koin 3.1.2 를 사용합니다.
class BaseApplication : Application() {
override fun onCreate() {
..
Expand Down
38 changes: 9 additions & 29 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ android {

buildFeatures {
viewBinding true
dataBinding true
}

lintOptions {
Expand All @@ -64,51 +63,32 @@ android {


dependencies {
// implementation fileTree(dir: "libs", include: ["*.jar"])
// implementation fileTree(dir: "libs", include: ["*.aar"])
implementation "org.jetbrains.kotlin:kotlin-stdlib:$Versions.kotlin_stdlib_jdk"
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5'
implementation 'androidx.navigation:navigation-ui-ktx:2.3.5'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.1'
implementation 'androidx.navigation:navigation-fragment-ktx:2.4.1'
implementation 'androidx.navigation:navigation-ui-ktx:2.4.1'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

// Android Support/Architecture
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
implementation "com.google.android.material:material:1.4.0"
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1'
implementation "com.google.android.material:material:1.5.0"

// multidex
implementation 'androidx.multidex:multidex:2.0.1'

// Gson
implementation 'com.google.code.gson:gson:2.8.7'

// Logger
// implementation 'com.orhanobut:logger:2.2.0'

// implementation "io.insert-koin:koin-androidx-scope:$Versions.koin_version"
//// Koin AndroidX ViewModel features
// implementation "io.insert-koin:koin-androidx-viewmodel:$Versions.koin_version"
//// Koin AndroidX Fragment features
// implementation "io.insert-koin:koin-androidx-fragment:$Versions.koin_version"
//// Koin AndroidX WorkManager
// implementation "io.insert-koin:koin-androidx-workmanager:$Versions.koin_version"
//// Koin AndroidX Jetpack Compose
//// implementation "io.insert-koin:koin-androidx-compose:$Versions.koin_version"
//// Koin AndroidX Experimental features
// implementation "io.insert-koin:koin-androidx-ext:$Versions.koin_version"
implementation 'com.google.code.gson:gson:2.9.0'

implementation project(':sdk') // 가맹점은 이 코드가 아닌 아래와 같은 "버전"을 통한 implementation 으로 반영해주세요
// implementation 'com.github.iamport:iamport-android:1.3.4'
// implementation 'com.github.iamport:iamport-android:fix~custom_data-SNAPSHOT'



}

2 changes: 1 addition & 1 deletion app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
# proguardFiles setting in build.gradle.kts.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
Expand Down
26 changes: 0 additions & 26 deletions app/src/main/java/com/iamport/sampleapp/ui/BaseFragment.kt

This file was deleted.

53 changes: 28 additions & 25 deletions app/src/main/java/com/iamport/sampleapp/ui/PaymentFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import android.widget.AdapterView
import android.widget.ArrayAdapter
import androidx.activity.OnBackPressedCallback
import androidx.core.widget.doAfterTextChanged
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import com.google.gson.GsonBuilder
import com.iamport.sampleapp.MerchantReceiver
Expand All @@ -34,15 +35,17 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import java.util.*

class PaymentFragment : BaseFragment<PaymentFragmentBinding>() {
class PaymentFragment: Fragment() {

private lateinit var binding: PaymentFragmentBinding

override val layoutResourceId: Int = R.layout.payment_fragment
private val receiver = MerchantReceiver()
val viewModel: ViewModel by activityViewModels()

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
// Iamport.init(this) // fragment
return super.onCreateView(inflater, container, savedInstanceState)
binding = PaymentFragmentBinding.inflate(inflater, container, false)
initStart()
return binding.root
}

override fun onAttach(context: Context) {
Expand Down Expand Up @@ -75,25 +78,25 @@ class PaymentFragment : BaseFragment<PaymentFragmentBinding>() {

}

override fun initStart() {
private fun initStart() {

viewDataBinding.paymentButton.setOnClickListener {
binding.paymentButton.setOnClickListener {
onClickPayment()
}

viewDataBinding.webviewModeButton.setOnClickListener {
binding.webviewModeButton.setOnClickListener {
onClickWebViewModePayment()
}

viewDataBinding.mobilewebModeButton.setOnClickListener {
binding.mobilewebModeButton.setOnClickListener {
onClickMobileWebModePayment()
}

viewDataBinding.certificationButton.setOnClickListener {
binding.certificationButton.setOnClickListener {
onClickCertification()
}

viewDataBinding.backButton.setOnClickListener {
binding.backButton.setOnClickListener {
backPressCallback.handleOnBackPressed()
}

Expand All @@ -107,10 +110,10 @@ class PaymentFragment : BaseFragment<PaymentFragmentBinding>() {
PG.getPGNames()
)

viewDataBinding.userCode.adapter = userCodeAdapter
viewDataBinding.userCode.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
binding.userCode.adapter = userCodeAdapter
binding.userCode.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
viewModel.userCode = Util.getUserCode(viewDataBinding.userCode.selectedItemPosition)
viewModel.userCode = Util.getUserCode(binding.userCode.selectedItemPosition)
}

override fun onNothingSelected(parent: AdapterView<*>?) {
Expand All @@ -119,29 +122,29 @@ class PaymentFragment : BaseFragment<PaymentFragmentBinding>() {

}

viewDataBinding.pg.adapter = pgAdapter
viewDataBinding.pg.onItemSelectedListener = pgSelectListener
binding.pg.adapter = pgAdapter
binding.pg.onItemSelectedListener = pgSelectListener

viewDataBinding.name.doAfterTextChanged {
binding.name.doAfterTextChanged {
viewModel.paymentName = it.toString()
}
viewDataBinding.name.setText("아임포트 Android SDK 결제 테스트")
viewDataBinding.amount.doAfterTextChanged {
binding.name.setText("아임포트 Android SDK 결제 테스트")
binding.amount.doAfterTextChanged {
viewModel.amount = it.toString()
}
viewDataBinding.amount.setText("1000")
binding.amount.setText("1000")

viewDataBinding.cardDirectCode.doAfterTextChanged {
binding.cardDirectCode.doAfterTextChanged {
viewModel.cardDirectCode = it.toString()
}
}

override fun onStart() {
super.onStart()
viewDataBinding.merchantUid.doAfterTextChanged {
binding.merchantUid.doAfterTextChanged {
viewModel.merchantUid = it.toString()
}
viewDataBinding.merchantUid.setText(getRandomMerchantUid())
binding.merchantUid.setText(getRandomMerchantUid())
// onPolling()
}

Expand Down Expand Up @@ -238,14 +241,14 @@ class PaymentFragment : BaseFragment<PaymentFragmentBinding>() {
private val pgSelectListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
viewModel.pg = PG.values()[position]
viewDataBinding.pgMethod.adapter = ArrayAdapter(
binding.pgMethod.adapter = ArrayAdapter(
requireContext(), R.layout.support_simple_spinner_dropdown_item,
Util.convertPayMethodNames(PG.values()[position])
)

viewDataBinding.pgMethod.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
binding.pgMethod.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
viewModel.payMethod = Util.getMappingPayMethod(viewModel.pg).elementAt(viewDataBinding.pgMethod.selectedItemPosition)
viewModel.payMethod = Util.getMappingPayMethod(viewModel.pg).elementAt(binding.pgMethod.selectedItemPosition)
}

override fun onNothingSelected(parent: AdapterView<*>?) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,34 @@
package com.iamport.sampleapp.ui

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import com.google.gson.GsonBuilder
import com.iamport.sampleapp.PaymentResultData
import com.iamport.sampleapp.R
import com.iamport.sampleapp.databinding.ResultFragmentBinding
import com.iamport.sdk.data.sdk.IamPortResponse

class PaymentResultFragment : BaseFragment<ResultFragmentBinding>() {
class PaymentResultFragment : Fragment() {

override val layoutResourceId: Int = R.layout.result_fragment
private lateinit var binding: ResultFragmentBinding

override fun initStart() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = ResultFragmentBinding.inflate(inflater, container, false)
initStart()
return binding?.root
}

private fun initStart() {
super.onStart()
val impResponse = PaymentResultData.result
val resultText = if (isSuccess(impResponse)) "결제성공" else "결제실패"
val color = if (isSuccess(impResponse)) R.color.md_green_200 else R.color.fighting

val tv = viewDataBinding.resultMessage
val tv = binding.resultMessage

tv.setTextColor(ContextCompat.getColor(requireContext(), color))
tv.text = "$resultText\n${GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create().toJson(impResponse)}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
Expand All @@ -15,13 +14,9 @@ import com.iamport.sampleapp.ViewModel
import com.iamport.sampleapp.databinding.WebViewModeFragmentBinding
import com.iamport.sdk.data.sdk.IamPortRequest
import com.iamport.sdk.data.sdk.IamPortResponse
import com.iamport.sdk.data.sdk.PG
import com.iamport.sdk.data.sdk.PayMethod
import com.iamport.sdk.domain.core.ICallbackPaymentResult
import com.iamport.sdk.domain.core.Iamport
import com.iamport.sdk.domain.utils.CONST
import com.iamport.sdk.domain.utils.Event
import com.iamport.sdk.domain.utils.Util
import java.util.*

/**
Expand All @@ -39,7 +34,6 @@ class WebViewModeFragment : Fragment() {
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Iamport.init(this)
binding = WebViewModeFragmentBinding.inflate(inflater, container, false)
// binding?.webview?.loadUrl("https://github.com/iamport/iamport-android")
request = viewModel.createIamPortRequest()
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/res/layout/mobile_web_view_mode_fragment.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webview_mode_fragment"
android:id="@+id/mobile_webview_mode_fragment"
tools:context=".ui.WebViewModeFragment">

<WebView
Expand All @@ -14,7 +14,7 @@
android:visibility="visible"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/webview_mode_fragment"/>
app:layout_constraintTop_toTopOf="@id/mobile_webview_mode_fragment"/>

<Button
android:id="@+id/normalmode_button"
Expand Down
Loading

0 comments on commit 69c9f8c

Please sign in to comment.