mirror of
https://github.com/pezkuwichain/pezkuwi-wallet-android.git
synced 2026-06-14 01:41:05 +00:00
Initial commit: Pezkuwi Wallet Android
Security hardened release: - Code obfuscation enabled (minifyEnabled=true, shrinkResources=true) - Sensitive files excluded (google-services.json, keystores) - Branch.io key moved to BuildConfig placeholder - Updated dependencies: OkHttp 4.12.0, Gson 2.10.1, BouncyCastle 1.77 - Comprehensive ProGuard rules for crypto wallet - Navigation 2.7.7, Lifecycle 2.7.0, ConstraintLayout 2.1.4
This commit is contained in:
@@ -0,0 +1 @@
|
||||
/build
|
||||
@@ -0,0 +1,22 @@
|
||||
apply plugin: 'kotlin-parcelize'
|
||||
|
||||
android {
|
||||
namespace 'io.novafoundation.nova.feature_ahm_api'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation coroutinesDep
|
||||
implementation project(":common")
|
||||
implementation project(':runtime')
|
||||
implementation project(":feature-deep-linking")
|
||||
|
||||
implementation cardViewDep
|
||||
implementation recyclerViewDep
|
||||
implementation materialDep
|
||||
implementation androidDep
|
||||
|
||||
implementation shimmerDep
|
||||
|
||||
implementation daggerDep
|
||||
ksp daggerCompiler
|
||||
}
|
||||
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
</manifest>
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package io.novafoundation.nova.feature_ahm_api.data.repository
|
||||
|
||||
interface ChainMigrationRepository {
|
||||
|
||||
suspend fun cacheBalancesForChainMigrationDetection()
|
||||
|
||||
suspend fun setInfoShownForChain(chainId: String)
|
||||
|
||||
fun isMigrationDetailsWasShown(chainId: String): Boolean
|
||||
|
||||
fun isChainMigrationDetailsNeeded(chainId: String): Boolean
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package io.novafoundation.nova.feature_ahm_api.data.repository
|
||||
|
||||
import io.novafoundation.nova.feature_ahm_api.domain.model.ChainMigrationConfig
|
||||
|
||||
interface MigrationInfoRepository {
|
||||
|
||||
suspend fun getConfigByOriginChain(chainId: String): ChainMigrationConfig?
|
||||
|
||||
suspend fun getAllConfigs(): List<ChainMigrationConfig>
|
||||
|
||||
suspend fun loadConfigs()
|
||||
|
||||
suspend fun getConfigByDestinationChain(chainId: String): ChainMigrationConfig?
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package io.novafoundation.nova.feature_ahm_api.di
|
||||
|
||||
import io.novafoundation.nova.feature_ahm_api.data.repository.ChainMigrationRepository
|
||||
import io.novafoundation.nova.feature_ahm_api.data.repository.MigrationInfoRepository
|
||||
import io.novafoundation.nova.feature_ahm_api.di.deeplinks.ChainMigrationDeepLinks
|
||||
import io.novafoundation.nova.feature_ahm_api.domain.ChainMigrationInfoUseCase
|
||||
import io.novafoundation.nova.feature_ahm_api.domain.ChainMigrationDetailsSelectToShowUseCase
|
||||
|
||||
interface ChainMigrationFeatureApi {
|
||||
|
||||
val chainMigrationInfoUseCase: ChainMigrationInfoUseCase
|
||||
|
||||
val chainMigrationRepository: ChainMigrationRepository
|
||||
|
||||
val migrationInfoRepository: MigrationInfoRepository
|
||||
|
||||
val chainMigrationDeepLinks: ChainMigrationDeepLinks
|
||||
|
||||
val chainMigrationDetailsSelectToShowUseCase: ChainMigrationDetailsSelectToShowUseCase
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package io.novafoundation.nova.feature_ahm_api.di.deeplinks
|
||||
|
||||
import io.novafoundation.nova.feature_deep_linking.presentation.handling.DeepLinkHandler
|
||||
|
||||
class ChainMigrationDeepLinks(val deepLinkHandlers: List<DeepLinkHandler>)
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package io.novafoundation.nova.feature_ahm_api.domain
|
||||
|
||||
interface ChainMigrationDetailsSelectToShowUseCase {
|
||||
suspend fun getChainIdsToShowMigrationDetails(): List<String>
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package io.novafoundation.nova.feature_ahm_api.domain
|
||||
|
||||
import io.novafoundation.nova.feature_ahm_api.domain.model.ChainMigrationConfigWithChains
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
interface ChainMigrationInfoUseCase {
|
||||
|
||||
fun observeMigrationConfigOrNull(chainId: String, assetId: Int): Flow<ChainMigrationConfigWithChains?>
|
||||
|
||||
fun markMigrationInfoAsHidden(key: String, chainId: String, assetId: Int)
|
||||
|
||||
fun observeInfoShouldBeHidden(key: String, chainId: String, assetId: Int): Flow<Boolean>
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package io.novafoundation.nova.feature_ahm_api.domain.model
|
||||
|
||||
import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain
|
||||
import java.math.BigInteger
|
||||
import java.util.Date
|
||||
|
||||
class ChainMigrationConfig(
|
||||
val originData: ChainData,
|
||||
val destinationData: ChainData,
|
||||
val blockNumberStartAt: BigInteger,
|
||||
val timeStartAt: Date,
|
||||
val newTokenNames: List<String>,
|
||||
val bannerPath: String,
|
||||
val migrationInProgress: Boolean,
|
||||
val wikiURL: String
|
||||
) {
|
||||
|
||||
class ChainData(
|
||||
val chainId: String,
|
||||
val assetId: Int,
|
||||
val minBalance: BigInteger,
|
||||
val averageFee: BigInteger
|
||||
)
|
||||
}
|
||||
|
||||
class ChainMigrationConfigWithChains(
|
||||
val config: ChainMigrationConfig,
|
||||
val originChain: Chain,
|
||||
val originAsset: Chain.Asset,
|
||||
val destinationChain: Chain,
|
||||
val destinationAsset: Chain.Asset
|
||||
)
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package io.novafoundation.nova.feature_ahm_api.presentation
|
||||
|
||||
import java.text.DateFormat
|
||||
|
||||
fun getChainMigrationDateFormat() = DateFormat.getDateInstance(DateFormat.LONG)
|
||||
Reference in New Issue
Block a user