Check signature of an APK
keytool -printcert -jarfile file.apk
The SHA256 is the interesting one and need for the assetlink.json
Reverify assetlink
package com.bnppf.easybanking | |
import arrow.fx.coroutines.Schedule | |
import io.kotest.core.spec.style.StringSpec | |
import kotlin.time.Duration.Companion.seconds | |
import kotlin.time.ExperimentalTime | |
import kotlin.time.TimeMark | |
import kotlin.time.TimeSource | |
@OptIn(ExperimentalTime::class) |
Check signature of an APK
keytool -printcert -jarfile file.apk
The SHA256 is the interesting one and need for the assetlink.json
Reverify assetlink
package com.bnpp.easybanking.zeplin.molecule | |
import androidx.annotation.StringRes | |
import androidx.compose.runtime.Composable | |
import androidx.compose.ui.Modifier | |
import androidx.compose.ui.text.TextStyle | |
import androidx.compose.ui.text.style.TextDecoration | |
import com.bnpp.easybanking.zeplin.molecule.CellData.Companion.DefaultMaxLines | |
import com.bnpp.easybanking.zeplin.molecule.CellData.Companion.DefaultTextDecoration | |
import com.bnpp.easybanking.zeplin.molecule.CellData.Companion.DefaultTextModifier |
interface FlowProvider { | |
fun returnsAColdFlow(): Flow<Int> = flow { | |
repeat(5) { | |
emit(it) | |
delay(100) | |
} | |
} | |
} | |
object DefaultFlowProvider : FlowProvider |
package com.example.sample | |
import arrow.core.Either | |
import arrow.core.NonEmptyList | |
import arrow.core.computations.either | |
import arrow.core.flatMap | |
import arrow.core.nonEmptyListOf | |
import arrow.core.right | |
import arrow.core.traverseEither | |
import arrow.core.zip |
//https://arrow-kt.io/docs/apidocs/arrow-core-data/arrow.core/-either/ | |
sealed class Either<out A, out B> { | |
internal abstract val isRight: Boolean | |
internal abstract val isLeft: Boolean | |
fun isLeft(): Boolean = isLeft |
class CreditCardTextWatcher(private val maxLength: Int) : TextWatcher { | |
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} | |
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} | |
override fun afterTextChanged(s: Editable) { | |
val textLength = s.length | |
// first remove any previous span | |
val spans = s.getSpans(0, s.length, SpaceSpan::class.java) | |
for (i in spans.indices) { |
This little script will output the amount of tokens subscribed to a topic.
You will need to replace the variables with your personal ones in order for it to work.
We used this function in a Lambda which sends the results to a monitoring dashboard.
Screenshots in the comments.
private fun createNotification(channelId: String, text: String, title: String, id: String, url: String, bigImage: Bitmap, pillImage: Bitmap): Notification { | |
return NotificationCompat.Builder(context, channelId) | |
.setContentTitle(title) | |
.setContentText(text) | |
.setSmallIcon(R.drawable.ic_notification) | |
.setContentIntent(createPendingIntent(id, url)) | |
.setAutoCancel(true) | |
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC) | |
.setSound(soundHelper.vrtNwsNotificationSound) | |
.setDefaults(NotificationCompat.DEFAULT_VIBRATE) |
PillView(context).run { | |
bind(pillViewModel) | |
measure( | |
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), | |
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED) | |
) | |
val bitmap = Bitmap.createBitmap(measuredWidth, measuredHeight, Bitmap.Config.ARGB_4444) | |
val canvas = Canvas(bitmap) | |
layout(0, 0, measuredWidth, measuredHeight) | |
draw(canvas) |