Skip to content

Commit

Permalink
refactor PasswordIncrementalTransformation from demo to the ui-compos…
Browse files Browse the repository at this point in the history
…able module
  • Loading branch information
sunny-chung committed Jan 11, 2025
1 parent 3b454ef commit 763748f
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.unit.dp
import com.sunnychung.lib.multiplatform.bigtext.extension.length
import com.sunnychung.lib.multiplatform.bigtext.ux.BigTextField
import com.sunnychung.lib.multiplatform.bigtext.ux.extra.PasswordIncrementalTransformation
import com.sunnychung.lib.multiplatform.bigtext.ux.rememberConcurrentLargeAnnotatedBigTextFieldState
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sunnychung.lib.multiplatform.bigtext.demo
package com.sunnychung.lib.multiplatform.bigtext.ux.extra

import com.sunnychung.lib.multiplatform.bigtext.core.BigText
import com.sunnychung.lib.multiplatform.bigtext.core.BigTextChangeEvent
Expand All @@ -7,11 +7,13 @@ import com.sunnychung.lib.multiplatform.bigtext.core.transform.BigTextTransformO
import com.sunnychung.lib.multiplatform.bigtext.core.transform.BigTextTransformer
import com.sunnychung.lib.multiplatform.bigtext.core.transform.IncrementalTextTransformation

class PasswordIncrementalTransformation : IncrementalTextTransformation<Unit> {
class PasswordIncrementalTransformation(val mask: Char = '\u2022') : IncrementalTextTransformation<Unit> {
private val maskString = mask.toString()

override fun initialize(text: BigText, transformer: BigTextTransformer) {
if (text.isNotEmpty) {
val length = text.length
transformer.replace(0 ..< length, "".repeat(length), BigTextTransformOffsetMapping.Incremental)
transformer.replace(0 ..< length, maskString.repeat(length), BigTextTransformOffsetMapping.Incremental)
}
}

Expand All @@ -20,9 +22,22 @@ class PasswordIncrementalTransformation : IncrementalTextTransformation<Unit> {
val length = change.changeEndExclusiveIndex - change.changeStartIndex
transformer.replace(
range = change.changeStartIndex ..< change.changeEndExclusiveIndex,
text = "".repeat(length),
text = maskString.repeat(length),
offsetMapping = BigTextTransformOffsetMapping.Incremental
)
}
}

override fun equals(other: Any?): Boolean {
if (this === other) return true
if (other !is PasswordIncrementalTransformation) return false

if (mask != other.mask) return false

return true
}

override fun hashCode(): Int {
return mask.hashCode() * 31 + 11
}
}

0 comments on commit 763748f

Please sign in to comment.