Skip to content

Commit c296f9f

Browse files
author
Dmytro Kos
authored
Release 1.2.1
Stage
2 parents 0274651 + 264c70a commit c296f9f

File tree

189 files changed

+4608
-949
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

189 files changed

+4608
-949
lines changed

app/src/main/java/com/verygoodsecurity/demoapp/activity_case/VGSCollectActivity.kt

Lines changed: 58 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,13 @@ import com.verygoodsecurity.vgscollect.core.model.network.VGSResponse
2323
import com.verygoodsecurity.vgscollect.core.model.state.FieldState
2424
import com.verygoodsecurity.vgscollect.core.storage.OnFieldStateChangeListener
2525
import com.verygoodsecurity.vgscollect.view.card.BrandParams
26+
import com.verygoodsecurity.vgscollect.view.card.CardBrand
2627
import com.verygoodsecurity.vgscollect.view.card.CardType
27-
import com.verygoodsecurity.vgscollect.view.card.ChecksumAlgorithm
28-
import com.verygoodsecurity.vgscollect.view.card.CustomCardBrand
2928
import com.verygoodsecurity.vgscollect.view.card.formatter.CardMaskAdapter
3029
import com.verygoodsecurity.vgscollect.view.card.icon.CardIconAdapter
31-
import com.verygoodsecurity.vgscollect.view.card.validation.payment.PersonNameRule
30+
import com.verygoodsecurity.vgscollect.view.card.validation.payment.ChecksumAlgorithm
31+
import com.verygoodsecurity.vgscollect.view.card.validation.rules.PaymentCardNumberRule
32+
import com.verygoodsecurity.vgscollect.view.card.validation.rules.PersonNameRule
3233
import kotlinx.android.synthetic.main.activity_collect_demo.*
3334

3435
class VGSCollectActivity: AppCompatActivity(), VgsCollectResponseListener, View.OnClickListener {
@@ -115,8 +116,55 @@ class VGSCollectActivity: AppCompatActivity(), VgsCollectResponseListener, View.
115116
})
116117
}
117118

119+
private fun setupDefaultBehaviour() {
120+
val rule : PaymentCardNumberRule = PaymentCardNumberRule.ValidationBuilder()
121+
// .setAlgorithm(ChecksumAlgorithm.NONE)
122+
123+
.setAllowableNumberLength(arrayOf(15, 13, 19))
124+
125+
.setAllowableMinLength(3)
126+
.setAllowableMaxLength(7)
127+
128+
.build()
129+
130+
cardNumberField.addRule(rule)
131+
}
132+
133+
private fun addCustomBrands() {
134+
val params = BrandParams(
135+
"### ### ### ###",
136+
ChecksumAlgorithm.LUHN,
137+
arrayOf(4, 10, 12),
138+
arrayOf(3, 5)
139+
)
140+
val newBrand = CardBrand(
141+
"^777",
142+
"NEW BRAND",
143+
R.drawable.ic_cards,
144+
params
145+
)
146+
cardNumberField.addCardBrand(newBrand)
147+
148+
149+
val params2 = BrandParams(
150+
"### ### ### ###### ###",
151+
ChecksumAlgorithm.LUHN,
152+
arrayOf(18),
153+
arrayOf(4)
154+
)
155+
val newBrand2 = CardBrand(
156+
"^878",
157+
"VGS Brand",
158+
CardType.MAESTRO.resId,
159+
params2
160+
)
161+
162+
cardNumberField.addCardBrand(newBrand2)
163+
}
164+
118165
private fun setupCardNumberField() {
119166
addCustomBrands()
167+
setupDefaultBehaviour()
120168

121169
vgsForm.bindView(cardNumberField)
122170

@@ -138,6 +186,13 @@ class VGSCollectActivity: AppCompatActivity(), VgsCollectResponseListener, View.
138186
mask: String
139187
): String {
140188
return when(cardType) {
189+
CardType.UNKNOWN -> {
190+
if (bin == "7771") {
191+
"# # # #"
192+
} else {
193+
mask
194+
}
195+
}
141196
CardType.AMERICAN_EXPRESS -> {
142197
if (bin.contains("371233")) {
143198
"### # ###### ### ##"
@@ -157,37 +212,6 @@ class VGSCollectActivity: AppCompatActivity(), VgsCollectResponseListener, View.
157212
})
158213
}
159214

160-
private fun addCustomBrands() {
161-
val params = BrandParams(
162-
"### ### ### ###",
163-
ChecksumAlgorithm.LUHN,
164-
arrayOf(4, 10, 12),
165-
arrayOf(3, 5)
166-
)
167-
val newBrand = CustomCardBrand(
168-
"^777",
169-
"NEW BRAND",
170-
R.drawable.ic_cards,
171-
params
172-
)
173-
cardNumberField.addCardBrand(newBrand)
174-
175-
176-
val params2 = BrandParams(
177-
"### ### ### ###",
178-
ChecksumAlgorithm.LUHN,
179-
arrayOf(18),
180-
arrayOf(4)
181-
)
182-
val newBrand2 = CustomCardBrand(
183-
"^878",
184-
"VGS Brand",
185-
CardType.MAESTRO.resId,
186-
params2
187-
)
188-
cardNumberField.addCardBrand(newBrand2)
189-
}
190-
191215
private fun retrieveSettings() {
192216
val bndl = intent?.extras
193217

app/src/main/res/layout/activity_collect_demo.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@
139139
app:fieldName="card_data.cardNumber"
140140
style="@style/AppTheme.PaymentField"
141141
app:numberDivider="-"
142+
app:validationRule="acceptUnknown"
142143
app:fontFamily="@font/robotomono_light"
143144
android:nextFocusDown="@+id/cardHolderField"
144145
app:imeOptions="actionNext"
@@ -147,7 +148,6 @@
147148

148149
</FrameLayout>
149150

150-
151151
<FrameLayout
152152
android:id="@+id/contHoldNum"
153153
android:layout_width="match_parent"

docs/allclasses-frame.html

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
<!-- NewPage -->
33
<html lang="en">
44
<head>
5-
<!-- Generated by javadoc (1.8.0_242-release) on Tue Jun 30 18:15:00 EEST 2020 -->
5+
<!-- Generated by javadoc (1.8.0_242-release) on Fri Jul 03 17:39:15 EEST 2020 -->
66
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
77
<title>All Classes</title>
8-
<meta name="date" content="2020-06-30">
8+
<meta name="date" content="2020-07-03">
99
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
1010
<script type="text/javascript" src="script.js"></script>
1111
</head>
@@ -17,15 +17,16 @@ <h1 class="bar">All&nbsp;Classes</h1>
1717
<li><a href="com/verygoodsecurity/vgscollect/app/BaseTransmitActivity.Companion.html" title="class in com.verygoodsecurity.vgscollect.app" target="classFrame">BaseTransmitActivity.Companion</a></li>
1818
<li><a href="com/verygoodsecurity/vgscollect/util/BooleanExtensionKt.html" title="class in com.verygoodsecurity.vgscollect.util" target="classFrame">BooleanExtensionKt</a></li>
1919
<li><a href="com/verygoodsecurity/vgscollect/view/card/BrandParams.html" title="class in com.verygoodsecurity.vgscollect.view.card" target="classFrame">BrandParams</a></li>
20+
<li><a href="com/verygoodsecurity/vgscollect/view/card/CardBrand.html" title="class in com.verygoodsecurity.vgscollect.view.card" target="classFrame">CardBrand</a></li>
2021
<li><a href="com/verygoodsecurity/vgscollect/view/card/icon/CardIconAdapter.html" title="class in com.verygoodsecurity.vgscollect.view.card.icon" target="classFrame">CardIconAdapter</a></li>
2122
<li><a href="com/verygoodsecurity/vgscollect/view/card/formatter/CardMaskAdapter.html" title="class in com.verygoodsecurity.vgscollect.view.card.formatter" target="classFrame">CardMaskAdapter</a></li>
2223
<li><a href="com/verygoodsecurity/vgscollect/view/card/formatter/CardNumberFormatter.html" title="class in com.verygoodsecurity.vgscollect.view.card.formatter" target="classFrame">CardNumberFormatter</a></li>
2324
<li><a href="com/verygoodsecurity/vgscollect/view/card/formatter/CardNumberFormatter.Companion.html" title="class in com.verygoodsecurity.vgscollect.view.card.formatter" target="classFrame">CardNumberFormatter.Companion</a></li>
2425
<li><a href="com/verygoodsecurity/vgscollect/view/card/CardType.html" title="enum in com.verygoodsecurity.vgscollect.view.card" target="classFrame">CardType</a></li>
2526
<li><a href="com/verygoodsecurity/vgscollect/widget/CardVerificationCodeEditText.html" title="class in com.verygoodsecurity.vgscollect.widget" target="classFrame">CardVerificationCodeEditText</a></li>
26-
<li><a href="com/verygoodsecurity/vgscollect/view/card/ChecksumAlgorithm.html" title="enum in com.verygoodsecurity.vgscollect.view.card" target="classFrame">ChecksumAlgorithm</a></li>
27+
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/payment/ChecksumAlgorithm.html" title="enum in com.verygoodsecurity.vgscollect.view.card.validation.payment" target="classFrame">ChecksumAlgorithm</a></li>
28+
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/CheckSumValidator.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation" target="classFrame">CheckSumValidator</a></li>
2729
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/CompositeValidator.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation" target="classFrame">CompositeValidator</a></li>
28-
<li><a href="com/verygoodsecurity/vgscollect/view/card/CustomCardBrand.html" title="class in com.verygoodsecurity.vgscollect.view.card" target="classFrame">CustomCardBrand</a></li>
2930
<li><a href="com/verygoodsecurity/vgscollect/view/date/DatePickerMode.html" title="enum in com.verygoodsecurity.vgscollect.view.date" target="classFrame">DatePickerMode</a></li>
3031
<li><a href="com/verygoodsecurity/vgscollect/core/Environment.html" title="enum in com.verygoodsecurity.vgscollect.core" target="classFrame">Environment</a></li>
3132
<li><a href="com/verygoodsecurity/vgscollect/widget/ExpirationDateEditText.html" title="class in com.verygoodsecurity.vgscollect.widget" target="classFrame">ExpirationDateEditText</a></li>
@@ -49,9 +50,11 @@ <h1 class="bar">All&nbsp;Classes</h1>
4950
<li><a href="com/verygoodsecurity/vgscollect/util/MutableMapExtensionKt.html" title="class in com.verygoodsecurity.vgscollect.util" target="classFrame">MutableMapExtensionKt</a></li>
5051
<li><a href="com/verygoodsecurity/vgscollect/util/NumberExtensionKt.html" title="class in com.verygoodsecurity.vgscollect.util" target="classFrame">NumberExtensionKt</a></li>
5152
<li><a href="com/verygoodsecurity/vgscollect/core/storage/OnFieldStateChangeListener.html" title="interface in com.verygoodsecurity.vgscollect.core.storage" target="classFrame"><span class="interfaceName">OnFieldStateChangeListener</span></a></li>
53+
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/rules/PaymentCardNumberRule.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation.rules" target="classFrame">PaymentCardNumberRule</a></li>
54+
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/rules/PaymentCardNumberRule.ValidationBuilder.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation.rules" target="classFrame">PaymentCardNumberRule.ValidationBuilder</a></li>
5255
<li><a href="com/verygoodsecurity/vgscollect/widget/PersonNameEditText.html" title="class in com.verygoodsecurity.vgscollect.widget" target="classFrame">PersonNameEditText</a></li>
53-
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/payment/PersonNameRule.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation.payment" target="classFrame">PersonNameRule</a></li>
54-
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/payment/PersonNameRule.ValidationBuilder.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation.payment" target="classFrame">PersonNameRule.ValidationBuilder</a></li>
56+
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/rules/PersonNameRule.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation.rules" target="classFrame">PersonNameRule</a></li>
57+
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/rules/PersonNameRule.ValidationBuilder.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation.rules" target="classFrame">PersonNameRule.ValidationBuilder</a></li>
5558
<li><a href="com/verygoodsecurity/vgscollect/view/SavedState.Companion.html" title="class in com.verygoodsecurity.vgscollect.view" target="classFrame">SavedState.Companion</a></li>
5659
<li><a href="com/verygoodsecurity/vgscollect/view/material/TextInputFieldLayout.html" title="class in com.verygoodsecurity.vgscollect.view.material" target="classFrame">TextInputFieldLayout</a></li>
5760
<li><a href="com/verygoodsecurity/vgscollect/util/UriExtensionKt.html" title="class in com.verygoodsecurity.vgscollect.util" target="classFrame">UriExtensionKt</a></li>

docs/allclasses-noframe.html

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
<!-- NewPage -->
33
<html lang="en">
44
<head>
5-
<!-- Generated by javadoc (1.8.0_242-release) on Tue Jun 30 18:15:00 EEST 2020 -->
5+
<!-- Generated by javadoc (1.8.0_242-release) on Fri Jul 03 17:39:15 EEST 2020 -->
66
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
77
<title>All Classes</title>
8-
<meta name="date" content="2020-06-30">
8+
<meta name="date" content="2020-07-03">
99
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
1010
<script type="text/javascript" src="script.js"></script>
1111
</head>
@@ -17,15 +17,16 @@ <h1 class="bar">All&nbsp;Classes</h1>
1717
<li><a href="com/verygoodsecurity/vgscollect/app/BaseTransmitActivity.Companion.html" title="class in com.verygoodsecurity.vgscollect.app">BaseTransmitActivity.Companion</a></li>
1818
<li><a href="com/verygoodsecurity/vgscollect/util/BooleanExtensionKt.html" title="class in com.verygoodsecurity.vgscollect.util">BooleanExtensionKt</a></li>
1919
<li><a href="com/verygoodsecurity/vgscollect/view/card/BrandParams.html" title="class in com.verygoodsecurity.vgscollect.view.card">BrandParams</a></li>
20+
<li><a href="com/verygoodsecurity/vgscollect/view/card/CardBrand.html" title="class in com.verygoodsecurity.vgscollect.view.card">CardBrand</a></li>
2021
<li><a href="com/verygoodsecurity/vgscollect/view/card/icon/CardIconAdapter.html" title="class in com.verygoodsecurity.vgscollect.view.card.icon">CardIconAdapter</a></li>
2122
<li><a href="com/verygoodsecurity/vgscollect/view/card/formatter/CardMaskAdapter.html" title="class in com.verygoodsecurity.vgscollect.view.card.formatter">CardMaskAdapter</a></li>
2223
<li><a href="com/verygoodsecurity/vgscollect/view/card/formatter/CardNumberFormatter.html" title="class in com.verygoodsecurity.vgscollect.view.card.formatter">CardNumberFormatter</a></li>
2324
<li><a href="com/verygoodsecurity/vgscollect/view/card/formatter/CardNumberFormatter.Companion.html" title="class in com.verygoodsecurity.vgscollect.view.card.formatter">CardNumberFormatter.Companion</a></li>
2425
<li><a href="com/verygoodsecurity/vgscollect/view/card/CardType.html" title="enum in com.verygoodsecurity.vgscollect.view.card">CardType</a></li>
2526
<li><a href="com/verygoodsecurity/vgscollect/widget/CardVerificationCodeEditText.html" title="class in com.verygoodsecurity.vgscollect.widget">CardVerificationCodeEditText</a></li>
26-
<li><a href="com/verygoodsecurity/vgscollect/view/card/ChecksumAlgorithm.html" title="enum in com.verygoodsecurity.vgscollect.view.card">ChecksumAlgorithm</a></li>
27+
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/payment/ChecksumAlgorithm.html" title="enum in com.verygoodsecurity.vgscollect.view.card.validation.payment">ChecksumAlgorithm</a></li>
28+
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/CheckSumValidator.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation">CheckSumValidator</a></li>
2729
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/CompositeValidator.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation">CompositeValidator</a></li>
28-
<li><a href="com/verygoodsecurity/vgscollect/view/card/CustomCardBrand.html" title="class in com.verygoodsecurity.vgscollect.view.card">CustomCardBrand</a></li>
2930
<li><a href="com/verygoodsecurity/vgscollect/view/date/DatePickerMode.html" title="enum in com.verygoodsecurity.vgscollect.view.date">DatePickerMode</a></li>
3031
<li><a href="com/verygoodsecurity/vgscollect/core/Environment.html" title="enum in com.verygoodsecurity.vgscollect.core">Environment</a></li>
3132
<li><a href="com/verygoodsecurity/vgscollect/widget/ExpirationDateEditText.html" title="class in com.verygoodsecurity.vgscollect.widget">ExpirationDateEditText</a></li>
@@ -49,9 +50,11 @@ <h1 class="bar">All&nbsp;Classes</h1>
4950
<li><a href="com/verygoodsecurity/vgscollect/util/MutableMapExtensionKt.html" title="class in com.verygoodsecurity.vgscollect.util">MutableMapExtensionKt</a></li>
5051
<li><a href="com/verygoodsecurity/vgscollect/util/NumberExtensionKt.html" title="class in com.verygoodsecurity.vgscollect.util">NumberExtensionKt</a></li>
5152
<li><a href="com/verygoodsecurity/vgscollect/core/storage/OnFieldStateChangeListener.html" title="interface in com.verygoodsecurity.vgscollect.core.storage"><span class="interfaceName">OnFieldStateChangeListener</span></a></li>
53+
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/rules/PaymentCardNumberRule.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation.rules">PaymentCardNumberRule</a></li>
54+
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/rules/PaymentCardNumberRule.ValidationBuilder.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation.rules">PaymentCardNumberRule.ValidationBuilder</a></li>
5255
<li><a href="com/verygoodsecurity/vgscollect/widget/PersonNameEditText.html" title="class in com.verygoodsecurity.vgscollect.widget">PersonNameEditText</a></li>
53-
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/payment/PersonNameRule.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation.payment">PersonNameRule</a></li>
54-
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/payment/PersonNameRule.ValidationBuilder.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation.payment">PersonNameRule.ValidationBuilder</a></li>
56+
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/rules/PersonNameRule.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation.rules">PersonNameRule</a></li>
57+
<li><a href="com/verygoodsecurity/vgscollect/view/card/validation/rules/PersonNameRule.ValidationBuilder.html" title="class in com.verygoodsecurity.vgscollect.view.card.validation.rules">PersonNameRule.ValidationBuilder</a></li>
5558
<li><a href="com/verygoodsecurity/vgscollect/view/SavedState.Companion.html" title="class in com.verygoodsecurity.vgscollect.view">SavedState.Companion</a></li>
5659
<li><a href="com/verygoodsecurity/vgscollect/view/material/TextInputFieldLayout.html" title="class in com.verygoodsecurity.vgscollect.view.material">TextInputFieldLayout</a></li>
5760
<li><a href="com/verygoodsecurity/vgscollect/util/UriExtensionKt.html" title="class in com.verygoodsecurity.vgscollect.util">UriExtensionKt</a></li>

docs/com/verygoodsecurity/vgscollect/app/BaseTransmitActivity.Companion.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
<!-- NewPage -->
33
<html lang="en">
44
<head>
5-
<!-- Generated by javadoc (1.8.0_242-release) on Tue Jun 30 18:15:00 EEST 2020 -->
5+
<!-- Generated by javadoc (1.8.0_242-release) on Fri Jul 03 17:39:13 EEST 2020 -->
66
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
77
<title>BaseTransmitActivity.Companion</title>
8-
<meta name="date" content="2020-06-30">
8+
<meta name="date" content="2020-07-03">
99
<meta name="keywords" content="com.verygoodsecurity.vgscollect.app.BaseTransmitActivity.Companion class">
1010
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
1111
<script type="text/javascript" src="../../../../script.js"></script>

docs/com/verygoodsecurity/vgscollect/app/BaseTransmitActivity.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
<!-- NewPage -->
33
<html lang="en">
44
<head>
5-
<!-- Generated by javadoc (1.8.0_242-release) on Tue Jun 30 18:15:00 EEST 2020 -->
5+
<!-- Generated by javadoc (1.8.0_242-release) on Fri Jul 03 17:39:13 EEST 2020 -->
66
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
77
<title>BaseTransmitActivity</title>
8-
<meta name="date" content="2020-06-30">
8+
<meta name="date" content="2020-07-03">
99
<meta name="keywords" content="com.verygoodsecurity.vgscollect.app.BaseTransmitActivity class">
1010
<meta name="keywords" content="RESULT_DATA">
1111
<meta name="keywords" content="Companion">

docs/com/verygoodsecurity/vgscollect/app/package-frame.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
<!-- NewPage -->
33
<html lang="en">
44
<head>
5-
<!-- Generated by javadoc (1.8.0_242-release) on Tue Jun 30 18:15:00 EEST 2020 -->
5+
<!-- Generated by javadoc (1.8.0_242-release) on Fri Jul 03 17:39:14 EEST 2020 -->
66
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
77
<title>com.verygoodsecurity.vgscollect.app</title>
8-
<meta name="date" content="2020-06-30">
8+
<meta name="date" content="2020-07-03">
99
<meta name="keywords" content="com.verygoodsecurity.vgscollect.app package">
1010
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
1111
<script type="text/javascript" src="../../../../script.js"></script>

0 commit comments

Comments
 (0)