package co.electriccoin.zcash.ui.screen.send.ext

import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import cash.z.ecc.sdk.model.WalletAddress
import co.electriccoin.zcash.ui.R

/**
 * How far into the address will be abbreviation look forwards and backwards.
 */
internal const val ABBREVIATION_INDEX = 5

@Composable
@ReadOnlyComposable
internal fun WalletAddress.abbreviated(): String {
    LocalConfiguration.current
    return abbreviated(LocalContext.current)
}

internal fun WalletAddress.abbreviated(context: Context): String {
    require(address.length >= ABBREVIATION_INDEX) { "Address must be at least 5 characters long" }

    val firstFive = address.substring(0, ABBREVIATION_INDEX)
    val lastFive = address.substring(address.length - ABBREVIATION_INDEX, address.length)

    return context.getString(R.string.send_abbreviated_address_format, firstFive, lastFive)
}
