Skip to content
This repository was archived by the owner on Jan 25, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 23 additions & 6 deletions app/src/main/kotlin/cloud/keyspace/android/AddCard.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.text.Editable
import android.text.SpannableStringBuilder
import android.text.TextUtils
import android.text.TextWatcher
import android.text.method.PasswordTransformationMethod
Expand Down Expand Up @@ -266,12 +267,24 @@ class AddCard : AppCompatActivity() {
if (s.isNotEmpty() && s.length % 5 == 0) {
val c = s[s.length - 1]
if (space == c) s.delete(s.length - 1, s.length)
}

if (s.isNotEmpty() && s.length % 5 == 0) {
val c = s[s.length - 1]
if (Character.isDigit(c) && TextUtils.split(s.toString(), space.toString()).size <= 3) s.insert(s.length - 1, space.toString())
}
if (s.toString().replace(" ", "").length in 0..16) {
cardNumberInput.removeTextChangedListener(this)
cardNumberInput.setText(s.toString().replace(" ", "").replace("....".toRegex(), "$0 ")?.trim())
cardNumberInput.addTextChangedListener(this)
cardNumberInput.setSelection(cardNumberInput.text.toString().length)
}
if (s.toString().replace(" ", "").length in 17..18) {
for (c in s) {
if (c == ' ') {
s.delete(s.indexOf(c), s.indexOf(c)+1)
}
}
}
if (s.toString().replace(" ", "").length > 19) {
s.delete(s.length - 1, s.length)
}
}
override fun beforeTextChanged(cardNumber: CharSequence, start: Int, count: Int, after: Int) { }
override fun onTextChanged(cardNumber: CharSequence, start: Int, before: Int, count: Int) {
Expand Down Expand Up @@ -372,7 +385,9 @@ class AddCard : AppCompatActivity() {
vault.card?.remove(io.getCard(itemId!!, vault))
}

if (cardNumberInput.text.toString().length < 16) cardNumberInput.error = "Enter a valid 16 digit card number"
if (cardNumberInput.text.toString().replace(" ", "").length < 16) cardNumberInput.error = "Enter a valid 16 digit card number"
else if (cardNumberInput.text.toString().replace(" ", "").length in 17..18
|| cardNumberInput.text.toString().replace(" ", "").length > 19) cardNumberInput.error = "Enter a valid 19 digit card number"
else if (securityCode.text.toString().length !in 3..4) securityCode.error = "Enter a valid security code"
else if (toDate.text.toString().isEmpty()) toDate.error = "Enter an expiry date"
else if (cardholderNameInput.text.toString().isEmpty()) cardholderNameInput.error = "Enter card holder's name"
Expand Down Expand Up @@ -438,7 +453,9 @@ class AddCard : AppCompatActivity() {

notesInput.setText(card.notes)

cardNumberInput.setText(card.cardNumber?.replace("....".toRegex(), "$0 "))
if (card.cardNumber?.length!! == 16) cardNumberInput.setText(card.cardNumber.replace("....".toRegex(), "$0 "))
else cardNumberInput.setText(card.cardNumber)

toDate.setText(card.expiry)
securityCode.setText(card.securityCode)
cardholderNameInput.setText(card.cardholderName)
Expand Down
7 changes: 6 additions & 1 deletion app/src/main/kotlin/cloud/keyspace/android/Dashboard.kt
Original file line number Diff line number Diff line change
Expand Up @@ -1966,7 +1966,9 @@ class Dashboard : AppCompatActivity(), NavigationView.OnNavigationItemSelectedLi
}
}

cardCard.cardNumber.text = card.cardNumber?.replace("....".toRegex(), "$0 ")
if (card.cardNumber?.length == 16) cardCard.cardNumber.text = card.cardNumber.replace("....".toRegex(), "$0 ")
else cardCard.cardNumber.text = card.cardNumber

cardCard.toDate.text = card.expiry
cardCard.cardHolder.text = card.cardholderName

Expand Down Expand Up @@ -2128,6 +2130,8 @@ class Dashboard : AppCompatActivity(), NavigationView.OnNavigationItemSelectedLi
)
}

if (!card.pin.isNullOrBlank()) cardCard.pin.text = card.pin else cardCard.pinLayout.visibility = View.GONE

fun hideCodes () {
cardCard.pin.text = "●●●●"
cardCard.securityCode.text = "●●●"
Expand All @@ -2138,6 +2142,7 @@ class Dashboard : AppCompatActivity(), NavigationView.OnNavigationItemSelectedLi

var codesHidden = true
hideCodes()

cardCard.hideCodes.setOnClickListener {
codesHidden = !codesHidden
if (codesHidden) {
Expand Down
27 changes: 17 additions & 10 deletions app/src/main/kotlin/cloud/keyspace/android/MiscUtilities.kt
Original file line number Diff line number Diff line change
Expand Up @@ -36,32 +36,39 @@ class MiscUtilities (applicationContext: Context) {
fun getPaymentGateway(cardNumber: String): String? {
try {
if (cardNumber.startsWith("4") ||
cardNumber.startsWith("4026") ||
cardNumber.startsWith("411750") ||
cardNumber.startsWith("4508") ||
cardNumber.startsWith("4913") ||
cardNumber.startsWith("4917") ||
cardNumber.startsWith("4844")) {
cardNumber.startsWith("40") ||
cardNumber.startsWith("411") ||
cardNumber.startsWith("45") ||
cardNumber.startsWith("49") ||
cardNumber.startsWith("49") ||
cardNumber.startsWith("48")
) {
return "visa"
} else if (
(cardNumber.take(4)).toInt() in 2221..2720 ||
(cardNumber.take(2)).toInt() in 51..55 ||
(cardNumber.take(4)).toInt() in 5100..5399) {
(cardNumber.take(4)).toInt() in 5100..5399 ||
cardNumber.startsWith("67")
) {
return "mastercard"
} else if (
(cardNumber.take(4)).toInt() in 622126..622925 ||
(cardNumber.take(3)).toInt() in 644..649 ||
cardNumber.startsWith("66")) {
cardNumber.startsWith("66") ||
cardNumber.startsWith("601")
) {
return "discover"
} else if (
cardNumber.startsWith("60") ||
cardNumber.startsWith("6521") ||
cardNumber.startsWith("6522") ||
cardNumber.startsWith("50")) {
cardNumber.startsWith("50")
) {
return "rupay"
} else if (
cardNumber.startsWith("34") ||
cardNumber.startsWith("37")) {
cardNumber.startsWith("37")
) {
return "americanExpress"
} else {
return null
Expand Down
15 changes: 8 additions & 7 deletions app/src/main/res/layout/card.xml
Original file line number Diff line number Diff line change
Expand Up @@ -405,15 +405,15 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/beam"
android:letterSpacing="0.2"
android:maxLength="19"
android:letterSpacing="0.175"
android:maxLength="23"
android:paddingHorizontal="20dp"
android:scaleY="1.25"
android:singleLine="true"
android:scaleY="1.3"
android:singleLine="false"
android:supportsRtl="false"
android:text="1234 5678 9012 3456"
android:text="1234 5678 9012 3456 123"
android:textIsSelectable="true"
android:textSize="21sp"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
Expand All @@ -429,6 +429,7 @@
android:letterSpacing="0.15"
android:maxLength="20"
android:paddingHorizontal="20dp"
android:scaleY="1.1"
android:singleLine="true"
android:supportsRtl="false"
android:text="Clayton Bigsby"
Expand Down Expand Up @@ -480,7 +481,7 @@
android:fontFamily="@font/beam"
android:letterSpacing="0.25"
android:maxLength="5"
android:scaleY="1.25"
android:scaleY="1.3"
android:supportsRtl="false"
android:text="01/25"
android:textIsSelectable="true"
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/layout/edit_card.xml
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@
android:digits="0123456789 "
android:inputType="phone"
android:letterSpacing="0.05"
android:maxLength="19" />
android:maxLength="22" />

</com.google.android.material.textfield.TextInputLayout>

Expand Down